Java/정리42 [Java] 배열복사 1. 배열 복사 1-1. 얕은 복사 : 배열의 주소만을 복사 : 객체의 주소값만 가져와 참조형 변수에 저장하고 하나의 객체를 두 변수가 참조하는 것 int[] origin = new int[4]; int[] copy = origin; //origin의 주소값이 copy로 대입 ▶ heap영역에 객체 하나만 저장됨 → 주소값 같음 ▶ origin, copy 모두 배열에 동일하게 접근 가능 int[] originArr = {1,2,3,4,5}; int[] copyArr = new int[10]; copyArr = originArr; //originArr의 주소값이 copyArr로 대입 //같은 객체를 참조하는 것으로 바뀌어 copyArr은 길이 5 System.out.println("===== 변경 전 ==.. 2021. 5. 11. [Java] Math.random() random 범위가 헷갈려서 정리를 해둔다. 다음에는 틀리지 않아야지! 1. Math.random( ); → 0.0 ~ 0.9999... //int random = Math.random(); // double형이라서 안됨 // 0.0 0.0 ~ 0.99999... //int random = Math.random() * 10; //0.0 0.0 ~ 9.99999... //int random = Math.random() * 10 + 1; //1.0 1.0 ~ 10.9999... int random = (int)(Math.random()*10 +1); // 1 1 ~ 10 Random); 1) Math.random( ); → 0.0 2021. 5. 8. [Java] 2차원 배열 & 가변배열 1. 2차원 배열 : 자료형이 같은 1차원 배열의 묶음, 배열 안에 다른 배열 존재 자료형[][] 배열이름 = new 자료형[행크기][열크기]; 자료형 배열이름[][] = new 자료형[행크기][열크기]; 자료형[] 배열이름[] = new 자료형[행크기][열크기]; 2. 메모리 배열은 스택영역에 저장된 것과 같이 111번지를 참조한다. 힙영역에서 111번지에는 행의 개수만큼 공간이 존재한다. 그 공간들(즉 배열의 각 행)은 또 다시 주소값( 0x222, 0x333, 0x444 )을 가진다. 각각의 주소값(0x222, 0x333, 0x444)에 실제로 데이터가 저장된다. 그러므로 실제 데이터를 얻고싶다면 Array[0]이 아닌 Array[0][0]으로 써야한다. Array[0] : 0x111번지 Array.. 2021. 5. 6. [Java] 배열 1. 배열 선언 자료형[ ] 배열명; 자료형 배열명[ ]; ▶ int[ ] arr; : arr 이란 변수 생성 → 배열의 주소값이 담김(0x200) 2. 배열 할당 → 할당되고 나면 크기는 나중에 변경이 불가능하다. 자료형[ ] 배열명 = new 자료형[배열크기]; 자료형 배열명[ ] = new 자료형[배열크기]; ▶ arr = new int[3]; : 3개의 칸이 있는 배열 생성, 배열의 값이 0x200번지에 저장됨 ( ※ 0x : 16진수 ) int[ ] myArray = new int[5]; 참조변수로 데이터 값은 heap영역에 할당되며 stack에 배열공간의 주소를 저장한다. stack영역에 있는 배열공간의 주소를 이용해 배열의 인덱스를 참조하여 값을 가져옴 3. 배열 초기화 3-1. for문을 .. 2021. 5. 5. [Java] 조건문_Continue, Break 1. for문 생략 (초기값, 조건식,증감식 모두 생략) int l = 0; for(;;) { if(l 2021. 5. 5. [Java] (int, character) & (String) 값 비교 1. int , character 값 비교 Scanner sc = new Scanner(System.in); char num = sc.nextLine().charAt(0); String order = num == '1' || num =='2' ? "음료" : (num == '3'? "디저트" : "잘못 입력하셨습니다."); System.out.println(order); ▶ char형인 num과 int형인 1,2,3을 비교하고 싶다면? 정수인 1,2,3에 작은 따옴표('')를 씌워준다. num == '1' num == '2' num == '3' → 위와같이 정수에 ' '를 씌워 char로 만들어서 char형인 num과 값을 비교할 수 있다. 2. String 값 비교 System.out.print("문자.. 2021. 5. 5. [Java] 입력 버퍼 비우기(Next(), NextLine()) 1. 왜 이런 결과가 나오지? public void inputScanner2() { Scanner sc = new Scanner(System.in); System.out.println("이름 : "); String name = sc.nextLine(); System.out.println("나이 : "); int age = sc.nextInt(); System.out.println("주소 : "); String address = sc.nextLine(); System.out.println("키 : "); double height = sc.nextDouble(); 위와 같이 Scanner를 이용해서 사용자로부터 이름, 나이, 주소, 키를 순서대로 입력받는 소스코드를 작성했다. 변수 name에는 '이름'이 s.. 2021. 5. 4. [Java] IdentityHashcode & Hashcode 2-1. IdentityHashcode 1)리터럴 stringpool(heap에 있는 영역 중 하나) 에 담긴다. 이미 값이 있으면 새로 주소를 생성하지 않는다. 2) new heap에서 무조건 새로운 인스턴스 객체를 생성한다. (동일값 존재유무 상관없이) 반환 타입이 참조형이라는 것은 객체의 주소를 반환한다는 것을 의미한다. 3) example public void stringTest() { String s = "안녕하세요"; //stringpool생성됨 String s1 = "안녕하세요"; //이미 존재 String s2 = new String("안녕하세요"); //heap생성 System.out.println("*1--------------------------------"); System.out... 2021. 5. 3. [Java] 메모리구조 & 참조변수 1. 메모리 구조 메모리 공간은 Static영역, Stack영역, Heap영역으로 구분되고, 데이터타입(자료형)에 따라서 해당 공간에 할당된다. 1) Static 하나의 JAVA 파일은 크게 필드(field), 생성자(constructor), 메소드(method)로 구성된다. 필드 부분에서 선언된 변수(전역변수)와 정적 멤버변수(static이 붙은 자료형) Static 영역에 데이터를 저장한다. Static 영역의 데이터는 프로그램의 시작부터 종료가 될 때까지 메모리에 남아있게 된다. 다르게 말하면 전역변수가 프로그램이 종료될 때까지 어디서든 사용이 가능한 이유이기도 하다. 따라서 전역변수를 무분별하게 많이 사용하다 보면 메모리가 부족할 우려가 있어 필요한 변수만 사용할 필요가 있다. 2) Heap 참조.. 2021. 5. 3. 9회차_반복문(do ~ while문) 1. do ~ while 1) do 내용 실행 후, 끝에 있는 (조건식)을 확인하고 true면 do아래 내용을 수행하고, false면 종료한다. 2) while; --> while뒤에 ; 붙여야 한다. 3) 조건식이 true가 아니더라도 do 부분을 무조건 한 번 이상 수행하게 된다. * 작성예시 1 조건을 만족할 때까지 반복 int i = 0; do { System.out.println(i + "번째 i 출력"); i++; }while(i 2021. 4. 19. 7회차_제어문(switch문_return/break 차이) if문과 switch문에 대한 강의였는데 if문은 강의내용만큼은 알고 있어서 정리하지 않고 swtich에서 기억했으면 하는 부분만 정리를 했다. 1. swtich문 1) switch문 괄호 안에는 정수, 문자, 문자열만 기입 가능하다. 2. switch문 예 //1~12월까지 입력받아 해당하는 달의 마지막 날짜를 출력하세요 Scanner sc = new Scanner(System.in); System.out.print("1~12월 까지중 하나를 입력하세요 : "); int month = sc.nextInt(); switch(month) { case 1 : case 3 : case 5 : case 7 : case 8 : case 10 : case 12 : System.out.println("입력하신 월은 .. 2021. 4. 19. [Java] 연산자 1. 단항 연산자 1) 전위 연산: 먼저 연산 후 다른 연산 실행 (++) int a = 10; int b = ++a; System.out.println(a + ", " + b); //결과: 11, 11 2) 후위 연산: 다른 연산 우선 실행 후 연산 int a = 10; int b = a++; System.out.println(a + ", " + b); 결과: 11, 10 ** 예시1 : d는 후위연산자(--)로 인해 g값 계산할 때는 2로 연산되지만 1이 담긴다. int b = 10; int d = 2; int g = (--b) + (d--); //9 + 2(1) = 11 System.out.println("b = " + b); //9 System.out.println("d = " + d); //1 .. 2021. 4. 12. 이전 1 2 3 4 다음