본문 바로가기

JAVA/DAY 08 _ 23.08.28

(12)
Q. 배열을 활용해서 2~100 정수 중 소수를 구해보자 // 셋팅 int[] arr = new int [99]; for(int i = 0 ; i 2 if(arr[i] != 0) { System.out.println(arr[i] + "는 소수"); for(int x = i+1 ; x < arr.length ; x++) {// x = 1~98 if(arr[x] != 0 && arr[x] % arr[i] == 0) { arr[x] = 0; } } } System.out.println(arr[i]); } // 1. arr[x] % arr[i..
Sorting Algoritm // Q. 1 2 4 7 8 9 로 정렬이 돼서 나오게 하려면? int [] arr = {7,4,2,1,9,8}; for(int i = 0 ; i < arr.length ; i++) { System.out.println(arr[i]); } // 정렬(sorting algorism) // 1. 선택 정렬 (7을 4,2,1,9,8과 각각 비교해서 7이 더크면 자리를 바꾼다!) System.out.println("=====selection sort====="); for(int x = 0 ; x < arr.length-1 ; x++) { // 5번만 비교하면되니까 6-1한거지 // x : 0 1 2 3 4 for(int y = x + 1 ; y < arr.length ; y++) {// y : 1 2 3 4 5..
foreach // 1. 일반 반복문 int[] arr = {5,3,2,2,7}; for(int i = 0 ; i < arr.length ; i++) { System.out.println(arr[i]); } // 2. 향상된 for문 (= foreach문) // 문법 : for(type+변수선언 : 반복가능한 변수(ex.배열)) for(int element : arr) { System.out.println(element); } for(int x : arr) { System.out.print(x); }
문자열 비교 String[] str3 = new String [3]; String[] str4 = new String [4]; str3[2] = "안녕"; str4[2] = "안녕"; if(str3[2] == str4[2]) { System.out.println("같다"); }else { System.out.println("다르다"); }// A. 같다. (안녕이라는 글자 자체에 주소값을 설정해둔거임) String str1 = new String("안녕"); String str2 = new String("안녕"); System.out.println(str1);// 안녕하세요 System.out.println(str2);// 안녕하세요 if(str1 == str2) {// A. 다르다. (두 참조변수의 주소값이 다르니..
참조 주소 String str1 = "안녕하세요"; String str2 = "안녕하세요"; System.out.println(str1); System.out.println(str2); if(str1 == str2) { System.out.println("같다"); }else { System.out.println("다르다"); } --> str1, str2 둘다 참조주소임 // heap메모리에 안녕하세요 라는 글자를 주소값을 설정해놓음. (문법적으로) 효율적으로 하기위해! // ---> 문자를 비교하는게 아니다. (주소값을 비교할 의도가 아닌이상 이렇게 하지마세요 ★★★)
이중배열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..