본문 바로가기

JAVA35

지역클래스, 익명클래스 지역클래스메서드 안에서도 클래스를 생성할 수 있다. public class LocalOuter { private int outInstanceVar = 3; public void process(int paramVar){ int localVar = 1; class LocalPrinter{ int value = 0; public void print() { System.out.println("value = "+ value); System.out.println("localVar = "+localVar); System.out.println("paramVar = "+paramVar); .. 2024. 9. 24.
중첩, 내부클래스 public class Outer{ private static int a = 1; // 클래스 변수 private int b = 2; // 인스턴스 변수 class Inner{ private int c = 3; } }중첩 클래스란 클래스 안에 클래스가 들어있는 것을 말한다. 중첩클래스를 이용하면 1. 캡슐화를 더 이용(?)할 수 있다.2. 불필요한 클래스파일(한 클래스로만 이용한다면)을 하나 줄일 수 있다. 중첩클래스는 다른 하나의 클래스 안에서만 사용되거나, 둘이 아주 긴밀하게 연결되어있는 특별한 경우에만 사용한다.ex) 이 내부클래스는 이 클래스에서만 사용된다. (다른데서 사용x) 중첩 정적 클래스내부 클래스 인데 static이 붙음: 바깥클래스 인스턴스 변수에 접.. 2024. 9. 24.
열거형 - enum 사용자에게 String타입 입력을 받을 때 타입 안정성이 부족하다.- 오타, 소문자입력 등 정확하게 입력 받아야함. 이를 막기위해 상수형으로 제한할 수 있지만 코드가 많이 복잡해진다.(HttpStatus.OK으로 사용)public class HttpStatus { public static final ClassGrade OK = new HttpStatus(); public static final ClassGrade BAD_REQUEST = new HttpStatus(); public static final ClassGrade NOT_FOUND = new HttpStatus(); public static final ClassGrade INTERNAL_SERVER_ERROR = new H.. 2024. 9. 20.
래퍼 클래스 (박싱, 언박싱) 기본형 타입(int, double...)은 객체가 아니고, null 값을 가질 수 없다.기본형을 가지고 클래스를 만들면 객체로 사용할 수 있다. 자바가 제공하는 래퍼클래스byte -> Byteshort -> Shortint -> Integerlong -> Longfloat -> Floatdouble -> Doublechar -> Characterboolean -> Boolean 래퍼클래스 생성 예시Integer newInteger = new Integer(10); // 자바 삭제 예정, 대신에 valueOf() 사용Integer integerObj = Integer.valueOf(10);Long longObj = Long.valueOf(100);Double doubleObj = Double.valueOf.. 2024. 9. 19.
StringBuilder String은 불변객체이다!그래서 꼭 변수에 담아서 사용해야한다. 예를들어 String의 문자열을 합쳐주는 메서드 concat()를 사용할 때 꼭 새로운 변수에 담아 사용해야한다.String str = "Hello";str.concat(", World!");System.out.println(str); // Hello 출력String result = str.concat(", World!");System.out.println(result); // Hello, World! 출력 String은 불변객체이기 때문에,문자열에 변화를 주려고 할때마다 String 객체가 생성되고 기존은 버려진다. (불필요한 처리시간 소요 됨) StringBuilderStringBuilder는 가변적이고 객체 안에서 문자열 추가, 삭제.. 2024. 9. 16.
불변 객체 데이터의 타입은 기본형과 참조형 두가지이다. 이를 다른변수에 복사할 때,기본형의 경우 값을 복사해서 사용한다.참조형의 경우에는 참조값을 가지므로 값이 아닌 참조값이 복사가 된다.int a = 10;b = a; // b=10, a와 b의 10은 각각 다르게 존재Number one = new Number();Number two = one; // one의 참조값을 복사 (문제)사이드 이펙트프로그래밍에서 어떤 계산이 주된 작업 외에 추가적인 부수 효과를 일으키는 것을 말한다.Number one = new Number("일");Number two = one;two.setValue("이");System.out.println(one); // 이, 사이드이펙트 발생System.out.println(two); // 이 .. 2024. 9. 12.