본문 바로가기

자바29

[자바] 자바의 실행구조 ​ ​ JRE (Java Runtime Environment) 자바를 실행하기 위해 필요한 JVM과 기타 API들을 포함하여 실행환경을 제공한다. ​ ​ ​ JVM (Java Virtual Machine) 자바 가상 머신 일반적인 네이티브 언어들은 운영체제마다 각자 다른 컴파일러를 사용해서 기계어로 번역함 EX) 윈도우는 exe 파일을 생성 하지만 자바는 결과물이 운영체제에 종속되지 않고 자바 컴파일러가 생성한 바이트 코드를 JVM이 인식해서 실행하게 된다. ​ 1. ClassLoader 자바 컴파일러가 생성한 .class 파일을 메모리에 올린다(loading). ​ 2. Execution Engine (실행 엔진) ClassLoader가 메모리에 올리면 class 파일을 해석한다. GC를 포함하고 있다.. 2020. 9. 15.
[자바] 인터페이스 (Interface) 인터페이스 (Interface) 여러 클래스들을 만들 때, 만들어야 될 필요한 기능들에 대해서 합의해놓은 규약, 또는 가이드라인 (즉 객체의 스펙을 지정​해준다) 실제 객체로 사용되진 않고 객체의 타입으로만 사용됨. 프로그램을 설계하고 유연한 프로그램을 만들기 위한 기법 '다형성'이라는 객체지향 프로그래밍 특징을 구현한 기법 ​ EX) 특정 클래스를 구현하는데 개발자 혼자 클래스를 다 개발할 때까지 기다리기는 너무 시간이 오래 걸림 해당 클래스에서 어떤 메소드를 구현할지 기능에 대해서 배포 배포받은 기능 설명을 보고 구현만 하면됨 ​ 문법 1. 인터페이스는 실제 객체 X 추상 메소드, 상수만을 가지고 있음 ​ 2. 인터페이스의 상수는 private 불가능 인터페이스는 외부로 공개하기 위해서 만들어지는 것.. 2020. 9. 15.
[자바] JRE, JDK JRE (Java Runtime Environment) JVM + 기타 API 클래스 자바 프로그램을 실행하는데 필요한 실행환경 제공 ​ JDK (Java Development Kit) JRE + 개발 도구 자바 프로그램 실행뿐만이 아니라 개발에 필요한 도구들도 함께 제공 2020. 9. 15.
[자바 이슈] Comparator 사용 관련 주의 알고리즘 문제를 풀다가 Comparator를 사용했는데 처음 보는 경우를 발견했다. 1. 런타임 에러 발생 코드 Arrays.sort(nodes, new Comparator() { @Override public int compare(int[] o1, int[] o2) { if(o2[1] > o1[1]) return 1; return -1; } }); 처음에 적은 코드이다. 내림차순 정렬을 하기 위해서 자리를 바꿔야 하면 1을 반환, 아니면 -1을 반환했는데 계속 몇몇 테스트 케이스에서 런타임 에러가 발생했다. 2. 정상 동작 코드 Arrays.sort(nodes, (o1, o2) -> o2[1] - o1[1]); 그리고 나중에 고친 코드이다. (람다식은 중요하지 않다.) 이건 정상적으로 돌아가는 코드인데.. 2020. 9. 9.