참조(Reference) p144 -147
자바 프로그램의 실행 시 사용하는 메모리 영역의 구성
자바는 메모리 영역을 크게 Method영역, Call stack영역, Heap 영역으로 분할하여 사용
Method 영역 : class를 배치하는 영역(설계도 책상)
여기서 만들어지는 변수를 클래스(스태틱) 변수라고 함
heap 영역 : 생성한 Instance(인스턴스)를 배치하는 영역, 인스턴스가 배치되고 동작하는 공간
여기에 만들어지는 변수를 인스턴스 변수라고 함
Call Stack 영역 : 호출되는 메소드가 위치하는 영역, 기계어로 번역된 메서드(함수) 코드가 실행되는 영역
여기에 만들어지는 변수를 지역local 변수라고 함.
p149
null(널) : 참조 변수에 값(인스턴스의 주소)이 저장되지 않은 상태, 널로 초기화한다.
참조 변수에 주소가 저장되지 않은 인스턴스 : 쓰레기(Garbage)
Garbage Collector : 쓰레기 인스턴스를 수거하는 장치
자바는 G.C를 자동으로 제공하지만, 일부 처리되지 않는 쓰레기도 있다.
NullPointerException
변수가 null인 상태에서 참조변수를 사용하려고 할 때 발생하는 예외
스택(Stack)
자료구조(Data Structure)의 하나로 일명 막힌 항아리 구조의 자료공간
밑에서부터 차곡차곡 쌓는 형태로 자료를 관리한다.
비우려면 반드시 위에서부터 자료를 제거해야 한다.
Last In First Out(LIFO) <또는 First In Last Out(FILO)>
참조형 heap영역에 저장
배열(Array)
변수 - 배열 - 객체
동일한 자료형의 변수 묶음
크가가 반드시 지정되어야 한다. 한번 크기가 정해지면 크기변경이 불가!
배열을 선언(생성)할 때만 크기를 지정할 수 있음
자료의 선언)
자료형 배열명[] = new 자료형[크기];
=> 크기만 지정하고 배열에 값을 넣지 않음.
이때 모든 배열에는 0에 해당하는 값이 저장됨.
p 172
정수 : 0, 실수 : 0.0, 참조형 : null.
자료형 배열명[] = new 자료형[크기] {v1, v2, v3, ......., vn};
자료형 배열명[] = {v1, v2, v3, ......., vn};(약식) //데이터의 값만큼 크기 지정
=> 선언과 값 입력(초기화)를 동시에, 입력(작성)된 값의 개수만큼 크기지정
import java.util.Scanner;
public class ArrayClass {
public static void main(String[] args) {
// 배열 선언 정수
int intArray[];
// 배열 생성
intArray = new int[5];
int iArray[] = new int[5];
for(int i = 0; i < 5; i++){
System.out.println(intArray[i]);
}
boolean bArr[] = new boolean[5];
for(int j = 0; j < 5; j++){
System.out.println(bArr[j]); // false = 0
}
// 배열의 순번(번지수)은 0으로 시작
intArray[0] = 10;
System.out.println(intArray[0]);
// 마지막 순번은 크기 - 1
intArray[4] = 50;
System.out.println(intArray[4]);
// 학생 수 만큼 성적을 저장하는 배열
Scanner scan = new Scanner(System.in);
System.out.print("학생 수 : ");
int num = scan.nextInt();
// 배열 생성
int score[] = new int[num];
// score.length = num
for(int k =0; k < score.length; k++){
System.out.print((k + 1) + "번 학생 점수 : " );
score[k] = scan.nextInt();
}
//총점 구하는 변수
int sum = 0;
// 향상된 for문, forEach, 이 형식의 for문은 읽기 전용임
for(int s : score){
sum += s;
}
System.out.println("총점 : " + sum);
}
}
'공부기록 > Java' 카테고리의 다른 글
4월 11일 (2) Java - 변수 용어, 저장 위치 (0) | 2023.04.11 |
---|---|
4월 11일 (1) Java - 배열, 리스트 (0) | 2023.04.11 |
4월 10일 (1) Java - 제어문 (0) | 2023.04.10 |
4월 7일 (2) Java - 연산자 (0) | 2023.04.07 |
4월 7일 (1) Java - 인스턴스, 형 변환, Scanner (0) | 2023.04.07 |