본문 바로가기
반응형

Java37

[Java] 자바 String을 효율적으로 사용하는 방법 (StringBuilder, StringBuffer, StringJoiner, Collectors.joining) 학습목표 · String은 클래스 선언에 따라 메모리에 저장되는 방식이 다르다 · String은 immutable(불변)하다 · StringBuilder와 StringBuffer · StringBuilder와 StringBuffer의 구조 · StringJoiner · Collectors 클래스의 joining 메서드 String은 클래스 선언에 따라 메모리에 저장되는 방식이 다르다. String str1 = new String("abc"); //인스턴스로 생성된다. String str2 = "abc"; //상수풀에 있는 문자열을 가르킨다. JVM(Java Virtual Machine)에서는 아래와 같은 구조로 데이터를 저장한다. String은 선언 방식에 따라 아래와 같이 힙메모리 또는 상수 풀(Run.. 2021. 9. 29.
[Algorithm] 이것이 코딩테스트다 - 이진탐색 문제풀이(with 자바) 부품찾기 public class 부품찾기 { public static void main(String [] args){ Scanner scanner = new Scanner(System.in); int N = scanner.nextInt(); int[] parts = new int[N]; for(int i=0; i target){ start = mid+1; } else { end = mid-1; } } } } 2021. 9. 13.
[Java] 자바의 Scanner 클래스 사용하기 · java.util 패키지에 위치하며, 콘솔 등에서 입력 받은 기본타입(int, double, boolean 등)과 문자열을 읽는 텍스트 스케너 · 내부적으로 정규식을 사용하여 다른 유형을 읽음 · Scanner 객체를 생성하는 방법 ex) Scanner scanner = new Scanner(System.in); · Scanner는 콘솔 이외에도 생성자 매개값에 File, InputStream, Path 등 다양한 입력 소스 지정 가능 · Scanner에서 기본타입과 문자열을 읽기 위한 메소드 리턴 타입 메소드 boolean nextBoolean() byte nextByte() short nextShort() int nextInt() long nextLong() float nextFloat() dou.. 2021. 9. 10.
[Java] 자바의 레코드(Record) 레코드란? ㆍ 불변(immutable) 데이터 객체를 쉽게 생성할 수 있도록 하는 새로운 유형의 클래스 ㆍ JDK14에서 preview로 등장하여 JDK16에서 정식 스펙으로 포함 기존의 불변 데이터 객체 public class Person { private final String name; private final int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } } ㆍ 상태(name, age)를 보유하는 불변 객체를 생성하기 위한 많은 코드를 작성함 - 모든 필드에 f.. 2021. 9. 9.
[Java] @value 어노테이션을 통해 의존성 주입시 주의사항 @Value 어노테이션을 통해 클래스 필드에 의존성 주입을 할 경우 객체가 생성되고 난 후 주입된다. 즉, 객체 생성자가 실행되는 시점에선 @Value 값이 null이 되므로 주의해야한다. 대안으로 @Value 로 주입받은 값을 사용할 메소드를 따로 생성하고, @PostConstruct 어노테이션을 표시하여 사용할 수 있다. @Component("simgRealtimeInsurance") public class SimgRealtimeInsurance { @Value("${SIMG_SERVER_URL}") private String SERVER; private String URL_DRVING_INFO_SEND; private String URL_DRVING_INFO_BATCH_SEND; @Resource(.. 2021. 8. 30.
[Java] 제네릭(Generics) 제네릭(Generics)이란? · 다양한 타입의 객체들을 다루는 메서드, 클래스, 인터페이스를 컴파일 타임에 타입체크 해주는 기능(JDK 1.5에 도입) ex) 컬렉션 프레임워크 · 클래스, 인터페이스, 메서드 내부에서 사용할 수 있는 타입을 제한할 수도 있음 ex) 'extends'를 사용하면, 특정 타입의 자손들만 대입할 수 있게 제한할 수 있다. 예시 - Fruit 클래스 또는 Fruit 클래스의 하위 클래스로 타입 파라미터 제한 Class FruitBox{ArrayList list = new ArrayList();} · 클래스가 아니라 인터페이스를 구현해야 한다는 제약이 필요해도 'implements'가 아닌 'extends'를 사용한다. 클래스 Fruit의 자손이면서 Eatable인터페이스도 구.. 2021. 8. 30.
반응형