1. 변수의 타입
변수의 타입은 크게 기본형과 참조형으로 나뉜다. 기본형은 실제 변수값(data)를 저장하는 반면, 참조형은 값이 저장되어 있는 주소를 값으로 갖는다.
- 기본형(Primitive type)
boolean, char, byte, short, int, long, float, double
- 참조형(Reference type)
기본형을 제외한 모든 변수 타입으로, 객체의 주소를 저장한다.
쉽게 생각하면 메소드에 값을 전달하여 해당 메소드에서 값을 변경 했을 때 참조형은 메소드를 부른 곳에서도 값변환이 이루어지고 기본형은 그렇지 않다.
// 참조형
public class Blog {
static public class Cl{
int a;
Cl(int a){
this.a=a;
}
void print(){
System.out.println(a);
}
}
public static void main(String[] args) {
Cl c = new Cl(10);
c.print();
change(c);
c.print();
}
static void change(Cl c){
c.a = 100;
}
}
// 10
// 0
// 값이 바뀌었다.
// 기본형
public class Blog {
public static void main(String[] args) {
int a = 10;
System.out.println("before change : "+ a);
change(a);
System.out.println("after change : "+ a);
}
static void change(int a){
a = 100;
}
}
// before change : 10
// after change : 10
// 값이 바뀌지 않는다.
-기본형 변수의 크기
종류 크기 | 1 byte | 2 byte | 4 byte | 8 byte |
논리형 | boolean | |||
문자형 | char | |||
정수형 | byte | short | int | long |
실수형 | float | double |
-배열의 초기화
자바의 배열은 조금 다른 방식이다. (int a[];로 사용하던 C, C++에 비해서..)
public class Blog {
public static void main(String[] args) {
int[] arr1 = new int[4];
String[] arr2= {new String("abc"), "def", "ghi"};
// 에러발생
// int [] arr3;
// arr3 = {1,2,3,4,5,6,7};
// Array constants can only be used in initializers
// 정상
int[] arr4;
arr4 = new int[]{1,2,3,4,5,6,7};
// 에러 발생
// int result = add({1,2,3,4,5});
// Syntax error on token "=", @ expected after this token
// Syntax error, insert "SimpleName" to complete
//정상
int result = add(new int[]{1,2,3,4,5});
}
static int add(int[] arr){
int sum=0;
for(int i :arr) sum+=i;
return sum;
}
}
위의 예를 몇가지 보면 arr3(주석부분)과 arr4를 보면 new int[]로 배열을 생성하는 것의 차이를 볼 수 있다. arr2처럼 선언을 하면서 초기화를 하면 상관 없지만 선언과 초기화를 따로 해야 할경우, 또는 add() 함수 처럼 배열을 파라미터로 쓰는데 인자를 즉석해서 만들 경우에는 위처럼 new int[]와 같은 형식으로 초기화 해야 한다.
- 가변 배열
2차원 이상의 배열에 대해 자유로운 형태의 배열을 구성 할 수 있다.
public class Blog {
public static void main(String[] args) {
int[][] arr= new int[4][];
arr[0] = new int[5];
arr[1] = new int[3];
arr[2] = new int[4];
arr[3] = new int[1];
for(int[] ar : arr){
for(int a: ar){
System.out.print(a+" ");
}
System.out.println();
}
}
}
// 결과
/*
0 0 0 0 0
0 0 0
0 0 0 0
0
*/
다음과 같이 각자 다양하게 배열을 선언 할 수 있다.(걍 ArrayList를...)
자바의 정석 2~5장까지 빠르게 자바에서(제 입장에서...) 다시보거나 정리해야 할 내용을 정리해 봤습니다.
오늘은 기업 코딩테스트를 2개나 봐서 하지 말까 생각했는데 그래도 1일 1커밋을 하려면...ㅠㅠ 시작한지 얼마 안돼서 벌써 헤이해 지면 안됐기에 억지로 TIL이라도 만들었어요..
앞으로도(더 알찬내용으로...) 화이팅..
'개발 > JAVA' 카테고리의 다른 글
[Java]객체지향 언어-4(상속/ 포함 등 클래스간의 관계) (0) | 2021.05.16 |
---|---|
[JAVA개념]객체지향언어-3 (0) | 2021.05.11 |
[JAVA개념]객체지향언어-2 (0) | 2021.05.10 |
[JAVA개념]객체지향언어-1 (0) | 2021.05.09 |
[JAVA 개념] 자바의 이해 (0) | 2021.05.05 |
댓글