본문 바로가기

JAVA

(158)
이중배열2 int[] arr1 = new int[3]; // Q. 문법적으로 프로그래머가 다룰 수 있는 변수의 수는? ( ?? = ?? ) // A. arr1[0], arr1[1], arr1[2], arr1 = null.... 이렇게 4개 int[][] arr2 = new int[4][3]; // A. 4*3 = 12개, arr2 = null, arr2[0], arr2[1], arr2[2], arr2[3] --> 총 17개겠지뭐 // 생성순서 // 1. stack메모리에 arr2생성, heap메모리에 0000로 1중배열을 가진 주소값 0xFF11생성, arr2에 주소값 부여 // 2. heap메모리에 000 배열이 총4개가 생성됨 (0xAA11, 0xBB11, 0xCC11, 0xDD11) // 3. 0xFF11의 ..
이중배열 // 그냥 배열이 선이라면, 이중배열을 면임!(= 표) // 2중 배열을 쓴다면 --> 2중 for문을 사용해야함 ★★★★ int[][] arr = new int[4][3];// 세로로 4줄, 가로로 3칸 생성된다고 생각하자 // (= 총 12개의 int값을 넣을 수 있는 2중배열) arr[2][1] = 10;// 3번째줄 2번째칸에 10이 입력됨 arr[1][0] = 50;// 2번째줄 1번째칸에 50이 입력됨 // --> 이상태로 끝내면 나머지 10칸들은 0임 for(int x = 0 ; x < arr.length ; x++) { for(int y = 0 ; y < arr[x].length ; y++) { System.out.println(arr[x][y]); } } // 구구단에서도 x단에서 y로 ..
메모리2 int[] arr1 = new int[5]; arr1[0] = 50; arr1 = new int[7]; System.out.println(arr1[0]); // 1. stack메모리에 arr1을 생성, heap메모리에 00000배열을 가진 0xFF11 생성, arr1에 주소값 부여 // 2. arr1가 가르키는 주소값(0xFF11)의 [0]번째에 50을 넣어라 // 3. heap메모리에 0000000배열을 가진 0xCC11생성, arr1에 주소값 부여 // (= heap메모리의 0xFF11 주소값과 모든 정보들은 소멸된다) // 4. arr1이 가르키는 주소값에 아무런 정보도 입력되지 않은 상태에서 syso를 하면 0이 출력됨! int[] arr1 = new int[3]; { int[] arr2 = ne..
메모리의 소멸 // 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하면 배열의 길이를 알려준다! }
알고리즘 Basic // ex)입력 : 입력은 다음 형식의 표준입력으로 제공된다. (A B C D E F X) // ex)제약 : 1 시작하는 순간 입력받는 도구를 선언해야함 // 3. scn.nextLine(); --> 무조건 문자로 return해줌 Scanner scn = new Scanner(System.in); System.out.print("값 입력 > "); // ln을 제외해야 input처럼 뭔가를 작성할 수 있겠지 String inputValue = scn.nextLine();// 위 3줄 = 파이썬의 input // (값 입력 > 에서 멈춰있다. 작성을해야 넘어감!) // System.out.println("입력 받은 값 : " + inputValue);// 테스트 코드 String [] inputs = i..