Java - char, String

mil nil·2022년 12월 12일
0

Char

1) 단 하나의 문자만 저장

  • char는 기본형 타입에서 문자 타입으로 분리되었지만, 사실상 2 바이트의 정수이다.
  • 해당 문자는 아스키코드의 규칙에 맞게 숫자로 치환된다.
  • int로 치환할 경우 아스키코드 값을 받는다.

2) 2byte의 기본 문자 타입

  • char는 2byte로 int로 변환 시 int는 4byte이므로 수동 변환해야 한다.
    자료형-크기

3) char 타입의 리터럴은 작은 따옴표(' ')로 감싸서 표현

  • ""로 감쌀 경우 String으로 인식한다.

4) 컴퓨터 내부에 저장될 땐 정수로 치환 (아스키 코드)

String

1) 자바에서 제공하는 문자열 클래스로 char(문자)들의 배열을 의미

  • 변수에 값을 저장하는 방식이 아닌 하나의 객체를 생성하고, 해당 객체에 문자들을 연결시키는 방식
String str1 = "JAMES";
String str2 = "JAMES";

System.out.println(str1 == str2); // true

String에서 문자열 리터럴을 선언할 때 리터럴이 같으면 변수는 같은 참조값(주소 값)으로 할당을 받게 된다. 따라서 '==' 연산자를 사용했을 때 true를 반환한다.

String str1 = "JAMES";
String newStr = new String("JAMES");

System.out.println(str1 == newStr); //false

반면 객체를 생성하는 방식은 아래 그림과 같이 새로운 참조값(주소값)으로 할당을 받는다. 따라서 '==' 연산자에서 false를 반환한다.

2) String 클래스 타입은 큰 따옴표(" ")로 감싸서 표현

  • ""와 함께 더해질 경우(+) String으로 변환
char a = '안';
char b = '녕';

String test = "" + a + b;

System.out.println(test); // 안녕

3) String으로 선언한 객체는 toString을 Overriding하여 적용됨

  • toString() 메소드를 선언해주지 않더라도 String으로 선언한 객체들은 toString()을 Overriding한 상태로 적용됨

참조: [JAVA 파헤치기] 문자 타입 'char' 와 문자열 'String' 의 진실
참조: 자바 to String 이란??

profile
자바 배우는 사람

0개의 댓글