휴....... 반복문 조거문 이 두놈이 젤 어렵다는데 진짜 아직도 완전히 감은 못잡았지만
대략만 이해하고 실전 들어가보면 그때 하다보면 알겠지ㅋㅋㅋ


참조타입
:객체(object)의 번지를 참조하는 타입으로 배열, 열거, 클래스, 인터페이스.

기본 타입과의 차이점
:byte, char, short, int, long float, double, boolean 변수는 실제 값을 변수 안에 저장
Vs
참조타입
:배열, 열거, 클래스, 인터페이스 변수는 메모리의 번지를 변수 안에 저장

JVM
:운영체제에서 할당받은 메모리 영역(메소드영역, 힙 영역, JVM스택 영역)으로 구분해서 사용

메소드영역
:JVM이 시작할 때 생성되고 모든 스레드가 공유하는 영역. 코드에서 사용되는 클래스들을 클레스 로더로 읽어 클래스별로 정적 필드와 상수, 메소드코드, 생성자 코드 등을 분류해서 저장

힙 영역
:객체와 배열이 생성되는 영역. 여기에 생성된 객체와 배열은 JVM 스택 영역의 변수나 다른 객체의 필드에서 참조

JVM스택 영역
:메소드를 호출할 때마다 프레임을 추가하고 메소드가 종료되면 해당 프레임을 제거하는 동작을 수행

new연산자
:힙 영역에 새로운 객체를 만들 때 사용, 객체 생성 연산자

Ex. Code)
String strVar1 = "신민철";
String strVar2 = "신민철";

if(strVar1 == strVar2) {
System.out.println("strVar1과 strVar2는 참조가 같음");
} else {
System.out.println("strVar1과 strVar2는 참조가 다름");
}

=> 결과 값은????????????
strVar1과 strVar2는 결과 같이 같음. 같은 힙 영역에 있는 String 객체의 값이 각
변수에 저장이 된것!!

String (new) strVar3 = "신민철";
String (new) strVar4 = "신민철";

if(strVar3 == strVar4) {
System.out.println("strVar3과 strVar4는 참조가 같음");
} else {
System.out.println("strVar3과 strVar4는 참조가 다름");
}

=> 결과 값은????????????
strVar3과 strVar4는 결과 같이 다름. 각 다른 힙 영역에 String 객체의 값이 저장

배열
:같은 타입의 데이터를 연속된 공간에 나열하고, 각 데이터에 인덱스를 부여해놓은 자료구조

주의사항
:배열 변수를 이미 선언한 후에는 다른 실행문에서 중괄호를 사용한 배열 생성이 허용되지 않는다

배열의 길이
:lenth -> 배열의 길이를 알 수 있는 함수
:배열변수.length

배열항목간 문자열 비교 연산자
: 문자열.equals(문자열)
Ex.Code) strArray[0].equals(strArray[2])

: == 이것은 객체의 번지를 비교하는 것이기 때문에 사용불가

배열복사
:배열은 한번 생성하면 크기를 변경할 수 없기에 더 큰 배열을 만들고 복붙 해야된다
:for문을 사용하거나 System.arraycopy를 사용한다
Ex.Code) for문으로 복붙
int[] oldIntArray = {1, 2, 3};
int[] newIntArray = new int[5];

for(int i=0; i<oldIntArray.length; i++) {
newIntArray[i] = oldIntArray[i];
}

for(int i=0; i<newIntArray.length; i++) {
System.out.print(newIntArray[i] + ", ");
}

System.arraycopy문
:System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
->src - 매개값은 원본 배열
srcPos 원본 배열에서 복사할 항목의 시작 인덱스
dest 매개 값은 새 배열
destPos 새 배열에서 붙여넣을 시작 인덱스
length 복사할 개수
Ex.Code)
public static void main(String[] args) {
String[] oldStrArray = {"java", "array", "copy"};
String[] newStrArray = new String[5];
System.arraycopy(oldStrArray, 0, newStrArray, 0, oldStrArray.length);

향상된 for문
배열 및 컬렉션 항목의 개수만큼 반복

Ex.Code)
package sec02;

public class exma10_AdvancedForExample {

public static void main(String[] args) {
	int[] scores = {95, 71, 84, 93, 87};
	
	int sum=0;
	for (int score : scores) {
		sum = sum + score;
	}
	System.out.println("점수 총합 : "+sum);
	
	double avg = (double)sum / scores.length;
	System.out.println("점수 평균 = " + avg);
}

}

profile
코린이 성장기

0개의 댓글