Mon, 25th Oct 2021
1. 참조 타입
배열, 열거, 클래스, 인터페이스
2. null / NullPointerException
: 실무 시 가장 많이 접하는 예외코드
-> 변수가 힙 영역의 객체를 참조하지 않는다 : null
-> 실수로 null 값을 가지고 있는 참조변수 사용시 해당 예외 발생
3. String 타입
: 문자열 리터럴이 동일하다면 같은 String 객체 공유
4. new 연산자를 이용한 String 객체 생성
: 힙 영역에 새로운 String 객체 생성
※ name1의 실제 주소값 불러오기 -> System.identityHashCode(name1)
5. 배열 (Array)
같은 타입의 데이터를 연속된 공간에 나열시키고, 각 데이터에 인덱스(index)를 부여해 놓은 자료구조
배열의 index는 0부터 시작
배열은 같은 타입의 데이터만 저장가능
한번 생성된 배열은 길이를 늘리거나 줄일 수 없음
-> 중복된 변수 선언을 줄임, 반복문을 이용해서 요소들을 쉽게 처리 가능
6. 값 목록으로 배열 생성
데이터타입[] 변수 = { 값0, 값1, 값2, ... };
ex) int[] scores = { 90, 56, 78, 98, ... };
※ 배열 변수를 미리 선언한 후, 값 목록들이 나중에 결정되는 상황
데이터타입[] 변수;
변수 = new 타입[] { 값0, 값1, 값2, 값3, ... };
ex) int[] scores = null; //int[] scores; 도 가능
scores = new int[] { 34, 67, 84, 88, 52 };
or
데이터타입[] 변수 = new 타입[] { 값0, 값1, 값2, 값3, ... };
ex) int[] scores = new int[] { 34, 67, 84, 88, 52 };
7. new 연산자로 배열 생성 : 값의 목록을 가지고 있지 않지만, 향후 값들을 저장할 배열을 미리 만드는 경우
데이터타입[] 변수 = new 데이터타입[길이];
ex) int[] intArray = new int[3]; //배열만 미리 생성
intArray[0] = 33; //향후 배열에 새로운 값 저장(대입)
intArray[1] = 57;
intArray[2] = 65;
8. 배열의 길이
배열변수.length
※ 배열의 마지막 인덱스는 길이보다 1 적다. : 배열의 인덱스는 0부터 시작하고 배열의 길이는 1부터 시작
ex) int[] intArray = { 10, 20. 30, 40 };
//index : 0 1 2 3
int num = intArray.length; //4
※ int 변수 = Integer.parseInt("문자열") or Integer.parseInt(String 타입의 변수명)
-> String 타입의 변수/문자열을 Int 타입으로 변환하는 메소드
9. 다차원 배열
int[][] scores = new int[2][3];
-> 2X3행렬
(0,0) (0,1) (0,2)
(1,0) (1,1) (1,2)
10. 배열 복사 메소드
System.arraycopy(원본배열, 원본배열에서 복사할 시작 인덱스, 새 배열, 새 배열에서 붙여넣을 시작 인덱스, 길이)
ex) System.arraycopy(arr1, 0, arr2, 0, arr1.length)
11. 향상된 for문
for(②타입 변수 : ①배열) {
③실행문
}
: ①배열에서 가져올 첫 번째 값이 존재하는지 평가 -> 가져올 값이 존재하면 해당 값을 ②변수에 저장 -> ③실행문 실행 -> 다시 ①배열에서 가져올 두 번째 값이 존재하는지 평가... 반복 후 다음 가져올 항목이 없으면 for문 종료
ex)
int[] scores = { 95, 71, 84, 93, 87 };
for(int score : scores) {
sum = sum + score;
}
System.out.println("점수 총합: " + sum);
12. 열거
: 한정된 값만을 갖는 데이터 타입
: 한정된 값은 열거 상수 (Enumeration Constant)로 정의
열거타입 변수 = 열거타입.열거상수;
ex) Week today = Week.TUESDAY;
-> 열거상수는 메소드 영역에서 자신의 열거객체(힙 영역)를 참조한다.
today == Week.TUESDAY //true
13. 열거 객체 메소드
리턴타입 | 메소드(매개변수) | 설명 |
String | name() | 열거 객체의 문자열을 리턴 |
int | ordinal() | 열거 객체의 순번(0부터 시작)을 리턴 |
int | compareTo() | 열거 객체의 순번을 비교해서 순번차를 리턴 |
열거타입 | valueOf(String name) | 주어진 문자열의 열거 객체를 리턴 |
열거배열 | values() | 모든 열거 객체들을 배열로 리턴 |
'Java > 5. 참조 타입 (Reference Type)' 카테고리의 다른 글
Day 6 : 가변 행렬 데이터의 합계, 평균 구하기 (for문, count 변수 사용) (0) | 2021.10.26 |
---|---|
Day 6 : 배열 내 데이터의 최대값 구하기 (for문 사용) (0) | 2021.10.26 |
Day 6 : Exercise - Reference Type (0) | 2021.10.26 |
Day 6 : Practice #2 (0) | 2021.10.26 |
Day 5 : Practice #1 (0) | 2021.10.25 |