2020-11-21 백기선님 스터디 2주차
기본형
-
자바에서는 int, long, float, dobule, boolean, char, byte, short 총 8가지의 기본형 타입이 있다.
-
기본형은 기본값이 있기때문에 null을 허용하지 않고 stack 영역에 저장된다.
-
논리형
- booelan : 1byte, 기본값 false
-
정수형
- byte: 1byte, 기본값 0, 1바이트가 8비트이기 때문에 표현 가능한 범위 -128~127
- short : 2byte, 기본값0, 표현범위 -32768~32767
- int : 4byte, 기본값0, 표현범위 -21억~21억
- long: 8byte, 기본값 0L
-
실수형
- float : 4byte, 기본값 0.0F, 범위 : 3.4*10^-38~3.4*10^38
- double: 8byte, 기본값 0.0, 범위 : 1.7*10^-308~1.7*10^308
-
문자형
- char: 2byte, 기본값 : \u0000, 범위 0~65535
기본형과 레퍼런스 타입
- 기본타입을 제외한 나머지는 레퍼런스 타입이다. 레퍼런스 타입은 java.lang.object를 상속하는 모든 클래스를 지칭하고 기본값과 달리 null을 허용한다.
- new 키워드를 통해 생성되는 객체들은 JVM의 Heap영역에 저장되고, GC에 의해 관리된다.
- 클래스, 인터페이스, 열거형, 배열타입이 존재한다.
- 런타임 예외가 발생한다.
기본값과 레퍼런스 타입은 언제사용되나?
- primitive의 경우 사용할떄 반드시 갑이 할당되야되서 상수에서 많이 활용한다. Optinal이 지원된다 하더라도 primitive는 기본적으로 null을 허용하지 않기때문에 더 괜찮다고 생각된다.
- Wrapper의 경우 빌트인 메서드를 활용하거나 Collections나 제네릭에서 많이 활용된다.
리터럴
-
리터럴이란 변수에 넣는 변하지 않는 데이터를 의미한다.
-
int a = 100; boolean check = true;
- 위의 코드에서 a, check는 변수이고, 100, true는 리터럴이다. 리터럴이란 변수에 담겨있는 변하지 않는 데이터를 의미한다.
-
변수 선언 및 초기화 방법
-
프로그래밍에서 변수란 특정타입의 데이터를 담는 그릇이다.
-
type varName = value; type varName2; varName2 = value; final int SUM = 10; // 상수선언
-
자바에서 변수를 선언하기 위해서는 자료형 변수이름 = 값 형태로 변수선언과 동시에 할당하는 방법과 변수만 선언하고 할당은 나중에 하는 방식이 있다.
- 변수는 값이 변할 수 있지만 final 키워드를 붙여서 변하지 않는 상수로 만들수도 있다. 상수는 선언과 동시에 할당이 되어야한다.
변수의 스코프와 라이프타임
-
변수의 스코프란 변수가 적용되는 범위를 지칭한다. 자바에서는 {}단위로 블록스코프를 사용하고 선언된 위치에 따라 클래스변수, 인스턴스변수, 지역변수가 존재한다.
-
public class Person { static int totalPeople = 10; // 클래스변수 int age = 26; // 인스턴스 변수 private int sum(int a, int b) { int sum = a + b; // 지역변수 return sum; } }
- static키워드가 클래스 변수로 사용되고, 전역변수로 사용될 수 있다. 해당 변수는 1개만 존재한다.
- 인스턴스 변수는 클래스영역에 선언되고 인스턴스가 생성될때 사용된다.
- sum 메서드 안에 있는 int sum은 지역변수이다. 지역변수는 해당 함수가 실행될때 메모리에 할당된다.
타입 변환, 캐스팅, 타입 프로모션
1차 및 2차 배열 선언
-
배열은 논리적 저장순서와 물리적 저장순서가 일치한 자료구조를 지칭한다. 따라서 인덱스(index)로 원소에 접근. 원소의 인덱스를 알고있으면 Big-O(1)에 접근가능하다.
-
배열의 선언
-
int [] arr = new int [5]; int [] arr2 = {1, 3, 5, 7, 9}; int [] arr3; arr3 = new int[10]; arr3[0]= 1;
-
배열을 선언하기 위해서는 type [] varName = new int [size]형태로 배열의 크기를 지정하고, 추후 할당하는 방법과 int [] arr2 = {1,3,5,7,8}와 같이 선언과 동시에 할당하는 방법이 존재한다.
- 배열은 크기를 할당하면 크기를 변화하지 못하기 때문에 ArrayList를 많이 사용한다. 하지만 ArrayList 내부역시도 배열형태로 되어있고 크기가 초과되면 ArrayList는 내부적으로 기존 데이터를 복사하고, 사이즈의 2배만큼 키워서 새로 선언하는 방식이다.
-
타입 추론, var
- 자바10부터 var 키워드가 등장했다.
부족한 부분은 얼른 채우겠습니다….
Written on November 21, 2020