본문 바로가기

JAVA/DAY 08 _ 23.08.28

(12)
메모리의 소멸 // heap메모리의 소멸 // 메모리를 해제하지 않으면 메모리 누수가 발생하여 시스템 성능 저하나 리소스 낭비 등의 문제를 유발할 수 있음 // 1. stack메모리에 arr1생성, heap메모리에 00000 배열을 가진 0xFF11 주소값이 생성, arr1에 (0xFF11) 주소값 부여함 // 2. stack메모리에 arr2생성, heap메모리에 000 배열을 가진 0xFF22 주소값이 생성, arr1에 (0xFF22) 주소값 부여함 // 3. heap메모리의 주소값을 가르키는 참조변수(arr1, arr2)가 사라지면 heap메모리가 소멸이 된다! // = stack메모리가 소멸되면서(참조변수가 사라지면시) 가비지 컬렉션(Garbage Collection)이라는 메커니즘을 통해 동적 할당된 메모리를 ..
참조변수 & 힙메모리 // 참조변수 : 프로그래밍에서 객체에 접근하고 다루기 위해 사용되는 변수로, // '메모리 상의 객체를 가리키는 역할'을 함 (어딘가의 메모리를 가르킨다) // 1. (참조타입, 기본타입에 상관없이) 모든 지역변수(=형광노랑)는 stack memory에 쌓인다! // 2. 변수는 기본타입과 참조타입으로 나뉜다 --> 기본타입(int, double, boolean... 등등 8개) 이외에 모든 변수는 참조변수이다! int a = 10;// 변수 a의 타입 : int int[] arr = new int[5];// 변수 arr의 타입 : ? arr[0] = 10;// 이게 어떤걸 표현하는 문법일까? System.out.println(arr[0]); //arr = 10;---> arr 자체도 변수이다. 변수면..
배열2 // 배열2 int[] arr = new int[3]; //arr[0] = "하이";--> int대신 String을 써야겠지? arr[0] = 3; arr[0] = 1; arr[0] = 5; for(int a = 0 ; a arr[0]= 5로 최종 업데이트 됐고, 1,2번째는 0으로 뜬다. } int[] arr2 = {3, 1, 5};// 이렇게 쓰는 방법도 있긴함. String[] words = new String[4]; words[0] = "하이 "; words[2] = "반가웡"; for(int i = 0 ; i < words.length ; i++) { System.out.println..
배열1 scores[0] = 10; scores[1] = 20; scores[2] = 30;// 3개의 값을 넣을 수 있는 int배열에 값을 넣는 과정. //scores[3] = 40; ---> 4번째 자리는 없는데...? 'ArrayIndexOutofIndex'로 error가 뜨면서 실행이 안된다!! System.out.println(scores[2]);// 30 for(int i = 0 ; i < 3 ; i++) { System.out.println(scores[i]);// 10 20 30 } for(int i = 0 ; i < scores.length ; i++) { System.out.println(scores[i]);// 배열의 변수명.length하면 배열의 길이를 알려준다! }