ㅁ for문
- for( 초기식; 조건식; 증감식 )
여기서 초기식, 조건식, 증감식 전부 생략 가능. 그러나 세미콜론 두 개는 있어야 함.
전부 생략할 경우 무한 루프다.
ㅁ
String str = "kiwi";
for(int i=0; i<str.length; i++) {
System.out.println(str.charAt(i));
}
ㅁ 2~9 사이의 랜덤값을 출력하기
- int a = (int) (Math.random * 8 + 2);
ㅁ 이클립스에서 특정 메서드를 ctrl 누른채로 클릭하면
- 이클립스에서 특정 메소드에 컨트롤+클릭을 하면 해당 메소드의 정의로 이동할 수 있습니다.
이 기능은 메소드가 선언된 곳으로 바로 이동하여 메소드의 구현을 확인하거나 수정할 수 있도록 도와줍니다.
이를 "Open Declaration"이라고도 합니다.
ㅁ
- 실제 데이터값을 곧바로 담을 수 있는 변수를 일반 변수라고 함.
- 주소값을 담고 있는 변수는 참조 변수(레퍼런스 변수)라고 함.
ㅁ 힙 영역
- 힙이라는 영역의 특성. 절대 빈 공간이 존재할 수 없다. 즉 초기화를 진행해야함.
- 초기화를 하지 않을 경우 JVM이 알아서 초기화함(각 자료형에 맞는 기본값으로)
- 힙에 생성된 공간(객체)마다 고유한 주소값을 부여해줌
절대 중복되지 않음. (= 다른 객체들과 구별됨)
ㅁ
int[] arr;
- System.out.println(arr);
자료형@주소값의 16진수 형태
- [I는 배열을 나타내는 표시입니다. 여기서 [는 배열임을 나타내며, I는 int 타입의 배열임을 나타냅니다.
- @36baf30c는 객체의 해시 코드를 나타냅니다. 이는 객체를 구별하기 위한 고유한 식별자로, 메모리 주소와는 다른 개념입니다.
- System.out.println( arr.hashCode() );
주소값의 10진수 형태
ㅁ
- 논리형의 기본값 false
- 문자형의 기본값 ' ' (공백)
- 정수형의 기본값 0
- 실수형의 기본값 0.0
- 참조자료형의 기본값 null
ㅁ 한 번 지정된 배열의 크기는 변경이 불가능하다.
ㅁ 배열을 강제로 삭제하고 싶은 경우
(1) 배열 변수를 null로 설정하여 배열이 참조하는 객체에 대한 참조를 제거.
int[] arr = {1, 2, 3, 4, 5};
arr = null;
(2) 다른 값을 할당하면서 배열을 가리키는 변수를 새로운 객체나 다른 배열로 재할당.
int[] arr = {1, 2, 3, 4, 5};
arr = new int[10];
ㅁ
- 사용자로부터 String형 str에 문자열을 입력받음.
char[] arr = new char[str.legnth()];
arr[i] = (char) (str.charAt(i) + 1 );
여기서 char로 형변환 해야함.
- 문자 'a' + 'b' + 'c'하면 문자가 나옴.
"" + 'a' + 'b' + 'c'해야 문자열이 나옴.
- String형 변수에 대입할 때는 null로 초기화해도 되지만, 뒤에 문자를 계속 더할 경우에는 "" 빈문자열을 해야.
- String result = String.valueOf(arr) 해도 됨.
char 배열이 다 문자열화됨.
괄호에 문자열화시키고자하는값 주면 됨. 전달된 값을 가지고 문자열로 만들어 반환해주는 메소드다.
ㅁ 배열 선언과 동시에 초기화
- int[] arr1 = new int[] {1, 2, 3, 4 }; // 방법1
- int[] arr2 = {1, 2, 3, 4}; // 방법2
- int[] arr;
arr = new int[] {1, 2, 3, 4} // 오류발생.
배열을 먼저 선언 한 후에 초기화를 진행하고자한다면 반드시 방법 1을 이용.
- int[] arr1 = new int[4] {1, 2, 3, 4}; 는 오류 발생.
ㅁ 자바에서 배열은 객체입니다. 따라서 배열을 생성하면 항상 새로운 객체가 생성됩니다.
ㅁ 배열 깊은복사 방법 2. System 클래스의 arraycopy() 메소드를 이용
- System.arraycopy( 원본배열, 복사시작할인덱스, 복사본배열, 복사본배열의 복사시작 인덱스, 복사할 개수);
int[] org = {1, 2, 3, 4, 5};
int[] cpy = new int[10];
System.arraycopy(org, 0, cpy, 0, 5);
for(int i=0; i<cpy.length; i++)
System.out.println(cpy[i]);
System.out.println(org.hashCode());
System.out.println(cpy.hashCode());
주소값이 다름. 주소값이 다르다는 말은 깊은 복사가 이루어졌다는 얘기.
ㅁ 배열 깊은복사 방법 3. Arrays 클래스의 copyOf() 메소드 사용
- 새로운 배열 = Arrays.copyOf(원본 배열, 원본 배열에서 복사하고 싶은 요소들의 길이);
int[] org = {1, 2, 3, 4, 5};
int[] cpy = Arrays.copyOf(org, 5); // 깊은 복사 성공
- Array.copyOf를 배열의 크기 변경(기존 배열의 일부 요소를 포함하여 새로운 배열을 생성)으로도 쓸 수 있다.
int[] org = {1, 2, 3, 4, 5};
int[] cpy = Arrays.copyOf(org, 10); // 인덱스 5~9는 0으로 채워짐.
- 배열의 크기를 원본 배열보다 더 작게도 가능.
int[] org = {1, 2, 3, 4, 5};
int[] cpy = Arrays.copyOf(org, 3); // 인덱스 0, 1, 2만 채워짐.
ㅁ 배열 깊은복사 방법 4. 배열.clone() 메소드 이용
-
int[] org = {1, 2, 3, 4, 5};
int[] cpy = org.clone(); // 그대로 복사만 가능.
ㅁ 배열을 반복문 쓰지 않고 전부 출력하는 법
- System.out.println( Arrays.toString(cpy) );
ㅁ java.lang 패키지에 있는 클래스들을 사용할 때는 import를 안해도 됨.
java.lang.String
java.lang.System
java.lang.Math 등 // import java.lang.*; 이 숨겨져있다. jvm이 써줌.
ㅁ advanced for문 (향상된 for문) // <-> for loop문
- 자바 7부터 가능. 자바 6이나 8쓰는 회사들 많다.
- for( 변수 : 순회하고자 하는 배열 | 컬렉션 ) { }
반복문이 매번 돌때 마다 매번 압쪽 변수에는 각 인덱스에 담겨있는 실제 데이터 값이 매번 담김.
- 얘는 무조건 0번 인덱스부터 마지막까지 다 접근함.
- for( 변수 : arr ) { // 변수 = arr[0]; -> 변수 = arr[1]; .... }
for(int value : arr ) { System.out.println(value); }
- 추가적인 변수를 둬야만 몇 번째까지인지도 출력할 수 있음.
int index = 0;
for(int value : arr) {
System.out.println(index + "번째 : " + value);
index++;
}
int index = 0;
for(int value : arr) {
System.out.println(index++ + "번째 : " + value); // 이래도 똑같음
}
- 향상된 for문은 생각보다 많이 쓰임. 그냥 for loop문과 향상된 for문으로 대체해서 사용하는 연습 필요.
'클라우드 활용 자바개발자 양성과정 > 01. JAVA 프로그래밍 언어 활용' 카테고리의 다른 글
07. 객체 배열 (0) | 2024.07.02 |
---|---|
06. 객체 (0) | 2024.06.27 |
03. 연산자 & 04. 조건문 (0) | 2024.06.20 |
변수(Variable) (1) | 2024.06.18 |
이클립스 설치&사용법 (1) | 2024.06.18 |