티스토리 뷰

😉 System.out.println(); 단축키

sout 쓰고  CTRL   SPACE  😉

 


 

1-5. 자료형-참조 자료형(Reference Type)

기본자료형이 아닌 모든 것(자바의 인스턴스 객체를 가리킬 수 있는 자료형)
int[ ] 는 배열, int를 여러 개 담을 수 있는 것, 참조자료형(int 기본자료형과 다른 것임)

 

import java.util.Arrays;

public class Main {
    public static void main(String[] args){
        String sparta = "Hello sparta";
        System.out.println(sparta);

        int[] intArray = new int[]{1,2,3,4,5};
        System.out.println(Arrays.toString(intArray));
        //printIn(intArray) alt+enter+enter 치면 println(Arrays.toString(intArray)) 이렇게 바뀜
        //배열은 이렇게 감싸주어야 함
    }
}

//아래와 같이 출력됨
Hello sparta
[1, 2, 3, 4, 5]

 

+ 배열 더 알아보기

ㅇ 배열

: 동일한 자료형(위의 경우 int)의 데이터를 연속된 공간에 저장하기 위한 자료 구조

import java.util.Arrays;

public class Main {
    public static void main(String[] args){
        int[] intEmptyArray = new int[5];
        System.out.println(Arrays.toString(intEmptyArray));
        //아무 값도 할당하지 않는 방법

        int[] intArray = new int[]{1,2,3,4,5};
        System.out.println(Arrays.toString(intArray));
        //선언과 동시에 (1,2,3,4,5 로) 초기화. 5개 짜리 배열

        String[] stringEmptyArray = new String[5];
        System.out.println(Arrays.toString(stringEmptyArray));
        //String으로 아무 값을 할당해주지 않고 선언만 한 Array

        String[] season = {"봄", "여름", "가을", "겨울"};
        System.out.println(Arrays.toString(season));
        //선언과 동시에 초기화
    }
}

// 아래와 같이 출력 성공!
[0, 0, 0, 0, 0]
[1, 2, 3, 4, 5]
[null, null, null, null, null]
[봄, 여름, 가을, 겨울]

 

# ERROR

처음엔 봄~겨울 글자가 깨졌다...😲

은인 DOing 님의 티스토리 블로그를 그대로 따라 하니 해결됨😍

https://doing7.tistory.com/95

 

[IntelliJ] unmappable character for encoding MS949 에러

에러를 보아하니 딱봐도 인텔리제이 사용하는 동안 앞으로도 자주 날 것같은 에러다. 두고두고 봐야할 것같아서 포스팅하려고 한다. 😕 MS949 에러 1. unmappable character for encoding MS949 에러 발생 윈

doing7.tistory.com

 

Q: 왜 0과 null이 나올까?

A: array는 선언만 하고 초기화를 하지 않으면 해당하는 타입의 초기화되는 값을 Default로 가지게 된다.

- int같은 정수는 default가 0

- String 자체는 Primitive Type이 아님, Reference Type은 기본값이 없음. Java에서 아무것도 없다는 걸 표현하는 게 null

 

*배열은 사이즈 선언만 하는 게 아니라 값 내용을 채운 다음에 사용해야함

→ 값을 할당하는 것이 초기화? 변수를 선언한 후 처음 값을 할당하는 것을 "변수를 초기화한다"라고 함

+ length 길이

        System.out.println(season.length);
        //이 배열이 가진 길이를 리턴(모든 배열에 length 내장
        System.out.println(season[season.length -1]);
        //배열의 마지막 값 구하기

 

실무에서는 array 잘 쓰지 않고, 가변적인 배열을 나타내는 자료형인 ArrayList 자주 씀(Collection의 종류 중 하나)

 

1-6. 자료형 퀴즈

import java.util.Arrays;

public class Main {
    public static void main(String[] args){

        char c = 's';
        int num = 10;
        System.out.println(c + "\n" + num);
        //여기서 \n 개행 행을 바꿔주라는 문자
        //출력값 s (줄 바꾸고) 10

        //System.out.println(c + "" + num);
        //출력값 s10 printIn 에서 글자 이어붙이기 +

        //System.out.printIn(c + num);
        //이렇게 쓰면 s를 아스키코드 숫자로 인식해버림

        int[] intArray = new int[]{10,20,30};
        System.out.println(Arrays.toString(intArray));
        System.out.println(intArray[intArray.length - 1]);
    }
}

 

*1-7. 연산자 생략

1-8. 조건문

if문

