[JAVA 복습] 자바의 자료형과 연산자 - 배열, 타입 추론(Java 10+)

seonjeong·2023년 11월 13일
0

Java

목록 보기
26/26
post-thumbnail

❤️ 배열

기본 배열

  • 특정 타입의 데이터를 묶음으로 다루기 위해 사용
  • 지정된 자료형과 개수만큼 메모리 공간을 나란히 확보
    • 개수 변경 불가능
    • 각각 담는 자료형 크기만큼 요소당 메모리 차지
  • 0부터 시작
  • 선언과 생성 : 자료형[] 변수명 = new 자료형[길이] or 자료형 변수명[] = new 자료형[길이]
  • 초기화 : 자료형[] 변수명 = {값1, 값2, 값3, ...}
  • 배열의 길이 : 변수명.length
char[] charArr = {'A', 'B', 'C'};
int[] intArr = {1, 3};

boolean[] boolArr1 = new boolean[3];  // 선언 및 생성 -> {false, false, false}가 생성됨
boolean[] boolArr2 = new boolean[3] {false, true, true};  // 배열 생성과 초기화 동시에 가능

int intArrLen = intArr.length; // 2
int booleanArr2Len = boolArr2.length; // 3

다중 배열

  • 배열 안에 배열을 중첩하여 구성
    • 2차원 배열 : 자료형[][] 변수명
    • 3차원 배열 : 자료형[][][] 변수명
//  2차원 배열
boolean[][] dblBoolAry = new boolean[3][3];

int[][] dblIntAry = new int[][] {
	//  ⭐️ 요소 배열의 크기가 다를 수 있음
	{1, 2, 3},     // dblIntAry[0]
	{4, 5},        // dblIntAry[1]
	{6, 7, 8, 9},  // dblIntAry[2]
};

//  3차원 배열
char[][][] trpChrAry = {
	{{'자', '축'}, {'인', '묘'}},  // trpChrAry[0]
	{{'진', '사'}, {'오', '미'}},  // trpChrAry[1]
	{{'신', '유'}, {'술', '해'}},  // trpChrAry[2]
};

int int1 = dblIntAry[0][1];  // 2
int int2 = dblIntAry[2][3];  // 9

char chr2 = trpChrAry[2][0][1];  // '유'

원시 자료형(primitive type) vs 참조 자료형(reference type)

  • 원시 자료형은 값 자체를 복사하여 별개의 값이 됨
int int1 = 1;
int int2 = 2;
int2 = int1;  
int2 = 3;

// int1 = 1, int2 = 3
  • 참조 자료형은 값 메모리의 주소를 복사
int[] intAry1 = {1, 2, 3};
int[] intAry2 = {4, 5};
intAry2 = intAry1;  // 두 변수가 같은 메모리를 가리키게 됨
intAry1[1] = 100;

// intAry1 = {1, 100, 3}, boolAry2 = {1, 100, 3}
  • 문자열은 객체(참조형)지만 원시형처럼 다뤄짐
String str1 = "안녕";
string str2 = "헬로";
str2 = str1;
str1 = "니하오";

// str1 = "니하오", str2 = "안녕";
  • 상수 배열의 경우, 다른 배열을 할당할 수는 없지만 배열의 요소를 바꾸는 것은 가능
final int[] NUMBERS = {1, 2, 3, 4, 5};

NUMBERS = new int[] {2, 3, 4, 5, 6}; ❌
NUMBERS[0] = 50;

// NUMBERS = {50, 2, 3, 4, 5}

문자열 배열 관련 String 기능

  • join 정적 메서드 : 문자열(정확히는 CharSequence)의 배열을 하나로 이어붙임
String[] strs = {"아아", "아삿추", "아바라"};

// 첫번째 인자를 각 사이에 삽입
String join1 = String.join(", ", strs);       // 아아, 아샷추, 아바라
String join1 = String.join("-", strs);        // 아아-아샷추-아바라
String join1 = String.join("", strs);         // 아아아샷추아바라
String join1 = String.join(" 그리고 ", strs);  // 아아 그리고 아샷추 그리고 아바라

❤️ 타입 추론 (Java 10+)

  • Java10에서 도입
  • var 연산자로 변수 선언 - 타입 명시 X
    • 대입된 값을 통해 컴파일러가 추론
    • 컴파일러가 타입을 추론할 수 없는 상황에서는 사용 불가
  • 지역 변수에서만 사용 가능
  • 자료형을 변경 불가
var intNum = 1;
var doubleNum = 3.14;
var charLet = 'A';
var StringWord = "안녕하세요";

// 사용 불가 : 컴파일러가 타입을 추론할 수 없는 상황
var notInit; // 초기화가 안 됨 ❌
var nullVar = null; // null로 초기화 ❌

intNum = 1.23;StringWord = 123;
  • 반복문에서 사용
for (var i = 0; i < 10; i++) {
	System.out.println(i);
}

//  배열의 경우 초기화시에 명시
var chars = new char[] {'A', 'B', 'C', 'D', 'E'};
//  var chars2 = {'A', 'B', 'C', 'D', 'E'}; // ⚠️ 불가

for (var c : chars) {
	System.out.println(c);
}




출처 - 인프런 '제대로 파는 자바' 강의

profile
🦋개발 공부 기록🦋

0개의 댓글

관련 채용 정보