전체 글138 [자바] 중첩 클래스 클래스 내부에 클래스를 정의한 것중첩 클래스 종류정적 중첩 클래스 → 바깥 인스턴스와 전혀 다른 인스턴스, 바깥에 소속되어 있지 않음 (static)내부 클래스 → 바깥 인스턴스 소속 (non-static)내부 클래스지역 클래스익명 클래스사용하는 이유특정 클래스가 다른 하나의 클래스 안에서만 사용되거나, 둘이 아주 긴밀하게 연결되어 있는 특별한 경우에만 사용즉 외부의 여러 클래스가 특정 중첩 클래스를 사용하면 안됨.논리적 그룹화 : 다른 곳에서 사용될 필요가 없는 중첩 클래스를 외부에 노출시키지 않게 하기 위함캡슐화 : 중첩 클래스는 바깥의 private 멤버에 접근이 가능. 따라서 둘을 긴밀하게 연결하고 불필요한 public 메서드 제거 가능정적 중첩 클래스자신의 멤버에 접근 가능외부 클래스 인스턴스 .. 2024. 12. 24. [자바] Enum Class Enum이란?enumeration 의 줄임말로 열거라는 뜻이고, 어떤 항목을 나열하는 것을 의미한다. 즉 일련의 명명된 상수들의 집합을 정의하는 것을 뜻한다. Enum 클래스의 이해를 위해 예시를 하나 들어보도록 하겠다.다음과 같이 요일별로 할인율을 반환해주는 메서드가 있다고 하자. (간략하게 월, 수, 일만 할인 적용)public class PayService { public int discount(String day) { int percent = 0; if (day.equals("MONDAY")) { percent = 3; } else if (day.equals("WEDNESDAY")) { percent = 5; .. 2024. 12. 24. [자바] Wrapper 클래스 먼저 자바의 데이터 타입은 크게 두 종류로 나눌 수 있다.자바의 데이터 타입기본형 : 하나의 값을 여러 변수에서 공유하지 않음참조형 : 하나의 객체를 참조를 통해 여러 변수에서 공유가 가능여기서 기본형은 다음과 같은 단점이 존재한다.객체가 아니므로 메서드 제공이 불가능null 값을 가질 수 없음제네릭과 컬렉션 프레임워크에 적용이 불가능이러한 단점을 해결하기 위해 기본형을 클래스에 담아서 객체처럼 다루는 것을 래퍼 클래스라고 한다.래퍼 클래스 종류기본형 래퍼 클래스byteByteshortShortintIntegerlongLongbooleanBooleanfloatFloatdoubleDoublecharCharacter래퍼 클래스는 불변객체이므로 equals를 통한 동등성 비교박싱 / 언박싱박싱 : 기본형 → .. 2024. 12. 24. [자바] String 자바에서 문자열 데이터를 편리하게 사용하기 위해 String 클래스를 지원하는데, 유의할 점이 몇 가지 있는 특별한 자료형이므로 이 참에 정리를 확실하게 해보려 한다. 먼저 String class는 기본형처럼 보이지만 객체이며 참조형이며 힙 영역에 생성된다. String 생성 방법new String() String s1 = new String("hello");리터럴 String s2 = "hello";String 객체는 생성 방법에 따라 메모리 구조가 달라진다.public class Test { public static void main(String[] args) { String s1 = new String("hello"); String s2 = new String("hel.. 2024. 12. 24. [자바] 오버로딩, 오버라이딩 오버로딩 : 이름은 같지만 매개변수가 다른 메서드를 여러 개 정의하는 것. 단 반환 타입이 다를 때에는 인정 x메서드 시그니처 = 메서드 이름 + 매개변수 타입(순서)즉 오버로딩은 메서드 시그니처를 가지고 판단한다.// 단순히 입력받은 숫자를 출력하는 메서드public class TestMain { public static void main(String[] args) { Test test = new Test(); test.call(1, 3); test.call(1, 3, 4); test.call(1); } static class Test { public void call(int x) { System.out... 2024. 12. 24. [자바] 상속, 추상클래스, 인터페이스 상속이란?기존 클래스의 속성과 기능을 새로운 클래스에서 재사용할 수 있도록 하는 기능 상속 시 메모리 공간자식 클래스 인스턴스를 생성할 때, 부모 클래스 인스턴스도 함께 생성된다. 이 때 실제로 메모리에 할당되는 객체는 자식 클래스의 인스턴스 하나로 이 인스턴스 안에는 부모 클래스의 멤버(필드와 메서드)가 포함되어 있음.즉 부모에서 자식까지의 모든 메타 정보를 가진 하나의 인스턴스를 생성한다.(물리적으로 하나로 생성된다 할지라도, 다형성 개념을 이해하기 위해서 논리적으로는 분리해서 생성된다고 이해하는 것이 편하다)super 키워드super→ 부모와 자식의 필드명이 같은 경우나 메서드가 오버라이딩 되어있을 때 자식에서 부모의 필드나 메서드를 호출할 수 없음. 이런 상황에서 super 키워드를 사용하면 부모.. 2024. 12. 24. [자바] 상수와 리터럴 상수 : 값을 변경할 수 없는 변수상수에 넣는 데이터는 숫자, 클래스 같은 데이터가 들어옴이 때 상수가 값을 변경할 수 없다고 해서 상수의 데이터가 변하지 않는다고 착각하지만 참조변수의 주소값이 변하지 않을 뿐 주소가 가리키는 데이터까지 변하지 않는다는 의미가 아님리터럴 : 개발자가 직접 입력한 고정된 값(데이터)으로 리터럴 자체는 변하지 않음변수에 할당이 가능고정 값을 나타내는 표기법보통 인스턴스는 동적이므로 리터럴이 될 수 없지만 불변 클래스는 리터럴이 될 수 있음(값이 변한다면 새로운 객체를 만들게 되므로). 즉 리터럴은 기본형 데이터를 나타내지만 예외적으로 Immutable Class, VO Class역시 리터럴이라고 함int a = 100; // 정수 리터럴 100double b = 10.5; .. 2024. 12. 24. [자바] static 변수와 메서드 자바에서 static 키워드를 선언하면 메서드 영역에서 특별하게 관리된다. 이는 프로그램 실행에 생성되고 JVM이 종료될 때 까지 유지가 되어 (메서드 영역에 존재하므로 GC에 의해 제거되지 않음) 정적임을 뜻한다.static 변수클래스 변수, 정적 변수, static 변수 : static이 붙은 멤버 변수로 자바 프로그램이 시작될 때 초기화되며 메서드 영역에 딱 1개 생성. 인스턴스와 무관하며 여러 곳에서 공유하는 목적으로 사용된다.↔ 인스턴스 변수 : static이 붙지 않은 멤버 변수로 인스턴스를 생성해야 사용 가능하며(동적) 생성된 인스턴스에 소속. (힙 영역)static 메소드변수와 마찬가지로 메서드에 static 키워드가 붙으면 정적 메서드 또는 클래스 메서드라고 한다. ↔ 인스턴스 메서드 :.. 2024. 12. 24. [자바] 접근 제어자 접근 제어자 : 외부로부터 속성과 기능을 숨기는 역할private → 모든 외부 호출을 막음default → 같은 패키지 안에서 호출은 허용, package-private 이라고도 함.protected → default와 마찬가지로 같은 패키지 내에서 호출은 허용 + 패키지가 달라도 상속 관계라면 호출 허용public → 모든 외부 호출 허용private → default → protected → public 순으로 접근을 막는다. 접근 제어자 / 범위다른 패키지(상속X)상속 관계같은 패키지같은 클래스 내의 멤버privatexxxodefaultxxooprotectedxooopublicoooopublic class Test { public int publicNumber = 1; prote.. 2024. 12. 24. 이전 1 ··· 12 13 14 15 16 다음