728x90

Java 7

[자바] 제한된 타입 파라미터란 ?

모든 타입으로 대체할 수 없고, 특정 타입과 자식 또는 구현 관계에 있는 타입만 대체할 수 있는 타입 파라미터를 제한된 타입 파라미터라고한다 public 리턴타입 메소드(매개변수, ...) { ... } 예를 들어 위 코드의 T는 상위타입이거나 상위타입의 자식타입일 경우에만 대체 가능하다. 상위타입은 클래스뿐만 아니라 인터페이스도 가능한데, 인터페이스라고 해서 implements를 사용하지는 않는다. public boolean compare(T t1, T t2){ double v1 = t1.doubleValue();// Number의 doubleValue() 메소드 사용 double v2 = t2.doubleValue(); return (v1 == v2) } 타입 파라미터가 Number 타입으로 제한되면..

Java 2024.04.03

[자바] 제네릭이란 ?

제네릭(Generic)은 포괄적, 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법 결정되지 않은 타입을 파라미터로 처리하고 실제 사용할 때 파라미터를 구체적인 타입으로 대체시기는 기능. 마치 메소드 안에서 매개 변수와 비슷하게 동작할 수가 있다. 매개 변수는 어떠한 변수에 들어갈 값과 관련되어 있는데 제네릭은 그 변수의 데이터 타입과 관련되어 있다. 위 코드에서 Box의 클래스에 , 즉 public T content;에 T는 content라고 하는 필드의 데이터 타입이다. 위 코드 시점에서는 content의 데이터 타입을 명시적으로 지정하지 않은 상태이지만, 실제로 사용할 때, 인스턴스화할 때 String이라고 하는 구체적인 데이터 타입을 지정하게 되면 T의 데이터 타입은 String이라는 ..

Java 2024.03.28

[자바] Collections framework란 ?

위의 그림처럼 List와 Set은 Collection을 상속받지만, 구조상의 차이로 인해 Map은 별도로 정의되고, 자바에서는 다양한 상황에서 사용할 수 있는 다양한 컨테이너를 제공하는데 이것을 Collections framework라 부른다. 주요 인터페이스의 간략한 특징 인터페이스 설명 구현 클래스 List 순서가 있는 데이터의 집합으로, 데이터의 중복 허용 Vector, ArrayList, LinkedList, Stack, Queue Set 순서가 없는 데이터의 집합으로, 데이터의 중복 허용 x HashSet, TreeSet Map 키와 값의 한 쌍으로 이루어지는 데이터의 집합으로, 순서가 없음. 이때 키는 중복을 허용하지 않지만, 값은 중복될 수 있음. HashMap, TreeMap, Hashta..

Java 2024.03.19

[Java] 이것이 자바다(개정판) Chapter.5-7 ~ 10

다차원 배열 1차원 배열끼리 연결된 배열이 다차원 배열이다. 위 그림에서 값1 -> 배열변수[0][0][0] 값4 -> 배열변수[0][1][1] 값5 -> 배열변수[1][0][0] 라는 것을 알 수 있고, 배열변수.length -> 2 배열변수[0].length -> 3 배열변수[0][1].length -> 2 이 나오게 된다. 값 목록으로 다차원 배열 생성 1. 값 목록으로 다차원 배열 생성 int[][] scores = { // 대괄호가 2개이므로 2차원 배열 { 80, 90, 96 }, { 76, 88 } }; 위와 같을 때 int score = scores[0][2]; // 96 int score = scores[1][1]; // 88 scores.length // 2 scores[0].lengt..

Java 2024.01.29

[Java] 이것이 자바다(개정판) Chapter.5-6

배열(Array) 타입 연속된 공간에 값을 나열시키고, 각 값에 인덱스(index)를 부여해 놓은 자료구조이다. 타입이 같고, 값도 같은 유형을 갖고 있다면 배열을 쓰는 것이 가장 효율적이다. 배열 특징 : 배열 타입안에 들어간 값은 전부 같은 타입이다. 또, 한번 배열이 생성되면 배열의 크기, 길이는 변경할 수 없다. 위와 같을 때 score[0]은 83, score[1]은 90, score[2]는 87 이렇게 값을 가진다. int sum = 0; for(int i = 0; i < 30; i++){ // 30 대신에 score.length 들어갈 수 있음. sum += score[i]; } int avg = sum / 30; for 문을 통해 쉽게 구할 수 있다. 배열 변수 선언 배열을 사용하기 위해서..

Java 2024.01.23

[Java] 이것이 자바다(개정판) Chapter.5-5

문자열(String) 타입 자바의 문자열은 String 객체로 생성된다. 문자열 비교 String name1 = "홍길동"; String name2 = "홍길동"; 위와 같을 때 메모리 영역은 똑같다. 위와 같이 String 변수에 문자열 리터럴을 대입하는 것이 일반적이지만, new 연산자로 직접 String 객체를 생성하고 대입할 수 있다. String name1 = new String("홍길동"); String name2 = new String("홍길동"); 위와 같을 때 메모리 영역은 두개의 차이점은 첫번째는 리터럴을 대입했을 경우고, 두번째는 new 연산자로 새로운 객체를 만들어 대입한 경우이다. String name1 = "홍길동"; String name2 = "홍길동"; String name3..

Java 2024.01.23

[Java] 이것이 자바다(개정판) Chapter.5-1 ~ 4

참조타입 (reference type) 데이터 타입 분류 참조 타입이란 객체의 번지(메모리의 위치)를 참조하는 타입으로 배열, 열거, 클래스, 인터페이스 타입이 있다. 차이점 ? 기본 타입 변수는 값 자체를 저장하고 있지만, 참조 타입 변수는 객체가 생성된 번지(메모리의 위치)를 저장한다. 메모리 영역에서 위의 그림과 같이 price와 age는 직접 값을 저장하고 있지만, name과 hobby는 힙(heap) 영역의 객체 번지를 저장하고 참조한다. 메소드 영역(Method Area) : 자바 코드가 저장되는 부분, byte 코드가 저장되는 부분 힙 영역(Heap Area) : 객체가 생성되는 부분 스택(Stack) 영역 : 변수가 생성되는 부분 비교 연산 ==, != 변수의 값이 같은지, 아닌지를 조사한..

Java 2024.01.04
728x90