public class Main {
    public static void main(String[] args) {
        int num1 = 51;

        if(num1 > 100){
            System.out.println("100보다 큰 수 입니다");
        }else if(num1 > 50){
            System.out.println("50보다 큰 수 입니다. 100보다 작거나 같습니다");
        }
    }
}

 

switch문

어떤 조건들을 미리 계층적으로 선언해놓는 방법

 

public class Main {
    public static void main(String[] args) {
        char score = 'A';

        switch (score){
            case 'A':
                System.out.println("A등급");
                break;
            case 'B'
                System.out.println("B등급");
                break;
            default:
                System.out.println("B등급 보다 아래입니다");
        }
    }
}

 

정확히 어떤 케이스에 일치하냐를 판단하는 것이 목적임

*default 위의 경우들이 전부 아닌 경우 실행해줘

 

삼항연산자

public class Main {
    public static void main(String[] args) {
        int a =5;
        String result = a<10 ? "10보다 작습니다" : "10보다 큽니다";
        System.out.println(result);
    }
}

 

조건 ? 참일경우 실행할 내용 : 거짓일경우 실행할 내용;

(논리 조건에 대해서 ?가 붙으면 true일 경우 수행할 것 : false일 경우 수행할 것)

그 결과가 변수(result)에 할당됨

 

1-10. 반복문

for문

public class Main {
    public static void main(String[] args) {
        int sum = 0;
        for (int i=0; i<10;i++){
            sum +=1;
        }
        System.out.println(sum);
    }
}

for-each문

배열이나 Collection 어떤 것의 나열들이 있는 변수가 있을 때 반복문을 쉽게 짤 수 있는 형태

 

public class Main {
    public static void main(String[] args) {
        String[] days = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"};
        for (String day : days){
            System.out.println(day);
        }
    }
}

 

days는 String의 배열.

이 배열에 있는 String 값을 하나씩 꺼내서 string 타입의 day 변수에 할당해줄게, 그리고 한 번씩 실행시켜줄게 라는 뜻

 

while문

public class Main {
    public static void main(String[] args) {
        // write your code here
        int i=0;
        int sum=0;
        while(i<10){
            sum += (i+1);
            i++;
        }
        System.out.println(sum);
    }
}

 

  Q: 중간에 loop 빠져나오기? break

while(i<10){
    sum += (i+1);
    i++;
    if(i ==5){
        break;
    };
}

A: break 나를 감싸고 있는 반복 조건을 하나, 조건의 중괄호 블록을 벗어날 거라는 뜻

 

Q: 1부터 10까지 다 더할 건데 5만 빼고 더하고 싶을 때?

while(i<10){
    if(i ==4){
        i++;
        continue;
    };
    sum += (i+1);
    i++;
}

A: 

i가 4일 때, {} 안의 것을 수행하고 그다음을 수행해줘

continue 나를 감싸고 있던 반복문 블록의 밑 부분을 한 번 스킵하고 그다음 확인해라는 뜻

i가 4일 때 아래의 두 줄을 수행하지 않음

    sum += (i+1);
    i++;

즉, sum에 5를 넣지 않는다는 뜻!

*만약 if절 안에서 아래의 코드를 쓰지 않는다면,

        i++;

i가 4일 때 무한 루프를 돌게 됨

 

do-while문

조건을 확인하지 않고 수행부터 먼저 하는 것(while문은 조건을 먼저 확인함)

 

do{
  sum += (i+1);
  i++;
}while(i<10);

 

do {} 이걸 먼저 하고 while() 조건에 맞으면 다시 돌아와서 실행해줘

 

1-11. 반복문 퀴즈

ㄱ. 1부터 100까지 더하기

public class Main {
    public static void main(String[] args) {
        int sum=0;
        for(int i=0;i<100;i++){
            sum += i+1;
        }
        System.out.println(sum);
    }
}

for문 안에 int i=0이라고 써야 하고 sum += i+1

 

ㄴ. 5초부터 카운트다운 

public class Main {
    public static void main(String[] args) {
        for(int i = 5;i>=0;i--){
            System.out.println("Countdown: " + i);
        }
    }
}

 

ㄷ. 1부터 30까지 홀수의 합과 짝수의 합 각각 출력😱

public class Main {
    public static void main(String[] args) {
        int sumEven=0;
        int sumOdd=0;
        for(int i=0;i<30;i++){
            int value = i+1;
            if(value % 2==0){
                //even
                sumEven += value;
            }else{
                //odd
                sumOdd += value;
            }
        }

        System.out.println(sumEven);
        System.out.println(sumOdd);
    }
}