github.com/whiteship/live-study/issues/2
목표자바의 프리미티브 타입, 변수 그리고 배열을 사용하는 방법을 익힙니다. 학습할 것
|
1. 프리미티브 타입 종류와 값의 범위 그리고 기본 값
자바의 기본 자료형은 총 8개가 있다.
8대 자료형이라고 부른다.
(1 byte == 8bit == 2의 8제곱)
ex) int형 : 4byte == 4*8bit == 2의 32승 ( 음수까지 표현하기 위하여 -2의 31승 ~ 2의 31승 +1 까지가 표현 범위가 된다)
+ 프로그래밍에서 실수를 표현할 때는 부동소수점 방식을 이용한다. ( 과거 모기업 신입 필기 기출문제였다.. 다시 공부해봐야지)
2. 프리미티브 타입과 레퍼런스 타입
primitive type ( 원시 타입 ) : 직접 저장하는 타입. 스택영역에 직접 저장된다.
reference type (참조 타입) : 객체의 번지를 참조하는 타입. 스택영역에 주소값이 저장되며, 실제 객체는 힙 영역에 생성된다.
- 배열타입
- 열거타입
- 클래스
- 인터페이스
3. 리터럴
리터럴(literal) : 소스 코드 내에서 직접 입력된 값
- 값의 종류에 따라 구분 : 정수 리터럴, 실수 리터럴, 문자 리터럴, 논리 리터럴
- 정해진 표기법대로 작성되어야 함.
구분 | 예시 | 저장할 수 있는 타입 | |
정수 리터럴 | 소수점 없는 리터럴은 10진수로 간주 | 0, 75, -100 | byte, char, short, int, long |
0으로 시작하는 리터럴은 8진수로 간주 | 02, -04 | ||
실수 리터럴 | 소수점이 있는 리터럴은 10진수 실수로 간주 | 0.25 , -3.14 | float, double |
대문자 E 또는 소문자 e가 있는 리터럴은 10진수 지수와 가수로 간주 | 5E7 //5* 10의 7승 0.12E-5 // 0.12*10의 5승 |
||
문자 리터럴 | 작은 따옴표(')로 묶은 텍스트는 하나의 문자 리터럴로 간주 | 'A' | char |
문자열 리터럴 | 큰 따옴표(")로 묶은 텍스트는 문자 열 리터럴로 간주 큰따옴표 안에 텍스트가 없어도 문자열 리터럴 (문자열 내부에서 이스케이프 문자 사용 가능) |
"대한민국" | String |
논리 리터럴 | true, false | true, false | boolean |
cf) 상수(constant)와 같은 의미지만, 상수는 "값을 한 번 저장하면 변경할 수 없는 변수"로 정의되기 때문에 구분을 위해 리터럴 용어를 사용한다.
4. 변수 선언 및 초기화하는 방법
public class VariableExam {
public static void main(String[] args) {
int value; // 변수 선언 (초기화 x)
value = 20; // 변수 초기화
int value2 = 10 ; // 변수 선언 + 초기화
}
}
5. 변수의 스코프와 라이프타임
변수의 스코프 : 선언된 블록( 중괄호 {} ) 내에서만 사용이 가능하다. = 블록 스코프
- 로컬 변수 : 메소드 블록 내에 존재하는 변수. 메소드 실행이 끝나면 메모리에서 자동으로 사라진다.
6. 타입 변환, 캐스팅 그리고 타입 프로모션
타입 변환 : 데이터 타입을 다른 데이터 타입으로 변환하는 것
- 자동 (묵시적) 타입 변환 (promotion) :
- 프로그램 실행 도중 자동적으로 타입 변환 일어나는 것을 의미한다.
- 작은 크기의 타입이 큰 크기의 타입에 저장될 때 발생 (메모리 크기).
- 변환 이전의 값이 손실없이 그대로 보존된다.
- 강제 (명시적) 타입 변환 (casting)
- 큰 크기의 타입이 작은 크기의 타입에 저장될 때 발생
- 안전하게 값이 보존될 수 있는지 검사하는 것이 좋다.
int intValue = 200;
double doubleValue = intValue; //200.0 (자동 타입 변환)
int intValue = (int) doubleValue ; // 200 (강제 타입 변환)
7. 1차 및 2차 배열 선언하기
// 1차원 배열 선언
// 선언과 초기화가 구분될 수 없다. 잘못된 선언 ( 컴파일 오류)
int[] value;
int value[];
value = {1,2,3,4,5};
// 선언과 초기화가 구분되지 않은 제대로 된 선언
int[] value1 = new int[5];
value1 = {1,2,3,4,5};
int[] value2 = new int[] {1,2,3,4,5};
int[] value3 ;
value3 = new int[5] {1,2,3,4,5};
// 2차원 배열 선언
int[][] value = new int[2][3];
// 가변 2차원 배열
int[][] value = new int[2][];
value[0] = new int[10];
value[1] = new int[20];
배열의 저장 구조 (레퍼런스 타입) : 첫 index 주소값이 스택 영역에 저장된다.
8. 타입 추론, var
타입 추론 : 코드 작성 당시 타입이 정해지지 않았지만, 컴파일러가 그 타입을 유추하는 것이다.
var : 자바10에서 추가되었다.
- 로컬 변수
- 선언과 동시에 초기화되어야 한다.
- 다이아몬드 연산자(<>)와 함께 사용하면 컴파일 에러가 난다.
출처 : velog.io/@bk_log/Java-%ED%83%80%EC%9E%85-%EC%B6%94%EB%A1%A0
출처 : 이것이 자바다 ( 신용권 저)
'Programming > Java' 카테고리의 다른 글
[whiteship 온라인 스터디] 4주차 과제: 제어문 (0) | 2020.12.26 |
---|---|
[whiteship 온라인 스터디] 3주차 과제: 연산자 (0) | 2020.12.26 |
[whiteship 온라인 스터디] 1주차 과제: JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가. (0) | 2020.12.26 |
[JAVA] List to Array & Array to List ( 리스트와 배열 convert하기) + String 과 char 배열 변환 (0) | 2020.12.07 |
[정규표현식 In Java] 정규표현식 검색 패키지 - regex 소개 및 예제 (0) | 2020.12.06 |