이것이 자바다 책을 참고하였습니다.
Chapter 02. 변수와 타입
2.1 변수 선언
-컴퓨터 메모리(RAM)는 수많은 번지들로 구성된 데이터 저장 공간이다.
변수 = 하나의 값을 저장할 수 있는 메모리 번지에 붙여진 이름
-자바의 변수는 다양한 값을 저장할 수 없다. ( ex. 정수형 변수에는 정수값만 저장, 실수형 변수에는 실수값만 저장)
-변수를 사용하려면 변수 선언이 필요한데, 변수 선언은 데이터의 타입과 변수 이름을 결정하는 것이다.
int age; //정수(int) 값을 저장할 수 있는 age 변수 선언
double value; //실수(double) 값을 저장할 수 있는 value 변수 선언
여기서 int와 double은 타입이고, age와 value는 이름이다.
-변수 이름은 첫번째 글자가 문자여야 하고, 중간부터는 문자,숫자,$,_를 포함할 수 있다.
💡캐멀(camel)스타일
코드를 작성할때 여러 단어를 혼합하여 명명하는 경우, 낙타의 등처럼 대소문자가 섞여있도록 작성하는 스타일을 말한다. 자바 소스파일과 변수명을 작성할때 관례적으로 사용한다.
1. 자바 소스 파일명(클래스명)은 대문자로 시작하는 것이 관례
Week.java
MemberGrade.java
ProductKind.java
2. 변수명은 소문자로 시작하는 것이 관례
score
mathScore
sportsCar
-변수가 선언되었다면 값을 저장할 수 있는데, 이때 대입 연산자인 =을 사용한다. 자바에서는 우측 값을 좌측 변수에 대입하는 연산자로 사용된다.
int score; //변수 선언
score = 90; // 값 대입
-변수에 최초로 값을 대입하는 행위를 변수 초기화라고 하고, 이때의 값을 초기값이라고 한다.
-초기화되지 않은 변수는 아직 메모리에 할당되지 않았기 때문에 변수를 통해 메모리 값을 읽을 수 없다.
-변수는 또 다른 변수에 대입되메모리 간에 값을 복사할 수 있다. 다음 코드는 변수 x값을 변수 y값으로 복사한다.
int x = 10; //변수 x에 10을 대입
int y = x; //변수 y에 변수 x 값을 대입
2.2 정수 타입
-변수는 선언될 때의 타입에 따라 저장할 수 있는 값의 종류와 허용 범위가 달라진다. 자바는 기본타입 8개를 다음과 같이 제공한다.
값의 분류 | 기본 타입 |
정수 | byte, char, short, int, long |
실수 | float, double |
논리(true/false) | boolean |
<정수타입>
타입 | 메모리크기 | 저장되는 값의 허용범위 | |
byte | 1byte | 8bit | -128 ~ 127 |
short | 2byte | 16bit | -32,768 ~ 32,767 |
char | 2byte | 16bit | 0 ~ 65535 (유니코드) |
int | 4byte | 32bit | -2,147483,648 ~ 2,147,483,647 |
long | 8byte | 64bit | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
-코드에서 프로그래머가 직접 입력한 값을 리터럴(literal)이라고 부르는데, 변수에 대입할 정수 리터럴은 진수에 따라 작성하는 방법이 다르다.
- 2진수 : 0b 또는 0B로 시작하고 0과 1로 작성
- 8진수 : 0으로 시작하고 0~7 숫자로 작성
- 10진수 : 소수점이 없는 0~9 숫자로 작성
- 16진수 : 0x 또는 0X로 시작하고 0~9 숫자나 A,B,C,D,E,F 또는 a,b,c,d,e,f 로 작성
-int타입의 허용범위를 초과하는 리터럴은 뒤에 소문자 'l'이나 대문자 'L'을 붙여 long 타입 값임을 컴파일러에게 알려줘야 한다. ex) long var = 1000000000000L;
2.3 문자 타입
-하나의 문자를 작은따옴표(')로 감싼 것을 문자 리터럴이라고 한다.
-문자 리터럴은 유니코드로 변환되어 저장되는데, 국제 표준 규약이다.
-자바는 이러한 유니코드를 저장할 수 있도록 char 타입을 제공한다.
char var1 = 'A'; //'A' 문자와 매핑되는 숫자: 65로 대입
char var3 = '가'; //'가' 문자와 매핑되는 숫자: 44032로 대입
-유니코드가 정수이므로 char 타입도 정수 타입에 속한다. 그렇기 때문에 char 변수에 작은 따옴표로 감싼 문자가 아니라 유니코드 숫자를 직접 대입할 수도 있다. ex) char c = 65 (10진수 65와 매핑되는 문자: 'A')
2.4 실수 타입
타입 | 메모리크기 | 유효 숫자 이하 자리 | |
float | 4byte | 32bit | 7자리 |
double | 8byte | 64bit | 15자리 |
-double 타입이 float 타입보다 큰 실수를 저장할 수 있고 정밀도 또한 높다.
2.5 논리 타입
-참과 거짓을 의미하는 논리 리터럴은 true와 false이다. 논리 리터럴은 boolean 타입 변수에 다음과 같이 대입할 수 있다.
boolean stop = true;
boolean stop = false;
-boolean 타입 변수는 주로 두 가지 상태값을 저장할때 사용되며, 상태값에 따라 조건문과 제어문의 실행 흐름을 변경하는 데 사용된다.
2.6 문자열 타입
-작은따옴표(')로 감싼 한 개의 문자는 char 타입이지만, 큰따옴표(")로 감싼 여러 개의 문자들은 유나코드로 변환되지 않는다.
-큰따옴표(")로 감싼 문자들을 문자열이라고 부르는데, 문자열을 변수에 저장하고 싶다면 다음과 같이 String 타입을 사용해야 한다.
String var1 = "A";
String var2 = "홍길동";
-문자열 내부에 역슬래쉬(\)가 붙은 문자를 사용할 수가 있는데, 이것을 이스케이프(escape)문자라고 한다. 이스케이프 묹를 사용하면 특정 문자를 포함할 수 있고, 출력에 영향을 미치기도 한다.
이스케이프 문자 | |
\" | " 문자 포함 |
\' | ' 문자 포함 |
\\ | \ 문자 포함 |
\u16진수 | 16진수 유니코드에 해당하는 문자 포함 |
\t | 출력 시 탭만큼 띄움 |
\n | 출력 시 줄바꿈(라인피드) |
\r | 출력 시 캐리지 리턴 |
-큰따옴표 3개로 감싸면 이스케이프하거나 라인피드를 할 필요가 없이 작성된 그대로 문자열로 저장된다.
-텍스트 블록에서 줄바꿈은 \n에 해당한다. 만약 줄바꿈을 하지 않고 다음 줄에 이어서 작성하고싶으면 맨 끝에 \를 붙여주면 된다.
2.7 자동 타입 변환
-자동타입 변환은 값의 허용 범위가 작은 타입이 허용 범위가 큰 타입으로 대입될 때 발생한다.
-정수 타입이 실수 타입으로 대입될 경우에는 무조건 자동 타입 변환이 된다. 실수 타입은 정수 타입보다 허용 범위가 더 크기 때문이다.
-char 타입의 경우 int 타입으로 자동 변환되면 유니코드 값이 int 타입에 대입된다.
-자동 타입변환에서 예외가 있다. char 타입보다 허용범위가 작은 byte타입은 char타입으로 자동 변환될 수 없다. 왜냐하면 char타입의 허용 범위는 음수를 포함하지않는데, bye타입은 음수를 포함하기 때문이다.
'java' 카테고리의 다른 글
[java] 이것이자바다 Chapter02 변수와타입 확인문제(1~11번) 정답 (0) | 2023.09.04 |
---|---|
[Java] DAO, DTO, VO 개념 정리 (0) | 2023.08.24 |
[spring] intelliJ로 스프링 프로젝트 환경설정하기 (4) | 2023.07.14 |
Java-반복문(for,break,continue) (0) | 2023.03.13 |