솔직히 그냥 "아무런 값도 반환하지 않음"이라는 의미로 알고 있었지만, 생각외로 나중에 더 큰 포로젝트를 건들이게 되면서 오류를 많이 일으킬 수 있는 녀석인것 같아 확실히 정리해둘 생각이다. 메서드에서 " return null;"의 의미는 다음과 같다.▶ 이 메서드가 아무 "객체"도 반환하지 않는다. 즉, "참조하고 있는 객체가 없다" 라는 특수한 값이다.기본형( int, double 등 )에는 못 쓰고, 참조형(클래스, 배열, 인터페이스 등) 에만 사용 가능"주소가 비어있다"는 개념 (기본형 int, double 같은 건 null 못 넣음!)예제)String text = null; // text는 문자열 객체를 가리키지 않음text = "Hello"; // 이제 문자열 "Hello" 객체를..
"메서드 안(지역 변수)에서는 접근 제어자(public/private/protected와 static을 붙일 수 없음" 오늘은 이 자바 문법에 대해서 설명해보자. 이 문법을 어긴 예제는 다음과 같다.public class Test { public static void main(String[] args) { public int num = 10; // ❌ 메서드 안에서는 public 불가 static int count = 0; // ❌ 메서드 안에서는 static 불가 }}// 에러 메시지...제어자 public은 허용되지 않습니다.modifier static not allowed here 그럼 문법에 맞게 고친 코드는 뭘까??? public class Test { ..
클로드ai가 말하기로는 자바 개발자들이 가장 많이 생각하는 고민이라고한다. 나 역시 아직 자바초짜인데도 벌써 이런 고민을 하고 있다. 구체적인 기준이 있지는 않지만, 꼭 고려해야한다고 생각하는 요소가 있다고 생각해서 이 글을 쓰게된다. 결론부터 정리하면 이 사진과 같다. 간단하게 말하자면,메서드가 "상태"를 저장, 변경하는 기능을 하는 경우 → Instance,메서드가 // 기능을 하지 않는 경우 (즉, 일회성 사용, 단순 검증 ) → Static여기서, 사용 기준에서 나는 "상태"를 자장, 변경하는지 여부를 중요하게 생각한다. □ Instance 예시 - 게임 캐릭터 설정 )public class GameCharacter { // 게임 캐릭터가 기억해야 할 상태들 private Stri..
클로드( Claude )가 생각하기에 참조형 타입을 확인하기 위해서 가장 효율적인 방법을 정리해보려한다 ㅋ ● 참조형 타입 확인예: String, Integer(래퍼 클래스), ArrayList, 사용자 정의 클래스 등참조형은 객체이므로 .getClass() 메서드를 바로 사용 가능- getName() → 전체 경로 포함 클래스명- getSimpleName() → 클래스명만- getTypeName() → 타입 전체명public class Main { public static void main(String[] args) { String text = "Hello"; System.out.println(text.getClass().getName()); ..
자바의 JVM(Java Virtual Machine)에서 메모리 구조는 크게 3가지로 나뉜다. ( 메서드 영역, 힙 메모리, 스택 메모리 )각각 의미와 어떤 데이터가 저장되는지, 또 이를 예제를 통해서 이해해보자. ■ 메서드 영역 : 프로그램 실행에 필요한 클래스 정보를 저장하는 공간저장되는 것들) - 클래스 정보 (클래스 이름, 접근제어자 등) - 메서드 코드 (실제 메서드 구현 내용) - static 변수들 - 상수 풀 (Constant Pool) ■ 힙 메모리 : new 키워드로 생성한 객체와 배열이 저장되는 공간저장되는 것들) - 객체의 인스턴스 변수들 - 배열 객체들 - 실제 객체 데이터 ○ Garbage Collector(가비지 컬렉터) : 사용하지 않는 객체를 자동으로 찾아서 메모리..
자바에서는 같은 클래스 내부에서 선언된 매서드끼리 호출해야하는 경우가 있다. 하지만, 주의 사항이 있다. 둘 다 static 메서드이거나, 둘 다 인스턴스 메서드여야 함.만약 A가 static이고 B가 인스턴스 메서드면 → A를 바로 호출 가능만약 A가 인스턴스이고 B가 static이면 → 객체를 만들어서 호출해야 함.굳이 외울 필요는 없고, 객체를 생성해야만 사용할 수 있다는 인스턴스 메서드와 객체를 생성하지 않아도 사용할 수 있는 static 메서드의 각각의 특징을 이해한다면 금방 받아들여 질 수 있다고 생각한다. 간단한 예제도 참고해보자.public class MyClass { // A 메서드 public void methodA() { System.out.printl..
이번에도 자바 문법 포스팅이다. 자바 문법도 기본적인 레벨은 어느정도 많이 익혔다고 생각을 한다. 현재 만들고 있는 계산기 프로그램에서 예외를 처리해야하는 일이 생겨 예외처리 구문인 try-catch-finally 구문을 정리해보려한다.( 참고로 파이썬, 자바스크립트에서는 try-except 라고 하던데, 자바는 try-catch 라고 한다. 차이점이다.... ) ● try 블록 → 예외가 발생할 수 있는 코드 실행.● catch 블록 → 예외가 발생하면 해당 예외를 잡아서 처리.● finally 블록 → 예외가 있든 없든 무조건 실행 (리소스 해제, 파일 닫기 등에 자주 사용) 바로 예제부터 보자. public class TryCatchFinallyExample { public static ..