본문 바로가기
728x90

java14

Annotation 어노테이션은 메타데이터의 한 형식이다. 어노테이션은 어노테이션을 달은 연산에 대해 직접적인 영향을 주지 않는다. 어노테이션을 다음과 같은 목적으로 사용될 수 있다. 1. Information for the compiler: 어노테이션을 통해 에러를 찾아내고 경고를 억제할 수 있다. 2. Compile-time and deployment-time processing: 소프트웨어 툴들은 어노테이션을 실행해 코드를 나타낼 수 있다. 3. Runtime processing: 일부 어노테이션들은 런타임에 검증되는 데에 사용될 수 있다. Annotations Basics The Format of an Annotation 어노테이션에서 '@'는 컴파일러에게 다음에 오는 것이 어노테이션임을 알려주며 어노테이션은 다음과.. 2022. 4. 23.
String Java의 String은 두 가지 방법으로 생성할 수 있다. 하나는 new를 통한 생성이고 하나는 리터럴을 통한 생성이다. 1 2 String str1 = "hello"; // 리터럴을 사용한 생성 String str2 = new String("hello"); // new를 통한 생성 cs 이 두 방식은 겉보기에는 같지만 리터럴은 String 값이 Heap 메모리 내의 Constant Pool에 저장되어 재사용 된다는 차이가 있다. 따라서 두 방식으로 할당한 같은 문자열들을 비교하면 new 연산은 주소값이 다르기 때문에 다음과 같은 결과를 얻는다. 1 2 3 4 5 6 7 8 9 10 11 12 // 리터럴을 사용한 선언 String str1 = "hello"; String str2 = "hello"; .. 2022. 2. 26.
enum 자바 5 이전에는 enum이 존재하지 않았기 때문에 interface를 사용해 이를 대체했다. 하지만 이 방식은 다음과 같이 잘못된 연산을 할 수 있는 문제를 가지고 있었다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 interface Animal { int DOG = 1; int CAT = 2; } interface Person { int MAN = 1; int WOMAN = 2; } public class Main { public static void main(String[] args) { who(Person.MAN); // 남성 who(Animal.DOG); // 남성(잘못된 출력) } public static void who(int .. 2022. 2. 21.
추상 클래스와 인터페이스의 차이 인터페이스와 추상 클래스는 인스턴스화 하는 것이 불가능 하고 구현부가 없는 추상 메서드를 가질 수 있다. 또 한 java8에서 인터페이스에 디폴트 메서드가 추가된 후로 수상 클래스와 인터페이스의 차이가 모호해진 감이 있다. 하지만 이 둘은 여전히 다음과 같은 차지를 가지고 있다. 1. 인터페이스에서는 모든 변수가 public static final이다. 메서드는 public abstract이다. 2. 추상 클래스에서는 static 이나 final이 아닌 필드를 지정할 수 있고, public protected private 메소드르 가질 수 있다. 3. 인터페이스를 구현하는 어떤 클래스는 다른 여러개의 인터페이스들을 함께 구현할 수 있다. 자바는 다중상속을 지원하지 않기 때문에 추상클래스를 상속받은 서브클.. 2022. 1. 3.
728x90