📝 이것이 자바다

Chapter 02. 변수와 타입

j_estory 2022. 10. 18. 18:04

🏷 2.1 변수 선언

  • 변수
    • 하나의 값을 저장할 수 있는 메모리 번지에 붙여진 이름 
    • 변수를 통해 프로그램은 메모리 번지에 값을 저장하고 읽을 수 있다. 
    • 타입 별로 그에 해당하는 타입을 저장 할 수 있다. 
  • 변수의 메모리 할당
    • 변수 선언 시, 메모리에 할당이 되는 것이 아니고, 변수에 최초로 값이 할당 될 때 메모리에 값이 저장된다. 
    • 변수에 최초로 값을 대입하는 행위를 변수 초기화 라고 하며, 초기화 되지 않은 변수는 아직 메모리에 할당되지 않았기 때문에 변수를 통해 메모리 값을 읽을 수 없다. 

🏷 2.1 정수 타입

  • 변수는 선언 시 타입에 따라 저장할 수 있는 값의 종료와 허용 범위가 달라진다. 
  • 정수 , 실수 , 논리 값을 저장할 수 있는 기본(primitive) 타입 8개를 제공한다. 
    • 정수 : byte, char, short, int, long
    • 실수 : float, double
    • 논리 : boolean

🏷 2.6 문자열 타입

  • 작은 따옴표로 감싼 한개의 문자는 char 타입이지만 큰 따옴표로 감싼 여러개의 문자열은 유니코드로 변환되지 않는다. 
  • String 타입은 기본 타입에 속하지 않는 참조 타입이다. 
  •  \ [이스케이프 문자]
    • 이스케이프 문자를 사용하면 특정 문자를 포함할 수 있고, 출력에 영향을 미치기도 한다.
  • 자바 13부터는 """ [텍스트 블록] 제공
    • 이스케이프 문자 없이 작성한 그대로 문자열로 저장
    • \n : 줄바꿈
    • \ : 줄바꿈 없이 다음 줄에 이어서 작성하고 싶을 때

🏷 2.7 자동 타입 변환

  • 자동으로 타입 변환이 일어나는 것을 의미
  • 값의 허용 범위가 작은 타입이 허용 범위가 큰 타입으로 대입될 때 발생 
    • 큰 허용 범위 타입 = 작은 허용 범위 타입
    • byte < short, char < int < long < float < double
      • int 타입은 byte 타입 보다 허용 범위가 더 크기 때문에 자동 타입 변환이 된다.
    • 정수 타입이 실수 타입으로 대입될 경우에도 무조건 자동 타입 변환이 된다. 
  • 자동 타입 변환의 예외 - char 과 byte
    • char > byte 이지만, byte는 char 타입으로 자동 변환 될 수 없다.
      • char 타입의 허용범위는 음수를 포함하지 않지만, byte 타입은 음수를 포함 하기 때문이다.

🏷 2.8 강제 타입 변환

  • 큰 허용 변환 타입은 작은 허용 범위 타입으로 자동 타입 변환될 수 없지만, 큰 허용 범위 타입을 쪼개어 작은 허용 범위 타입으로 저장하는 것을 말한다. 
  • 캐스팅 연산자로 () 를 사용하는데, () 안에 들어가는 타입은 쪼개는 단위를 의미 한다.
    • 작은 허용 범위 타입 = (작은 허용 범위 타입) 큰 허용 범위 타입
  • int -> byte
    • 예를 들어 10진수 10은 2진수(1010) 으로 표현 가능하며, 1byte만 있으면 저장 할 수 있어 byte로 변환하더라도 값이 잘 보존된다. 
    • 하지만 2byte 이상이 필요한 int 값은 원래의 값이 보존되지 않는다.
  • 강제 타입 변환의 목적은 원래 값이 유지되면서 타입만 변경하는 것을 의미

 

🏷 2.9 연산식에서 자동 타입 변환

  • 자바는 컴파일 단계에서 연산을 수행
byte x = 10;
byte y = 20;
byte result = x + y; // 에러
int result = x + y;
  • byte 타입의 변수가 피연산자로 사용되면 변수 값은 int 타입으로 변환되어 연산되고 결과도 int 타입으로 생성된다.
  • 피연산자 중 하나가 double 타입이면 다른 피연산자도 double 타입으로 변환되어 연산되고 연산 결과 또한 double 타입이 된다.
  • int 타입과 double 타입을 연산하는 경우에도 int 타입의 피연산자가 double 타입으로 자동 변환되고 연산을 수행한다.

🏷 2.10 문자열을 기본 타입으로 변환

  • 문자열을 기본 타입으로 변환
    • String -> int : Integer.parseInt ()
    • String -> long : Long.parseLong ()
    • 기본 타입 -> String : String.valueOf("기본 타입 값")
더보기

1-4 

2-3467

4 - 타입: int , double / 변수이름: age, price / 리터럴 : 10, 3.14

5-3

6-4

7-3

9-1

10-2

11-2,13,16