Banner

My Tech Blog (Java)

· Java
⚠️ 문제프로그래머스[1차] 캐시 https://school.programmers.co.kr/learn/courses/30/lessons/17680import java.util.LinkedHashMap;import java.util.Map;class Solution { public int solution(int cacheSize, String[] cities) { if (cacheSize == 0) return cities.length * 5; // 캐시 없으먄 모두 miss int time = 0; // accessOrder = true // 이렇게 하면 최근에 접근한 순서대로 자동 정렬 LinkedHas..
· Java
package-info.java는 자바에서 패키지 단위의 문서화와 어노테이션을 관리하는 파일이다. @NonNullApi, @NonNullFields 같은 어노테이션을 붙여서 패키지 레벨의 null-safe 기본 정책을 정한다.혹은 해당 패키지에 대한 설명을 추가할 수 있다. 1. Javadoc 주석 작성클래스나 메서드에 Javadoc을 달 수 있듯이, 패키지 자체에도 설명을 붙이고 싶을 때, Javadoc 문서화를 위해 사용한다.예를 들어, 패키지에 속한 모든 클래스들의 공통 목적이나 설계 철학, 사용 방법 등을 정리할 수 있다./** * 이 패키지는 사용자 인증과 관련된 기능을 제공합니다. * - User 객체 관리 * - 로그인/로그아웃 기능 * - 세션 처리 */package com.example..
· Java
⚠️ 문제jdoodle에서 아래코드 실행 중 에러 발생static ArrayList[] graph; // 인접 리스트graph = new ArrayList[N + 1];Note : Main.java unchecked or unsafe operationsNote: Recompile with -Xlint: unchecked for details. 🧐 원인자바 제네릭이랑 배열을 함께 사용할 때 자주 나오는 경고라고 한다. 자바에서는 제네릭 배열 생성은 직접 불가하다. → 즉, `new ArrayList[N+1]`은 불가능 하기 때문에대신 제네릭을 빼고 그냥 Raw 타입 배열을 만들고 각 인덱스를 ArrayList로 초기화한다.이렇게 하면 컴파일러가 타입 안전성이 완전히 보장되지 않는다고 컴파일 에러를 띄..
· Java
⚠️ 문제 프로그래머스에서 코테 풀던 중 아래와 같은 에러 메세지 발생local variables referenced from a lambda expression must be final or effectively final🧐 원인직역하면 람다 안에서 참조하는 지역 변수는 final이거나 사실상 변형되지 않아야 한다는 제약이 있다는 것이다. 나의 코드에서 sortIdx를 람다 안에서 사용하려는데 그 전에 switch-case문에서 값을 바꿨기 때문에 effectively final 이 아니라고 판단해서 에러가 난 것이다. // 1. ext list = new ArrayList(); int idx = 0; // 필터 인덱스 int sortIdx = 0; // 정렬 인덱스 ..
· Java
변수는 오버라이딩X, 메서드는 오버라이딩Oclass Parent { String name = "Parent"; void printNames() { System.out.println(name); }}class Child extends Parent { String name = "Child"; void printNames() { System.out.println(name); }}public class Main { public static void main(String[] args) { Child c = new Child(); c.printNames(); // (1) Parent p = ne..
· Java
"변수는 오버라이딩되지 않는다"는 말은 변수를 참조할 때 참조 변수의 타입 기준으로 결정된다는 것이다.메서드는 동적 바인딩(실행 시점 기준)변수는 정적 바인딩(컴파일 시점 기준)즉 변수는 오버라이딩 되지 않는다 → 참조타입 기준,메서드는 오버라이딩 된다 → 실제 객체 기준메서드 안의 변수 → 선언된 클래스 기준 (예 - 그 메서드가 정의된 클래스의 name필드 사용)this.name → this객체의 클래스 내 필드, 즉 메서드가 정의된 클래스에서의 this 기준super.name → 부모 클래스의 name 기준, 자식 클래스에서 부모 필드 강제 접근class Parent { String name = "Parent"; void printName() { System.out.pr..
· Java
this는 자바(Java)를 포함한 여러 객체지향 언어에서 객체 자기 자신을 가리키는 키워드로 알려져 있다. this는 현재 객체의 참조(reference)로서 지금 실행되고 있는 메서드를 소유하고 있는 인스턴스를 가리킨다. setter 메서드안에서 가장 쉽게 this의 활용법을 확인할 수 있다. public class Person { private String name; public void setName(String name) { this.name = name; }}this.name → 객체의 멤버 변수 namename → 메서드의 매개변수만약에 this를 안 쓰면 어떻게 될까?public void setName(String name) { name = name; /..
· Java
1. JVM (Java Virtual Machine) 이란?JVM은 OS를 대신해서 컴파일된 자바 바이트 코드를 실행하는 가상의 운영체제이다. 즉, OS에 종속받지 않고 CPU가 JAVA를 인식, 실행할 수 있게 하는 가상 컴퓨터이다.JVM에 의해 JAVA는 '운영체제에 독립적'이라는 장점을 가진다. JVM은 자바 언어에서만 사용하는 것이 아니다. 코틀린, 스칼라 언어에서도 JVM 동작 방식을 그대로 따른다.JVM의 역할은 자바 애플리케이션을 클래스 로더를 통해 읽어 자바 API와 함께 실행하는 것이다. 2. 자바 코드가 컴파일 되는 과정위의 동작처럼 Java 소스코드, 즉 원시코드(*.java)는 CPU가 인식을 하지 못하므로 기계어로 컴파일을 해줘야 한다.이 때, Java는 이 JVM 이라는 가상머..
인절미였던것
'Java' 카테고리의 글 목록
상단으로