본문 바로가기

분류 전체보기

(748)
제네릭 프로그래밍 Q1. 제네릭 프로그래밍이란 무엇인가? 제네릭 프로그래밍을 사용함으로써 얻는 이점은 무엇인가? - 제네릭 프로그래밍이란 Q2. 제네릭 프로그램이 참조 자료형으로 변환될 때, 검증을 무엇이 하는가? 그로 인한 이점이 무엇인가? - 컴파일러가 합니다. 그로 인한 이점은 컴파일 타임에 오류를 검증해낼 수 있다는 것입니다. Q3. 제네릭 프로그래밍이 아닌 Object 클래스를 사용했을 때의 단점은 무엇인가? - 데이터를 꺼내올 때 추가적으로 직접 형변환을 해줘야 한다는 것입니다. Q4. 왜 static 변수의 자료형이나 static 메서드 내부 변수의 자료형으로 제네릭을 사용할 수 없는가? Q5. 제네릭이 있기 전에는 어떤 일이 발생했는가? Q6. 왜 로 타입은 사용하지 말아야 하는가? Q7. 애초에 왜 로 타..
Wrapper 클래스 Q1. Wrapper 클래스란 무엇인가? - 기본 자료형을 참조 자료형으로 변환하여 나타낸 클래스를 의미합니다. Q2. 오토박싱과 언박싱이란 무엇인가? - 기본 자료형을 참조 자료형으로 바꾸는 것을 오토박싱, 참조 자료형을 기본 자료형으로 바꾸는 것을 언박싱이라고 합니다. 참고 - Do it 자바 프로그래밍 입문(Q1~Q2) - 5.13(Q1~Q2) - 5.14(A1~A2)
String 클래스 Q1. String str1 = new String("abc")와 String str2 = "test"의 차이점은 무엇인가? A1. new String("abc")는 힙 메모리에 객체가 선언되고, "test"는 상수 풀(constant pool)에 선언됩니다. Q2. String 클래스는 어떤 char[]형 배열로 선언되어 있고, 그로 인해 생기는 결과는 무엇인가? - String 클래스는 private final char[]형 배열로 선언되어 있습니다. 그로 인해 String 클래스는 불변(immutable) 클래스가 됩니다. Q3. StringBuffer 클래스와 StringBuilder 클래스가 해결하는 문제는 무엇인가? - String 클래스가 불변 클래스이기 때문에, 객체 끼리 값을 더할 때마다..
equals()와 hashcode() Q1. equals() 메소드의 기능은 무엇인가? A1. equals() 메소드는 두 객체를 비교하는 기능을 합니다. 두 객체의 해시코드 값을 비교해서 같은 true를, 다르면 false를 반환합니다. Q2. hashcode() 메소드의 기능은 무엇인가? A2. hashcode() 메소드는 객체의 메모리 주소를 생성하는 메소드입니다. Q3. toString() 메소드의 기능은 무엇인가? A3. toString() 메소드는 객체의 클래스 명과 16진수 해시코드 값을 반환하는 메소드입니다. Q4. 왜 equals() 메소드를 오버라이딩해서 재정의 해야 하는가? A4. equals() 메소드는 두 객체의 해시코드 값을 비교하는데 이를 물리적 비교라고 합니다. 그런데, equals() 메소드를 통해 두 객체를 ..
비트 연산자 1. bit와 byte - 컴퓨터는 전자기기임. 즉, 모든 작업을 할 때 전기가 필요함 -> 그런데, 어떻게 전기로 이러한 작업들이 가능할까? - 가장 쉽게 생각하려면 전구를 생각하면 됨 -> 불이 꺼져 있거나 불이 켜져 있거나 -> 컴퓨터는 이러한 단순한 이론에서 시작되어 만들어졌고, 이 기본 사항은 아직 바뀌지 않음 - 즉, 기본적인 처리는 0과 1, 꺼져 있는 것과 켜져 있는 것으로 나뉨 -> 1 bit라는 것은 0과 1로 표시할 수 있는 하나의 단위임 -> 그리고 8 bit는 1 byte가 됨 - 8비트로 나타낼 수 있는 수는 8칸의 공간이 있고, 0과 1로 표현이 가능하기 때문에 2x2x2x2x2x2x2x2 = 256가지의 표현이 가능함 -> 여기서 8비트를 4자리씩 끊으면 4비트 두 개로 표현..
JVM JVM이란? - Java Virtual Machine 목표 - JVM의 역할 이해 - JVM의 내부 구조 이해 본문 1) JVM의 3가지 개념 - JVM은 3가지 개념을 담고 있습니다. 그것은 명세, 구현, 인스턴스입니다. 명세 - JVM은 자세한 설계도가 아닌 이렇게 저렇게 해야 한다는 식의 표준화된 정의로 존재합니다. 구현 - 각 JVM 벤더들(Oracle, IBM 등)은 표준화된 정의에 기반해 자신들의 JVM을 별도로 구현하여 사용합니다. 인스턴스 - JVM은 자바 바이트코드로 컴파일된 컴퓨터 프로그램을 실행하는 프로세스입니다. 2) Java 프로그램의 수행 과정 (1) 자바 컴파일러가 자바 소스파일을 컴파일하여 자바 바이트코드(.class 파일)를 생성합니다. (2) 클래스 로더가 .class 파..
0518 TIL 3F #1 1. Fact - 코드숨 강의를 완강했다 -> 디버깅을 하는데 2시간, 강의를 듣는데 2시간 정도 시간을 사용했다. - 코딩테스트 준비를 했다 - 자바 기본 책과 자료구조 도서로 컬렉션 프레임워크 관련된 내용을 정리했다. - 코딩테스트 문제를 푸는데, 클래스에 멤버 변수를 초기화하는데 public을 써야 하는지 아닌지를 고민했다. 2. Feeling - 시간을 효율적으로 쓰지 못한 느낌이다. - 코딩테스트 문제를 풀면서 기본기가 많이 부족하다고 느꼈다. 3. Finding - 공부할 것이 많은만큼 시간은 한정적인 자원이라는 점을 기억해야 한다 -> 한정적인 자원을 최대한 효율적이고 효과적으로 사용해야 한다. - 주도적으로 움직이며, 목표 지향적으로 사고해야 한다. 그리고 가장 중요한 것을 먼저..
0517 TIL 3F #1 1. Fact - 처음에 Github에서 프로젝트를 Git Clone한 후에, 테스트 폴더 설정을 하는데, 즉 트러블 슈팅하는데 시간을 쓰고, 코드숨 채널을 통해 질문을 드렸다. 그리고 이후에 '배워서 바로 쓰는 스프링 부트2'를 통해 관련된 파트를 공부했다. 2. Feeling - 관련된 파트를 공부하면서, 지식이 채워지는 느낌이 들었다. - 이전에 내가 경험했던 문제가 더 쉽게 느껴졌다. 3. Finding - 트러블 슈팅에 있어서, 문제 해결이 잘 되지 않는 이유가, 내가 지금 당면한 문제와 연관된 지식이 부족해서 일 수 있다는 점을 깨달았다. -> 지식이 부족하기 때문에 머리에서 사고 작용이 원활하게 작동하지 않고 그로 인해서 문제가 잘 해결되지 않을 수 있음을 깨달았다 - 문제 중심의..