본문 바로가기

Java관련27

Java 상속, 오버라이딩, 다이나믹 메소드 디스패치 목차 자바 상속의 특징 super 키워드 메소드 오버라이딩 다이나믹 메소드 디스패치 (Dynamic Method Dispatch) 추상 클래스 final 키워드 Object 클래스 클래스 재사용 방법 상속 포함 Composit : 한 클래스의 멤버변수로 다른 클래스 타입의 참조변수를 선언 자바의 상속(Inheritance) 상속을 받는 것은 조상 클래스를 확장(extend)한다는 의미로 해석할 수 있습니다. 기존 클래스를 재사용하여 새로운 클래스 작성 코드 중복은 일관성 유지를 어렵게 해 유지보수가 어려워지게 하는 요소입니다. 같은 내용의 코드를 부모 클래스 한 곳에서 관리하므로 공통된 내용이 변경될 때 부모 클래스 하나만 변경할 수 있습니다. 코드 재사용 코드 중복 제거 조상 클래스가 변경되면 자손 클.. 2022. 8. 29.
JVM과 자바 실행 과정 알아보기 자바 소스 파일(.java)을 실행하는 과정을 살펴보면서 JVM의 각 항목에 대해서 알아보았습니다. JVM에 대해 조사할 때 소제목으로 알아보는 것보다는 자바 실행 과정이라는 키워드로 접근하는 것이 수월했습니다. 먼저 java 파일의 실행과정을 간단하게 살펴보고 JVM의 각 항목에 대해 적어보겠습니다. .java 파일의 실행과정 (image : simplesnippets.tech) 1 컴파일 타임 🔷 1단계 : 코드 컴파일 javac abc.java 자바 컴파일러 javac를 통해 .java 파일이 바이트코드로 된 .class파일로 변환됩니다. 자바 컴파일러는 구문오류, 컴파일시간 오류를 확인하고 자바코드를 바이트코드로 변환합니다. 자바코드를 바이트코드로 변환할 때 발생한 에러를 컴파일 타임 에러라고 합.. 2022. 8. 7.
Java 데이터 타입, 변수, 배열 자바 데이터 타입, 변수, 배열 학습 목표 자바의 프리미티브 타입, 변수 그리고 배열을 사용하는 방법을 익힙니다. 프리미티브 타입 종류와 값의 범위 그리고 기본 값 프리미티브 타입과 레퍼런스 타입 리터럴 변수 선언 및 초기화하는 방법 변수의 스코프와 라이프타임 타입 변환, 캐스팅 그리고 타입 프로모션 1차 및 2차 배열 선언하기 타입 추론, var 1 프리미티브 타입 종류와 값의 범위 그리고 기본 값 기본형 Primitive type char : 문자형, 문자의 유니코드(정수 2byte)가 저장된다. 그러므로 정수형, 실수형과 연산도 가능 int : 정수형. CPU가 가장 효율적으로 처리할 수 있는 타입, 대략 20억까지 표현 가능. long : 7~9자리 수 계산할 때는 넉넉하게 long(19자리)로 .. 2022. 7. 31.
process command finished with non-zero exit value 1 인텔리제이 실행 에러 처음 프로젝트 셋팅하고 인텔리제이 실행 에러가 나는데 이럴때가 가장 난감하다. 왜인지는 나중에 정리해놓더라도 발생한 실행 에러와 해결 방법은 적어두자. 에러 메시지 process command finished with non-zero exit value 1 > Process 'command 'java.exe'' finished with non-zero exit value 1 * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. 해결 방법 File/Se.. 2022. 5. 4.
rename the root module , java project in 인텔리제이 인텔리제이에서 자바프로젝트 root module이름 변경 하는 법 You can rename the root module of your java project, following these steps: Go to Project Structure (Ctrl+Alt+Shift+S) → Project Settings / Project → Project name: Project name: Open the settings.gradle file and rename the rootProject.name rootProject.name Once done, delete the .idea folder from your root project folder, rename your project folder on your sys.. 2022. 5. 3.
NoSuchElementException Exception 종류 - NoSuchElementException 순차적 검색이 가능한 데이터프레임 안에 담긴 자료를 가져올 때 next() 메서드를 써서 데이터를 가져오는데, 이때 하나의 값에 대해서 next가 두 번 나오게되면 발생하는 오류이다. 2022. 4. 16.
Objects.requireNonNull() - java.util.Objects Objects.requireNonNull() 사용 이유 Objects.requireNonNull() 메서드 코드 public static T requireNonNull(T obj) { if (obj == null) throw new NullPointerException(); return obj; }당연하게 느껴지는 코드이고, null일 때 당연히 NPE가 발생하는데 왜 사용해야 할까? 명시성 explicity null이 아니어야 함을 명시적으로 표현할 수 있다. 따라서 과거에 짠 코드가 미래에 사용될 때 해당 객체가 null이면 안된다는 것을 개발자가 명시적으로 알 수 있다. card.setId(Objects.requireNonNull(keyHolder.getKey()).longValue());fail-.. 2022. 4. 16.
static 정적 멤버(클래스 멤버) : static 변수, static 메서드 클래스 로더가 클래스를 로딩해서 메소드 메모리 영역에 적재할 때 클래스별로 관리된다. 따라서 클래스의 로딩이 끝나는 즉시 사용할 수 있다. 객체에 소속된 멤버가 아니라 클래스에 고정된 멤버 2022. 4. 13.
로깅 라이브러리 Logging Library 자바 로깅 System.Logger의 구현체로 무엇을 사용할까? 현장에서 사용하고 있는 자바 로깅의 변화 log4j -> logback -> log4j2 최근에는 다시 log4j2를 사용하고 있는 추세라고 한다. 읽어보기 logback을 사용해야 하는 이유 Log4j2 사용 Logging을 구현하고 있는 구조를 알지 못하면 이해 하기 힘든 글인 것 같다. Logger 이해하기 Logger는 꽤 다양한 것을 묶어 사용하게 되어 있는 것 같았다. 자세하게 공부하지는 못했지만 위 2개 url 먼저 보는 것도 좋다. SLF4J SLF4J는 로깅구현체가 아닌 , Logging 라이브러리에 대한 Facade 역할을 한다. 즉, 로깅 라이브러리를 변경하는 경우(log4j -> logback) 소스 코드에 대한 수정을.. 2022. 4. 11.
정적팩토리 메서드 정적팩토리 메서드 특징 추상 팩토리 패턴, 팩토리 메서드 패턴과 무관하다 단순하게 인스턴스를 만들어서 리턴하는 팩토리 역할을 하는 메서드이다. 생성자대신 정적 팩터리 메서드 사용 고려 객체의 인스턴스 생성 시, 이름을 부여할 수 있다. 생성자의 시그니처가 동일할 때 선언부를 동일하게 판단. 매개변수의 위치를 바꾸거나해서 우회적으로 생성자를 다르게 표현. 하지만 생성자는 이름이 고정되어 있어 서로 다른 이유를 명칭하지 못한다. 정적팩토리 메서드는 이름을 사용하여 객체의 인스턴스를 만들어주는 메서드를 만들 수 있다. 인스턴스를 통제할 수 있다. 생성자를 private으로 하여 외부에서 객체를 생성할 수 없게 한다. 정적팩토리 메서드를 통해 객체를 사용하게 한다. 이렇게 하면 여러 개의 인스턴스를 만들 수 없.. 2022. 4. 9.
인텔리제이 Java project에 외부 라이브러리(assertJ) 등록하기 인텔리제이 Java project에 assertJ 등록하기 자바 프로젝트에서 assertJ를 사용하여 테스트를 하고 싶을 때 외부 라이브러리을 추가해주어야 하는데요. 빌드 툴이 포함되어 있지 않은 순수 자바 프로젝트에 외부 라이브러리 등록하는 방법입니다. 인텔리제이 Project Settings 열기 Dependencies 탭에서 + 누르기 2 Library 선택하고 Maven From 선택하기 keyword 검색창에 assertj.core 라고 검색한다. 알맞은 라이브러리를 선택한다. 2022. 4. 3.
[Java] of - 정적 팩토리 메서드 참고 자료 로또 예제로 설명한 블로그 이펙티브 자바를 요약한 글 백기선님의 정적 팩토리 메서드 영상 시리즈로 되어 있다. 2022. 3. 31.