문자(char) vs 문자열(string)

박영준·2023년 5월 8일
0

Java

목록 보기
70/112

차이점 1

  • 문자

    • 문자 뒤에 \0(널문자)가 없다.
    • 1 byte 만 사용하므로, 끝을 알아서 데이터만 저장하면 됨
  • 문자열

    • 문장 끝에 \0(널문자)가 함께 저장 됨
    • 몇 개의 byte 를 사용할지 모르기 때문에, 끝을 표시해야 함

차이점 2 : 문자와 문자열 차이

class Variable4_1 {
    public static void main(String[] args) {
    
        char ch1 = 'A';		// 문자
        // char ch2 = 'AB';		Error 발생
        // char ch3 = '';		Error 발생, 빈 문자 불가능

        String s1 = "ABC";		// 문자열
        String s2 = "";		// 빈 문자열 가능
        String s3 = "A";		// 문자 한 개도 문자열!

        // 아래 두 표현식 모두 사용 가능하지만 ss2 방식은 거의 사용하지 않음!
        String ss1 = "AB";
        String ss2 = new String("AB");

        System.out.println("ss1 = " + ss1);
        System.out.println("ss2 = " + ss2);
    }
}

차이점 3 : 문자열 결합

class Variable4_2 {
    public static void main(String[] args) {
        String s1 = "A" + "B";		// "AB"
        System.out.println("s1 = " + s1);

        // 문자열은 문자열하고만 결합할 수 있기 때문에, 숫자를 문자열로 바꾼 다음에 결합
        String s2 = "" + 7;		// "" + 7 => "" + "7" = "7"
        System.out.println("s2 = " + s2);

        // 문자열 결합 순서에 의한 차이 확인!
        // 1번
        String s3 = "" + 7 + 7;		// "" + 7 + 7 => "7" + 7 => "7" + "7" = "77"
        System.out.println("s3 = " + s3);

		// 2번
        String s4 = 7 + 7 + "";		// 7 + 7 + "" => 14 + "" = "14"
        System.out.println("s4 = " + s4);
    }
}

차이점 4 : 두 변수의 값 교환

잘못된 사용

class Variable4_3 {
    public static void main(String[] args) {
    
        int x = 10, y = 20;
        
        // x 와 y 값을 교환하기.
        // 변수는 하나의 값 밖에 저장할 수 없기 때문에, 기존의 x의 값 10은 사라지고 20이 된다.
        x = y;		// x = 20;
        
        // y는 20 이된 x의 값을 받는다
        y= x;		// y = 20;
        
        System.out.println("x = " + x);		// 20
        System.out.println("y = " + y);		// 20

        System.out.println();		// 교환이 제대로 되지 않았다
    }
}

올바른 사용

class Variable4_3 {
    public static void main(String[] args) {
            
        int a = 10, b = 20;
        
        // 교환에 중간다리 역할을 해 줄 변수 하나를 선언
        int tmp;
        
        // a 와 b 값을 교환하기
        tmp = a;		// a = 10, tmp = 10
        
        a = b;		// b = 20, a = 20
        
        b = tmp;		// tmp = 10, b = 10

        // 결과 : a = 20, b = 10
        System.out.println("a = " + a);		// 20
        System.out.println("b = " + b);		// 10
        System.out.println("tmp = " + tmp);		// 10
    }
}
profile
개발자로 거듭나기!

0개의 댓글