Array
= collection of indexed variables
= 특별한 타입의 object
• 선언
int[] arr = new int[5]; 이렇게 선언 !!
-> 모든 값은 해당 자료형의 zero 값으로 초기화 됨 ( int : 0, float: 0, class: NULL)
( 거의 다 기본 값으로 자동 초기화가 되넹 머만안돼? local variable !)
* 선언과 동시에 초기화도 가눙
-> int [] arr = { 1,2, 3};이렇게 가능
* 크기 고정 안하고 입력으로도 받을 수 있음
• 배열의 각 변수 = indexed variable
• 배열은 object 이다 !
- length를 instance variable로 가짐 -> arr.length 이렇게 접근 (이건 method가 아닌 field ! arr.length() 하면 안됨)
- variable은 레퍼런스를 저장한다 ! 주소를 저장하고 다른 곳에 배열 내용이 저장되어 잇슴
- = 연산 -> 레퍼런스 복사. 같은 값을 가리키게 됨
- == 연산 -> 같은 레퍼런스인지 비교함 (==은 딱 그 변수가 가진 값을 비교하므로)
- privacy leaks 발생 가능
-> public double[] getArray () { return anArray; } // 하면 레퍼런스를 리턴. 클래스 객체 그대로 내보내서 이러캐하면 안댐~
카피만드러서 해야됨
double[] temp = new double[count];
for (int i=0; i<count; i++)
temp[i]=a[i];
return temp;
//class type 배열일경우에는//
Class[] temp= new Class[count];
for (int i=0;i<count;i++)
temp[i]=new Class(a[i]); // copy constructor !
return temp;
• character의 어레이는 스트링 아님 !! String은 하나의 class type !
-> 대신 char 배열을 input으로 받는 constructor 가 존재함 ^_^
char[] a = { 'a', 'b' }; String s=a; // 안됨 !
String s = new String(a); // 는 됨 !
String s = new String (a, 0, 2); // 0번째 인덱스 ~ 2번째 전까지
• Class base type의 array
-> arr[0]=new Date(); // 이렇게 일일이 원소에 대해 new 해줘야함!
• Parameter로 넣을 시
- String[] 이걸로 넣어주면 된다
- 레퍼런스 -> 내부 값 수정 가능 ~~
* 리턴을 그냥 입력받은걸로 하면 같은 레퍼런스갖는값 내보내는거. 같은 배열 가리키게됨 ! 때에 따라서
배열 복사해서 리턴하든 잘 하기 !
• Multidimensional Arrays
= 배열의 배열
- 두개의 for문으로 접근
int [][] m = new int [3][4] 이런식으로 선언
- m.length = 3 // column의 개수
- m[0].length = 4 // row의 개수
• main method의 argument
=> public static void main ( String[] args )
-> program name 뒤에 아규먼트 넣어줄 수 있다 !
• 배열 for each 로 접근하기 !
->
이렇게 할 수 ㅇ ( number=0 이렇게 값 변경은 불가 . 값을 읽어오는 것만 함 !)
( 걍 단순 copy 해옴 -> 이때 primitive이면 당연히 변경 못할꺼고, class type이면 변경 가능할 것 !)
Enumerated Types
= enum 클래스 = 열거체
- 클래스처럼 보이게 하는 상수
- 서로 관련있는 상수들끼리 모아 상수들을 정의하는 것
- enum 클래스 형을 기반으로 한 클래스형 선언
'2-1 > 객체지향 - java' 카테고리의 다른 글
Polymorphism and abstract classes (0) | 2022.04.20 |
---|---|
Chap 7. Inheritance (상속) (0) | 2022.04.12 |
Chap5-2 (0) | 2022.04.04 |
chap 4. class (0) | 2022.04.02 |
Chap 1,2 (0) | 2022.03.30 |