java 67

[TIL] 자료구조 - Autoboxing

※ Autoboxing - byte, short, int, char 등의 기본 자료형에 대해 Java 가상 머신은 정확하게 필요한 만큼의 메모리를 할당하지만 객체에 대해선 객체를 가리키는 4바이트짜리 포인터와 힙의 공간을 할당한다. 따라서, 기본 자료형은 객체가 아니고 이것들은 객체 메소드를 상속받지 않는다. 그러나 Java에는 기본 자료형뿐만 아니라 래퍼 클래스(Wrapper Class)가 존재하는데 이는 객체 버전의 기본 자료형이다. byte는 Byte, short는 Short, int는 Integer, char는 Char로 바꾸면 된다.

[TIL] 자료구조 - 매개변수화 타입

※ 매개변수화 타입 - 제네릭 프로그래밍을 구현하기 위해 매개변수화 타입을 사용할 수 있는데 꺾쇠괄호 에 Type Parameter 를 넣어 컴파일 시 구체적인 타입이 결정될 수 있도록 하는 방법이다. 이렇게 매개변수화 타입을 사용하려면 클래스, 함수를 정의할 때 아래 예시와 같이 수정하여 작성해야 한다. 다만, 생성자의 경우 예외적으로 E를 사용하지 않는다. //클래스 public class LinkedList public class LinkedList //함수 public void addFirst(String S) public void addFirst(E obj) public String removeFirst() public E removeFirst() 또 다른 예시로, 매개변수화 타입을 이용해 어떤..

[TIL] 자료구조 - 제너릭 프로그래밍

※ 제너릭 프로그래밍? - 다양한 자료형의 객체에 대해 작성한 코드를 재사용한다는 객체 지향 기법이다. public class ss{ public int[] superSort(int[] array){ // ...sort... return array; } } 위와 같은 정렬 알고리즘에서 정렬 함수를 int외 다른 자료형에 대해 사용하려면 제너릭 프로그래밍이 없을 경우 문자열이나 변경하고자 하는 객체로 바꾸어야 했을 것이나 제너릭 프로그래밍은 1가지의 코드만 작성해 다른 자료형에 대해 재사용할 수 있게 만들 수 있다. ※ 제너릭 클래스 설계 class 클래스이름 { // 메서드나 필드에 필요한 타입을 타입 매개변수로 나타낸다. 필드; 메서드; } - 제네릭 객체 생성 방법: 제네릭 클래스 변수 = new 제..

[TIL] 자료구조 - Comparable 인터페이스

※ Override String one = "hello world!"; String two = "hello world1"; //문자열 비교 if(one.equals(two)) System.out.println("they are the same"); one 의 hello world와 two의 hello world를 비교하는 자바 코드로 두 문자열을 비교하기 때문에 equals 메소드는 두 변수가 같다고 판단할 것이다. Object one = "hello world!"; Object two = "hello world1"; //문자열 비교 if(one.equals(two)) System.out.println("they are the same"); 하지만 이번엔 equals 메소드가 두 개의 메모리 주소를 비교..

[TIL] 자료구조 - 객체지향 프로그래밍

※ 객체의 메모리 할당방식 - new 를 이용해 객체(인스턴스)를 만들면 Java 가상 머신은 코드를 읽은 후 메모리가 얼마나 필요한지 계산하고 그만큼의 공간을 힙에 할당 한다. 그리고 힙에 있는 공간을 가리키는 4바이트짜리 포인터를 하나 만든다. Student s = new student(); ※ 상속(attribute) - 여러 객체가 있으면 상속을 활용해 객체 간의 관계를 나타낸다. 예시로 대학에 있는 People, Student, Undergraduate 클래스를 만든다. Person: 대학에 있는 사람. 변수는 redid(빨간 ID카드), name, email Student: 학생. 변수는 GPA(현재까지 수강한 수업들) Undergraduate: 학부생. 변수는 year 3개의 클래스를 구성하..

[TIL] 자료구조 - 빅 오 표기법

※ 빅 오 표기법? - 빅 오 표기법은 알고리즘의 효율성을 표시하는 표기법으로 한 알고리즘을 다른 알고리즘과 비교하여 표현하는 것이 가능하다. 위 그림에서 x축은 복잡도 n을, y축은 필요한 일의 양이나 메모리를 의미한다. 다른 알고리즘들이 이 표에서 어떤 위치에 있는지에 따라 복잡도 n인 알고리즘과 다른 알고리즘의 복잡도를 비교할 수 있다. 만약 다른 알고리즘이 복잡도 n인 알고리즘의 아래에 있을 경우 같은 일을 처리하는데 시간이 덜 들기 때문에 빠른 알고리즘이라고 한다. 하지만 복잡도 n인 알고리즘의 위에 있다면, 더 느린 알고리즘이다. - O (빅 오 복잡도): 비교 대상 그래프가 일치하거나 아래에 있을 때 비교 대상인 알고리즘과 같거나 빠르다. - Θ (세타 복잡도): 비교 대상 그래프가 일치하면..

[TIL] 자료구조 - 복잡성

※ 시간 복잡도 - 시간 복잡도는 서로 다른 알고리즘들의 효율성을 비교할 때 사용한다. 규칙 1. 입력값(n)은 항상 0보다 크다 - 일반적으로 입력값이 음수일 수는 없기때문에 복잡도는 항상 0보다 크다는 가정을 하고 계산을 해야한다 규칙 2. 함수는 입력값이 많을수록 많은 작업을 한다 - 더 많은 입력값이 주어지면 작업을 하는 데 필요한 계산이나 처리시간이 길어진다. 규칙 3. 시간 복잡도에서는 모든 상수를 삭제한다. - 만약 어떤 알고리즘의 복잡도가 3n이라면 3은 고려하지않고 복잡도는 n이 된다. 즉, 2n, 3n, 10n은 모두 복잡도가 n인 알고리즘이다. 규칙 4. 낮은 차수의 항은 무시한다 - 시간 복잡도에서 n과 n^2를 비교할땐 항상 n^2가 더 오래 걸리는 알고리즘이라고 판단한다. 하지만..