[Java] 참조 타입과 참조 변수,배열
Day7. 230508
참조 타입과 참조 변수
기본 타입과 참조 타입
기본 타입 : 정수, 실수, 문자, 논리 리터럴을 저장하는 타입.
참조 타입 : 객체의 번지를 참조하는 타입(배열, 열거, 클래스, 인터페이스)
메모리 사용 영역
메소드 영역(Method Area)
JVM이 시작할 때 생성되고 모든 스레드가 공유하는 영역
힙(Heap Area)
객체와 배열이 생성되는 영역
JVM스택 영역
메소드를 호출할 때마다 프레임을 추가하고 메소드가 종료되면 해당 프레임을 제거하는 동작을 수행
배열(Array)
배열
동일 타입의 데이터를 연속된 공간에 나열, 각 데이터에 index를 부여해 놓은 자료구조.
장점 > 중복된 변수 선언을 줄일 수 있음.
배열 선언
타입[] 변수명; 또는 타입 변수명[];
ex) int [] Array; 또는 int Array[];
값 할당
변수명[인덱스 번호] = 값;
배열 생성(배열 선언 및 값 할당)
1) 값 목록으로 배열 생성 : 타입[] 변수명 = {값0,값1,값2,...};
2) new연산자로 배열 생성 : 타입[] 변수명 = new 타입[] {값0,값1,값2,...};
위의 두 가지를 한번에 실행.
배열 길이
배열 변수.length;
1
2
3
4
5
6
|
int[] arr2 = {10,85,45,76,-13};
System.out.println("arr2="+arr2);
System.out.println("arr2.length="+arr2.length); //배열의 길이
System.out.println("arr2[0]="+arr2[0]);
System.out.println("arr2[3]="+arr2[3]);
System.out.println("arr2[4]="+arr2[4]);
|
cs |
int[] arr2;
arr2 = {10,85,45,76,-13}; 한번에 실행.
* 실행 결과
arr2=[I@6d06d69c
arr2.length=5
arr2[0]=10
arr2[1]=85
arr2[3]=76
arr2[4]=-13
1
2
3
4
5
6
|
int[] arr3 = new int[] {1,2,9,45,6,89};
System.out.println("arr3="+arr3);
System.out.println("arr3.length="+arr3.length);
for(int i=0; i<arr3.length; i++) {
System.out.println("arr3["+i+"]="+arr3[i]);
}
|
cs |
위의 코드를 for문으로 간단히 처리.
타입별 배열의 초기값
정수[] : byte, short, int, long의 기본값 = 0 , 0L
실수[] : float, double의 기본값 = 0.0F , 0.0
char[]의 기본값 : 공백(\u0000)
boolean[]의 기본값 : false
클래스[]의 기본값 : null => 예) String[]의 기본값 : null (nul : 아직 주소값이 할당되지 않았음.)
배열 생성 후 새로운 값 저장
변수[인덱스] = 값;
다차원 배열
행(row,줄)과 열(column,칸)로 구성된 배열을 2차원 배열
타입[][] 변수 = {{값1,값2,...},{값1,값2,...},...};
* 실행 결과
scores=[[I@15db9742
scores.length=3
scores[0]일 때
scores[0,0]=10
scores[0,1]=20
scores[0,2]=30
scores[0,3]=40
scores[0,4]=50
scores[1]일 때
scores[1,0]=10
scores[1,1]=20
scores[1,2]=30
scores[1,3]=40
scores[2]일 때
scores[2,0]=30
scores[2,1]=40
scores[2,2]=50
scores[2,3]=60
scores[2,4]=70
- 가변 배열
향상된 for문
for(타입 변수명 : 배열명 또는 컬렉션명){
반복실행코드
};
배열 및 컬렉션 항목의 개수만큼 반복하고, 자동적으로 for문을 빠져나감.
* 실행 결과
0번째값=10
1번째값=20
2번째값=30
3번째값=40
4번째값=50
5번째값=99
6번째값=100
총합sum=349
평균avg=49.0
int arr1[] = {10,20,30,40,50,99,100}; 일때
* 실행 결과
10
20
30
40
50
99
100