본문 바로가기

전체 글

(256)
Generic 활용 // 제너릭 사용 예제 public class Main_GenericEx { public static void main(String[] args) { // Student[] arr = new Student[10]; --> 보통은 배열을 이렇게 만들었지 // List에 무언가 담을건데, type은 Student로 할게--> 배열이랑 99% 흡사 // 1. ArrayList를 생성하고, Student 객체를 저장할 수 있는 리스트를 만듭니다. // ---> Student 클래스를 타입으로 지정할 수 있다! ArrayList list = new ArrayList(); // 2. 배열에 내용추가 list.add(new Student()); list.add(new Student()); list.add(new St..
Generic3 // extends : 제너릭 타입을 사용할 때 타입 매개변수의 상한을 정의하는 데 사용됨 // ex) // T extends Number는 T가 Number 클래스 또는 Number 클래스의 하위 클래스 중 하나인 타입만 허용함을 의미 class AAA{// E String클래스를 상속받겠다 public void processNumber(T number) { // T는 Number 또는 Number의 하위 클래스여야 함 } }
Generic2 // 활용 방법 public class Main_Generic2 { public static void main(String[] args) { AAA a1 = new AAA(); a1.v1 = "이것은 String"; a1.v2 = true; System.out.println(a1.v3); } } class AAA{ // 이렇게도 가능하다 Q v1; T v2; R v3; int v4; } // 약어 // T (Type): // T는 주로 제너릭 클래스나 메서드에서 타입 매개변수로 사용됩니다. // T는 "타입(Type)"을 나타내며, 제너릭 클래스 또는 메서드를 정의할 때 어떤 타입이든 가능하다는 것을 나타냅니다. // 예를 들어, ArrayList는 어떤 타입의 요소도 저장할 수 있는 제너릭 리스트를 나..
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..