본문 바로가기

JAVA/DAY 18 _ 23.09.11

(16)
Generic // 제너릭: // --> 코드의 재사용성과 타입 안정성(type safety)을 향상시키는 도구 // --> 다양한 데이터 타입을 처리하는 클래스나 메서드를 작성할 때 사용 // 활용 // 1. 클래스 제너릭: 클래스에 대한 타입 매개변수를 사용하여 클래스 내부에서 다양한 타입의 데이터를 처리할 수 있게 함 //ex) ArrayList와 같이 제너릭 클래스를 사용하여 다양한 타입의 요소를 저장할 수 있는 동적 배열을 생성할 수 있음 ArrayList integerList = new ArrayList(); ArrayList stringList = new ArrayList(); // 2. 메서드 제너릭: 메서드에 대한 타입 매개변수를 사용하여 메서드 내에서 동적으로 데이터 타입을 처리할 수 있게 함 // ..
Integer Class // Integer 타입 : 기본형 타입(Primitive Type)인 int형의 박싱(boxing)한 결과. // int형을 객체로 쓰기위한 객체이며, 래퍼 클래스로 감싸고 있는 기본형 타입의 값임!!! // Integer.parseInt(null); // --> null을 넣을 수는 있다구. int a = Integer.parseInt("10"); System.out.println(a); // int a2 = Integer.parseInt("찐 문자열을 넣으면 exception을 부르지"); int a2 = Integer.parseInt("ffff", 16); // 문자열을 넣고, 16진수로 받으면 값이 나오긴해... (8진수도 된다) System.out.println(a2); int a3 = Int..
Wrapper Class2 // Wrapper Class 웬만하면 사용하지 않기! // 특히!! 연산하는 경우.. 절대절대 X Integer sum = 0; for(Integer x = 0 ; x int처럼 똑같이 쓸 수 있다. 하지만 잘못된 예제라는 점.... // heap메모리 생성, 언박싱해서 메모리생성하여 x에 넘겨줌... // 참조주소 값 sum에 참조주소 값 x를 더해서.... // 메모리를 다시 생성해서 primi로 다시 언박싱하고.... // --> 반복문 돌때마다 메모리의 생성, 소멸, 언박싱이 반복되고있다! 빡세다!~ // ======== Wrapper class를 활용하는 경우? =============== ..
Wrapper Class // Wrapper Class : 기본타입에 해당하는.. 포장클래스 // (ex: int, float, boolean)을 객체로 래핑하는 클래스 // 이러한 클래스들은 기본 데이터 타입을 객체로 다룰 수 있도록 도와줌 // 1. Integer: int의 래퍼 클래스로서 정수 값을 다루는데 사용 // 2. Double: double의 래퍼 클래스로서 부동 소수점 값을 다루는데 사용 // 3. Boolean: boolean의 래퍼 클래스로서 논리값을 다루는데 사용 // 4. Character: char의 래퍼 클래스로서 문자를 다루는데 사용 // ex) // Integer a = new Integer(42); // int를 래핑한 Integer 객체 // int value = a.intValue(); // ..
Hash Code2 public class Main_HashCode2 { public static void main(String[] args) { Student s1 = new Student(); s1.name = "한조"; s1.age = 30; s1.score = 60; Student s2 = new Student(); s2.name = "한조2"; s2.age = 30; s2.score = 60; System.out.println(s1.hashCode()); System.out.println(s2.hashCode()); // 내가만든 hashcode 메서드에서 둘다 1 반환되고있으니까 1이겠지. } } class Student{ String name; int age; int score; // Object class h..
Hash Code public class Main_HashCode { public static void main(String[] args) { // Object Hash Code // -> 무한대의 문자열이 있을 때 특정범위의 숫자로 hashing해줌 // -> 반복문 돌리면서 하나하나 비교할 필요가 없다는것 // -> 그 안녕하세요 비교할때 기억나지? 그게 이거임 String str1 = "하이"; int code1 = str1.hashCode(); System.out.println(code1); String str2 = "하이"; int code2 = str2.hashCode(); System.out.println(code2); if(str1.equals(str2)) {// 문자열 비교니까 -> 같다 System.ou..
Object _ Equals Overiding public static void main(String[] args) { /// Object Equals Student s1 = new Student(); s1.name = "한조"; s1.age = 30; s1.score = 70; Student s2 = new Student(); s2.name = "한조"; s2.age = 30; s2.score = 70; if(s1 == s2) {// 다르다 System.out.println("같다"); }else { System.out.println("다르다"); } if(s1.equals(s2)) {// 직접 오버라이딩 전: 다르다 (당연히 참조주소 비교니까) / 후 : 같다 System.out.println("같다"); }else { System.out.pri..
Object Class ** Object클래스의 toString() 메서드를 오버라이드하여 객체의 문자열 표현을 정의 // 객체가 가진 주요 정보를 모두 반환하는 것이 좋음 // 이상적으로는 스스로를 완벽히 설명하는 문자열이어야 함! // -> 해당 객체를 출력하거나 문자열로 변환할 때 유용 // -> 또한 디버깅 목적으로 객체의 내용을 확인하는 데도 도움이 됨 // Date에서의 toString호출 Date d = new Date(); System.out.println(d);// Mon Sep 11 09:32:22 KST 2023 // Q. d는 왜 이렇게 나올까? 주소값이 아니라 // A. Date 클래스에서는 toString() 메서드가 오버라이드(Override)되어 있어서, // Date 객체를 출력할 때 해당 객체의..