본문 바로가기

Java

(63)
[Java] 지역 변수, 인스턴스 필드, 정적 필드 차이점 자바에서 지역 변수, 인스턴스 필드(변수), 정적 필드(변수)는 모두 변수이지만,각각의 선언 위치, 저장 방식, 수명 및 사용 목적이 다르다.이들의 차이점과 사용하는 경우를 정확히 이해하는 것은 자바 프로그래밍에서 중요한 개념이다. 지역 변수(Local Variable)선언 위치: 메서드, 생성자 또는 블록 내에서 선언된다.저장 위치: 스택(Stack) 영역에 저장된다.수명: 메서드나 블록이 실행될 때 생성되고, 메서드나 블록이 종료되면 메모리에서 사라진다.기본값: 지역 변수는 자동으로 초기화되지 않기 때문에 값을 명시적으로 할당해야 한다. 할당하지 않고 사용하면 컴파일 에러가 발생한다.접근 방법: 선언된 메서드나 블록 내에서만 접근할 수 있다.사용 목적지역 변수는 특정 메서드나 블록 내에서만 필요한 일..
[Java] JVM 메모리 구조 탐구 자바 메모리와 컴퓨터 메모리자바 메모리와 컴퓨터 메모리는 같은 물리적 메모리를 가리키지만, 이 두 개념은 다른 레벨에서 다루는 메모리 관리 방식이다.자바 메모리는 컴퓨터 메모리를 관리하는 소프트웨어적 관점을 반영한 것이고, 컴퓨터 메모리는 하드웨어적인 관점에서 메모리 구조와 작동 방식을 설명한다.이제 자바 메모리와 컴퓨터 메모리의 관계와 차이점에 대해 알아보자.  1. 컴퓨터 메모리 (하드웨어 관점)컴퓨터 메모리는 물리적인 하드웨어 자원으로, 데이터와 명령을 저장하고 처리하기 위해 사용된다.컴퓨터 메모리는 크게 주기억 장치(RAM)와 보조기억 장치(HDD, SSD)로 나눌 수 있습니다. RAM (Random Access Memory):주기억 장치로, 데이터를 일시적으로 저장하고, 컴퓨터가 실행 중인 프로..
[Java] Jshell 을 아시나요? 목차JShell JShell 사용법 JShell자바(Java) 언어에서 제공하는 REPL(Read-Eval-Print Loop) 도구로, Java 9부터 도입되었습니다.REPL은 명령어를 입력하고 그 결과를 즉시 확인할 수 있는 대화형 환경을 의미합니다.이를 통해 복잡한 Java 프로그램을 작성하지 않고도 간단한 코드 실험, 테스트, 학습을 수행할 수 있습니다.JShell사용법1️⃣ 명령 프롬프트 이동  2️⃣ 명령어 jshell 입력  3️⃣ 사용해보기즉각적인 응답을 얻을 수 있고 문법 오류가 생겼을 때  피드백까지 줍니다.자바를 배우는 사람에게는 유용한 도구일 것 같습니다. 4️⃣ 종료 /exit 입력종료할 때는 /exit 명령을 입력해주면 됩니다.친절하게 작별 인사까지 해주네요!
[Java 복습] 타입 매개변수 제한 목차요구사항에 맞는 코드다형성 시도제네릭 도입과 실패타입 매개변수 제한 public class Animal { private String name =""; private int size; public Animal(String name, int size) { this.name = name; this.size = size; } public String getName() { return name; } public int getSize() { return size; } public void sound() { System.out.println("동물 울음 소리."); } @Override ..
[Java] 지네릭 타입의 형변환 지네릭 타입과 원시 타입 간의 형변환은 바람직 하지 않다.(경고 발생)Box objBox = null;Box box = (Box)objBox; // OK. 지네릭 타입 => 원시 타입. 경고 발생objBox = (Box)box; // OK. 원시타입 => 지네릭타입. 경고 발생 Box object = null;Box strBox = null;objBox = (Box)strBox; // 에러. Box => BoxstrBox = (Box)objBox; // 에러. Box => Box 와일드 카드가 사용된 지네릭 타입으로는 형변환 가능Box objBox = (Box)new Box(); // 에러. 형변환 불가능Box wBox = (Box new Box(); // OKBox wBox = new Box(); //..
[Java] 와일드 카드, 지네릭 메서드 와일드 카드 하나의 참조 변수로 대입된 타입이 다른 객체를 참조 가능다양성 처럼 서로 다른 지네릭타입이 대입된 객체를 다룰 수 있게 된다.ArrayList list = new ArrayList();ArrayList list = new ArrayList();ArrayList list = new ArrayList(); // 에러. 대입된 타입 불일치 : 와일드 카드의 상한 제한. T와 그 자손들만 가능 : 와일드 카드의 하한 제한. T와 그 조상들만 가능 : 제한 없음. 모든 타입이 가능. 와 동일 메서드의 매개변수에도 와일드 카드를 사용가능static Juice makeJuice(FruitBox box) { String tmp = ""; for(Fruit f: box.getList()) { ..
[Java] 지네릭 클래스의 제약 제한된 지네릭 클래스extends로 대입할 수 있는 타입을 제한class FruitBox { // Fruit의 자손만 타입으로 지정가능 ArrayList list = new ArrayList(); ...}FruitBox appleBox = new FruitBox(); // OKFruitBox toyBox = new FruitBox(); // 에러! Toy는 Fruit의 자손이 아님 인터페이스인 경우도 extends를 사용interface Eatable {}class FruitBox {...}  예제public class Ex1 { public static void main(String[] args) { FruitBox fruitBox = new FruitBox(); // Fr..
[Java] Iterator<E>, Map<K, V> Iterator클래스를 작성할 때, Object 타입 대신 T와 같은 타입 변수를 사용public interface Iterator{ boolean hasNext(); Object next(); void remove();}↓public interface Iterator { boolean hasNext(); E next(); void remove();}Iterator it = list.iterator();while(it.hasNext()) { Student s = (Student)it.next;↓Iterator it = list.iterator();while(it.hasNext()) { Student s = it.next; 예제public class Ex4 { ..
[Java] 지네릭스란? 지네릭스(Generics) 란?1. 컴파일시 타입을 체크해 주는 기능(compile-time type check) - JDK1.5// TV 객체만 저장할 수 있는 ArrayList를 생성 ArrayList tvList = new ArrayList(); tvList.add(new Tv()); tvList.add(new Audio()); // 컴파일 에러! Tv 외에 다른 타입은 저장불가} 2. 객체의 타입 안전성을 높이고 형변환의 번거로움을 줄여줌.ArrayList tvList = new ArrayList();tvList.add(new Tv());Tv tv = (Tv) tvList.get(0); // Object 타입 변환(형변환 필요)↓ArrayList tvList = new Ar..
[Java] Collections 컬렉션을 위한 메서드 Collections 컬렉션을 위한 메서드(static)를 제공 1. 컬렉션 채우기, 복사, 정렬, 검색fill( )copy( )sort( )binarySearch( )   2. 컬렉션의 동기화synchronizedXXX( )  List syncList = Collections.synchronizedList(new ArrayList(...)); 필요할 때만 동기화 하도록 설계가 바뀌었다.   2. 변경불가(readOnly) 컬렉션 만들기 unmodifiableXXX( )   3. 싱글톤 컬렉션 만들기(객체 1개만 저장하는 컬렉션)    4. 한 종류의 객체만 저장하는 컬렉션 만들기List list = new ArrayList();List checkedList - checkedList(list, Strin..