변성이란? 변성(Variance)은 서로 다른 타입 간에 어떤 관계가 있는지를 나타내는 개념이다. 변성에는 공변, 반공변, 무공변(불공변)이 있는데 각 변성의 특징은 다음과 같다. Child가 Parent의 하위 타입일 때, 공변 Child[]는 Parent[]의 하위 타입이다. List는 List의 하위 타입이다. 반공변 Parent[]는 Child[]의 하위 타입이다. List는 List의 하위 타입이다. 무공변(불공변) List와 List는 서로 다른 타입이다. // 공변성 Number[] covariance = new Integer[5]; // 반공변성 Integer[] contravariance = (Integer[]) covariance; 마치 업캐스팅, 다운캐스팅의 개념과 유사하다고 볼 수 ..
타입 형 변환 int x = (int) 10.0; 대입 연산자를 기준으로 오른쪽 값을 왼쪽 값에 맞추는 것이 기본 규칙이다. 10.0의 기본 타입은 double인데 왼쪽 타입이 int 이므로 캐스팅을 통해 타입을 맞춰주게 된다. 이 타입 형변환을 객체간에서도 구현해줄 수 있다. Strongly typed language 자바는 데이터 타입을 미리 정의해서 사용하고 한 번 정의된 데이터 타입은 프로그램 종료까지 변하지 않는 강한 타입의 언어이다. 프로그램 개발에 있어서 명확함과 구체성을 제공한다는 장점과 유연성이 제약된다는 단점이 있다. 여기에 대한 예외가 하나 존재하는데 그것이 객체간 타입 형변환을 가능하게 하는 지점이다. 객체간 타입 형변환 상속 관계에서 자식 클래스가 부모 클래스 타입으로 참조되는 것..
제네릭이란?! 제네릭은 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법이다. ArrayList list = new ArrayList(); 주로 Collection Framwork를 선언할 때 꺽쇠 괄호() 를 함께 사용하는데 그 꺽쇠 괄호가 제네릭이다. 괄호 안에 타입을 쓰면 해당 컬렉션의 자료형 타입이 지정되는데 위 예제의 경우 list에는 Integer 타입만 저장할 수 있게 된다. 제네릭에 대해 공부하기 전에는 변수에 타입을 지정하듯이 컬렉션에 타입을 지정하는 것이라고 추측하였었는데 맞는 말이긴 하지만 변수 타입보다 더 깊은 내용이 있다. String[] str = new String[5]; ArrayList list = new ArrayList(5); 제네릭 타입 매개변수 정의 제네릭..
개요 배열은 프로그래밍이나 알고리즘을 풀 때 항상 사용하게 되는 자료형인데 사용할 때마다 새로운 것을 알게되는 것 같다. 기초이자 너무나 중요한 요소이기 때문에 새로운 것을 알게될 때마다 업데이트를 하고 두고두고 찾아보고자 개념 정리를 해보기로 하였다! 배열 선언 & 초기화 배열을 선언할 때 미리 타입과 크기를 지정해주어야 한다. // int 형 배열 선언 & 초기화 int[] score = new int[5]; // int 타입의 값 5개가 저장될 빈 공간 생성 // 초기화 score[0] = 10; score[1] = 20; score[2] = 30; score[3] = 40; score[4] = 50; // for문으로 배열을 순차적으로 순회에 값을 넣어주는 방법도 있다. for(int i = 0;..
자바의 메모리 구조 정적 영역(Static/Method) 런타임 상수 풀, 멤버 변수(필드), 클래스 변수(static), 상수(final), 생성자와 메소드 등을 저장하는 공간 JVM이 동작해서 클래스가 로딩될 때 생성 프로그램의 시작부터 종료가 될 때까지 메모리에 남아있게 되며 어느곳에서나 접근이 가능. 스택 영역(Stack) primitive 타입(int, double, long, boolean 등)의 지역변수, 매개변수 데이터 값과 참조형 데이터의 주소값을 저장하는 공간 메소드가 호출될 때 메모리에 할당되고 종료되면 메모리에서 사라짐 힙 영역(Heap) 참조형 데이터 타입인 객체와 배열 등을 저장하는 공간 JVM이 관리하는 프로그램 상에서 데이터를 저장하기 위해 런타임 시 동적으로 할당 메모리 호..
- Total
- Today
- Yesterday
- Spring
- 백준
- JavaScript
- DP
- Comparator
- JPA
- BFS
- 해시맵
- 자바dp
- SQLD
- 자바
- 자바스크립트
- 타입스크립트
- CS
- 이분탐색
- 자바트리
- 형변환
- 스프링부트
- Algorithm
- SQL
- Nest
- 프로그래머스
- dfs
- 리액트
- Queue
- 스프링
- java
- 자바bfs
- 정렬
- 알고리즘
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |