Java

· Java
1. 에러 원인: "Non-static variable cannot be referenced from a static context"Java에서 non-static 변수는 클래스의 인스턴스와 관련이 있습니다. 반면, static 메서드는 클래스 자체와 관련되므로, 특정 인스턴스에 속한 변수를 직접 참조할 수 없습니다. 아래 코드를 예로 들어보겠습니다.class MyProgram { int count = 0; public static void main(String[] args) { System.out.println(count); // 에러 발생 }}위 코드에서는 count가 non-static 변수이기 때문에 static 메서드인 main에서 직접 참조할 수 없어 에러가 발생합..
· Java
1. 개요Java에서 equals와 hashCode 메서드를 올바르게 재정의하는 것은 중요합니다. 특히, HashMap, HashSet 등 해싱 기반 컬렉션에서 객체를 효율적으로 저장하고 검색하려면 필수적입니다. 이 문서에서는 왜 이 두 메서드를 재정의해야 하는지, 재정의하지 않으면 발생할 수 있는 문제와 함께 구체적인 예제와 함께 설명합니다.2. equals와 hashCode의 역할2.1 equals 메서드객체 비교: 두 객체가 논리적으로 같은지 판단합니다.기본 구현: Object 클래스의 기본 equals는 참조 주소를 비교하므로, 동일 객체가 아니면 항상 false를 반환합니다.2.2 hashCode 메서드해싱 알고리즘: 객체의 해시 코드를 반환합니다. 이 해시 코드는 객체를 HashMap, Has..
· Java
1. 개요Java의 ++ 연산자는 변수의 값을 1만큼 증가시키는 데 사용됩니다. 하지만 **전위연산자(++i)**와 **후위연산자(i++)**는 동작 방식에서 중요한 차이가 있습니다. 이 글에서는 이 두 연산자의 차이와 코드 예제를 통해 동작 원리를 설명합니다.2. 기본 개념2.1 전위연산자 (++i, pre-increment)정의: 변수의 값을 먼저 증가시키고, 증가된 값을 반환합니다.예제:int i = 5;System.out.println(++i); // 출력: 6 (i는 증가된 상태로 반환)2.2 후위연산자 (i++, post-increment)정의: 변수의 값을 먼저 반환한 후, 값을 증가시킵니다.예제:int i = 5;System.out.println(i++); // 출력: 5 (i는 반환 후 ..
· Java
1. 문제 정의Java 애플리케이션에서 private 메서드, 필드 또는 내부 클래스를 테스트해야 할 때, 이들이 외부에서 접근할 수 없다는 이유로 테스트가 어려울 수 있습니다. 하지만 코드의 안정성을 보장하기 위해 내부 로직도 테스트해야 할 때가 있습니다.이 문서에서는 JUnit을 사용하여 private 메서드 및 필드를 테스트하는 다양한 방법과 최적의 접근 방식을 설명합니다.2. 왜 private 메서드를 직접 테스트해야 하나요?2.1 일반적인 권장 사항Public 메서드를 테스트하세요:일반적으로 private 메서드는 public 메서드를 통해 간접적으로 테스트해야 합니다.예: public 메서드가 내부적으로 private 메서드를 호출할 때, 자연스럽게 테스트됩니다.2.2 테스트가 필요한 상황복잡..
· Java
1. 문제 개요Java 9 이후로 javax.xml.bind.JAXBException 관련 클래스가 JDK 기본 클래스 경로(classpath)에서 제거되었습니다. 이 문제는 Java 11 이후로 더욱 심화되어, 해당 모듈이 JDK에서 완전히 제거되면서 발생합니다. 이 문서는 발생 원인과 해결 방법을 단계별로 자세히 설명합니다.2. 주요 원인Java 9의 모듈 시스템 도입javax.xml.bind는 Java EE API에 포함되며, Java 9부터는 기본 클래스 경로에서 제외되었습니다.관련 모듈은 java.xml.bind에 포함되어 있지만, 명시적으로 추가하지 않으면 사용할 수 없습니다.Java 11에서의 API 제거Java EE 관련 모듈들이 완전히 제거되어 더 이상 JDK에서 지원되지 않습니다.">3..
· Java
1. 문제 개요Java에서 개발을 진행하다 보면 "non-static method cannot be referenced from a static context"라는 오류 메시지를 마주할 수 있습니다. 이 오류는 정적(static) 메서드에서 비정적(non-static) 메서드를 호출하려 할 때 발생합니다. 이 문서에서는 해당 오류의 원인과 해결 방법을 단계별로 설명합니다.2. 오류 원인2.1 Static과 Non-static의 차이Java는 객체 지향 프로그래밍 언어로, Static과 Non-static 요소를 구분합니다.Static (정적)클래스 레벨에서 존재하며, 특정 객체와 관계가 없습니다.객체를 생성하지 않고도 호출할 수 있습니다.public class Example { public stat..
· Java
1. 개요StackOverflowError는 Java 실행 중에 발생하는 심각한 런타임 오류로, 스택 메모리가 초과되어 더 이상 함수 호출이나 로컬 변수 저장이 불가능할 때 발생합니다. 이는 대부분 잘못된 재귀 호출이나 스택의 과도한 사용으로 인해 발생하며, 일반적인 디버깅 지식과 코드 설계가 필요합니다.2. StackOverflowError의 동작 원리2.1 Java 스택의 역할Java의 스택 메모리는 함수 호출, 매개변수, 로컬 변수 등을 저장하는 데 사용됩니다.각 함수 호출 시 새로운 **스택 프레임(stack frame)**이 생성되고, 호출이 종료되면 스택 프레임이 제거됩니다.2.2 StackOverflowError의 발생스택 메모리 공간은 제한되어 있으며, 너무 많은 호출이 누적되거나 종료되지..
· Java
1. 개요Java 개발에서 getters와 setters를 사용하면 불필요한 코드처럼 느껴질 수 있지만, 이는 중요한 소프트웨어 설계 원칙인 **캡슐화(encapsulation)**를 준수하기 위한 핵심 요소입니다. 이 글에서는 왜 필드를 직접 공개(public)하는 대신, get과 set 메서드를 사용하는 것이 더 나은 선택인지 구체적으로 설명합니다.2. Getters와 Setters의 기본 정의2.1 직접 필드 접근public String name; // 필드 직접 공개장점: 코드가 간결하고 이해하기 쉽습니다.단점: 데이터 무결성 및 보안 유지가 어려워지고, 유지보수가 복잡해질 수 있습니다.2.2 Getters와 Setters 사용private String name;public String getN..
· Java
1. 문제 정의Git을 사용해 git push 또는 git pull 명령을 실행할 때 다음 오류가 발생하는 경우가 있습니다:ssh: connect to host github.com port 22: Connection timed out이 오류는 주로 네트워크 설정, 방화벽, 또는 프록시 문제로 인해 발생하며, SSH 연결이 차단된 상황에서 나타납니다.2. 원인 분석2.1 포트 22 차단많은 네트워크 방화벽이 SSH 연결(기본 포트 22)을 제한합니다. 이로 인해 GitHub와의 통신이 차단됩니다.2.2 프록시 설정 문제프록시 서버를 사용하는 네트워크에서 SSH 설정이 적절하지 않을 경우 문제가 발생할 수 있습니다.2.3 Git 설정 문제SSH URL 형식(git@github.com:username/repo..
민호이
'Java' 카테고리의 글 목록