(수근수근)
2주차 과제: 자바 데이터 타입, 변수 그리고 배열 #2 본문
목표
자바의 프리미티브 타입, 변수 그리고 배열을 사용하는 방법을 익힙니다.
학습할 것
- 프리미티브 타입 종류와 값의 범위 그리고 기본 값
- 프리미티브 타입과 레퍼런스 타입
- 리터럴
- 변수 선언 및 초기화하는 방법
- 변수의 스코프와 라이프타임
- 타입 변환, 캐스팅 그리고 타입 프로모션
- 1차 및 2차 배열 선언하기
- 타입 추론, var
프리미티브 타입 종류와 값의 범위 그리고 기본 값
기본형 타입(Primitive type)
- 자바언어에 내장된 기본 타입
- 총 8개이 타입이 존재한다. (boolean, byte, short, int, long, float, double, char)
- stack메모리에 저장이 된다 실제 값들이 저장이 된다.
- wrapper class들은 primitive type를 클래스로 만든 것
Type | 사이즈 | 값의 범위 | 기본 값 |
int | 4byte | -2,147,483,648 ~ 2,147,483,647 | 0 |
short | 2byte | -32,768 ~ 32,767 | 0 |
long | 8byte | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 | 0L |
float | 4byte | (3.4 X 10-38) ~ (3.4 X 1038) 의 근사값 | 0.0F |
char | 2byte | 0 ~ 65535 | '\u0000' |
boolean | 1byte | false, true | false |
byte | 1byte | -128 ~ 127 | 0 |
double | 8byte | (1.7 X 10-308) ~ (1.7 X 10308) 의 근사값 | 0.0 |
프리미티브 타입과 레퍼런스 타입
Reference Type 와 레퍼런스 타입 종류
Reference type의 특징
- 기본형 타입을 제외한 타입은 모두 참조형이다.
- 빈 객체를 의미하는 Null값이 존재한다
- 값을 저장시키는게 아닌 저장되어있는 주소를 heap메모리에 저장한다.
Literal이란
리터럴이란 프로그램에서 직접 표현한 값으로 정수리터럴, 실수, 문자, 논리 문자열 리터럴이 존재한다
- 정수리터럴 (ex. 15(십진수), 014(8진수), 0x15(16진수), 0b (2진수) )
- 실수리터럴
double로 컴파일 (ex. double db = 0.0432) / float는 숫자뒤에 f를 명시적으로 붙여주어야함 - 문자리터럴 : '' 로 표현한다
- 문자열 리터럴 : "" 로문자열 표현
변수 선언 및 초기화하는 방법
변수선언이란
- 데이터를 저장하기 위해 메모리를 잡는것
- 자바에서 변수 선언시 안되는 경우가 여러가지가 존재
- 변수 앞에 숫자 불가
- 변수에 특수문자 불가
- 예약어 사용불가
변수 초기화란
- 변수를 선언하고 사용하기 위해 값을 넣어주는 작업이 반드시 필요하다!
- 변수를 초기화 할때는 대입연산자를 사용해서 초기화를 시켜준다.
- 초기화를 하지 않으면 쓰레기 값이 들어있을 수 있기 떄문에 초기화가 반드시 필요!
int a = 10; // 변수 선언 및 초기화
int 12number = 10 // 컴파일 에러
boolean class = false // 예약어 사용불가
변수의 스코프와 라이프타임
변수의 스코프란?
- 변수에 접근하거나 접근할 수 있는 유효범위/영역
- 일반적으로 {}선언된 블록 안에서 엑세스 가능
변수의 라이프타입이란?
- 변수가 메모리에서 살아있는 기간
- 모든 변수는 생명주기를 가지고 있고, 변수가 생성되는 죽는 일련의 과정
public class Test{
int var1 = 10; // 인스턴스 변수, 전역변수
static int var2; //클래스 변수 정적변수
int sun(int a, int b){ //매개변수, 파라미터
int var3 = 30; //지역변수
return a+b+c;
}
}
- 인스턴스 변수는 객체가 생성될때 변수 생성
- 인스턴스는 참조가 없을 때 가비지 컬렉터가 객체를 삭제한다.이때 인스턴스도 같이 제거
- 클래스 변수는 클래스가 호출되면서 생성 어플리케이션이 종료되는 시점에 같이 소멸된다.
- 지역변수는 {} 이 끝나는 시점 삭제된다.
- 매개변수는 함수가 끝나는 시점에 소멸된다.
타입 변환, 캐스팅 그리고 타입 프로모션
타입변환
- 자동타입변환 : 프로그램 실행 도중 자동으로 변환
byte >> short/char >> int >> long >> float >> double - 강제타입변환 : 큰 타입에서 작은타입으로 변환
int num1 = (int)10.3432; //강제 형변환
float num2 = 10; // 자동형변환 -> 10.0
Casting & Promotion
- casting(명시적 형 변환) : 큰데이터 타입에서 작은타입으로 형변환 되는것
int num = (int)10.3434; - Promotion(묵시적 형 변환 ): 작은타입에서 큰변환으로 형 변환
float num2 = 10; //컴파일러가 자동적으로 수행한다.
1차 및 2차 배열 선언하기
Reference Type에 속하는 배열은 안에 많은 값들이 존재한다.
배열 선언
// 1차원 배열 선언
int[] odds ={1,3,5,7,9};
int[] name = new int[10]; //크기 지정가능, 배열의 값은 0으로 초기화 된다.
//2차원 배열의 선언
int[][] matrix = new int[2][4]; // 가정 선호된는 선언
int[][] matrix2 = {{1,2,3,4},{5,6,7,8}};
int arr[][] matrix3 = new int[2][4]; // 선언가능
int[] arr[] matrix4 = new int[2][4]; // 선언가능
배열의 특징
- 배열의 길이는 고정이 되어있다.
- 배열의 인덱싱은 0부터 시작한다.
타입추론(Type Inference), var
타입추론이란? 코드 작성시에는 타입이 정해지지 않았지만, 컴파일러가 타입을 유추하는 것.
(자바 10에서 var라는 Local Variable Type-Inference가 추가 됨)
var name = "JUHA";
if(name instanceof String){
System.out.println("String 타입입니다");
}
var hm = new HashMap<String, Integer>();
타입추론의 특징
- 지역변수로만 선언이 가능하며 값이 필요하다
- 배열을 불가능하다
- method의 인자값으로 사용 불가
- 람다식 사용 불가
- 초기화 후에 다른 타입의 할당은 불가능하다
var name = "juha";
var age = 20;
var character ="cute";
age = "이십살"; // 컴파일 에러, 컴버팅 되지않는다.
'JAVA' 카테고리의 다른 글
1주차 JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가. (0) | 2021.01.04 |
---|---|
Comparator & Comparable (0) | 2020.08.31 |
Comments