중첩 클래스, 내부 클래스란?다음과 같이 for문 안에 for문을 중첩하는 것을 중첩(Nested) for문이라 한다.for (...) { //중첩 for문 for (...) { } }다음과 같이 클래스 안에 클래스를 중첩해서 정의할 수 있는데, 이것을 중첩 클래스(Nested Class)라 한다.class Outer { ... //중첩 클래스 class Nested { ... }}중첩 클래스는 클래스를 정의하는 위치에 따라 다음과 같이 분류한다.중첩 클래스의 분류중첩 클래스는 총 4가지가 있고, 크게 2가지로 분류할 수 있다.정적 중첩 클래스내부 클래스 종류내부 클래스지역 클래스익명 클래스중첩 클래스를 정의하는 위치는 변수의 선언 위치와 같다.변수의 선언 위치..
문자열과 타입 안정성1자바가 제공하는 열거형(Enum Type)을 제대로 이해하려면 먼저 열거형이 생겨난 이유를 알아야 한다.예제를 순서대로 따라가며 열거형이 만들어진 근본적인 이유를 알아보자.public class DiscountService { public int discount(String grade, int price) { int discountPercent = 0; if (grade.equals("BASIC")) { discountPercent = 10; } else if (grade.equals("GOLD")) { discountPercent = 20; } else if (grade.equals("D..
래퍼 클래스 - 기본형의 한계1기본형의 한계자바는 객체 지향 언어이다.그런데 자바 안에 객체가 아닌 것이 있다. 바로 int, double 같은 기본형(Primitive Type)이다.기본형은 객체가 아니기 때문에 다음과 같은 한계가 있다.객체가 아님: 기본형 데이터는 객체가 아니기 때문에, 객체 지향 프로그래밍의 장점을 살릴 수 없다.예를 들어 객체는 유용한 메서드를 제공할 수 있는데, 기본형은 객체가 아니므로 메서드를 제공할 수 없다.추가로 객체 참조가 필요한 컬렉션 프레임워크를 사용할 수 없다. 그리고 제네릭도 사용할 수 없다.null 값을 가질 수 없음: 기본형 데이터 타입은 `null` 값을 가질 수 없다.때로는 데이터가 `없음` 이라는 상태를 나 타내야 할 필요가 있는데, 기본형은 항상 값을 ..
String 클래스 - 기본자바에서 문자를 다루는 대표적인 타입은 char, String 2가지가 있다. public class CharArrayMain { public static void main(String[] args) { char[] charArr = new char[]{'h', 'e', 'l', 'l', 'o'}; System.out.println(charArr); String str = "hello"; System.out.println("str = " + str); }}기본형인 char는 문자 하나를 다룰 때 사용한다. char를 사용해서 여러 문자를 나열하려면 char[]을 사용해야 한다. 하지만 이렇게 char[]을 ..