전체 글
-
스트림(Stream)JAVA 2023. 3. 16. 13:23
물이 흐르듯이 객체를 연속척으로 처리하는 기능 요소들이 하나씩 흘러가면서 처리된다는 의미 람다식을 이용 스트림의 특징 처리 속도가 빠르고, 병렬 처리에 효율적(= 내부 반복자의 특징) 람다식으로 다양한 요소 처리 정의 가능 중간 처리와 최종 처리를 수행하도록 파이프 라인 형성 가능 내부 반복자 내부 반복자 : 요소 처리 방식을 컬렉션 내부로 주입시켜 내부에서 요소를 반복 처리 외부 반복자 : 컬렉션의 요소를 컬렉션에서 반복적으로 꺼내와서 처리 스트림을 이용하면 병령 처리가 가능하며, 이로 인해 CPU 처리 효율성 증대를 꾀할 수 있다. - 처리하는 요소가 적을 때는 멀티 스레드보다 싱글 스레드가 더 효율적이다. - 멀티 스레드 등의 병렬 처리는 처리하는 요소가 많을 경우에 더 효율적이다. 중간 처리와 최..
-
StringTokenizer를 이용한 문자열 파라미터 변환JAVA 2023. 3. 15. 16:48
하나의 문자열에 저장된 외부 파라미터 항목들을 String:ArrayList 형식의 Map으로 변환하는 메소드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 //하나의 문자열에 저장된 외부 파라미터 항목들을 String:ArrayList 형식의 Map으로 변환하는 메소드 public static Map stringToListMap(String data, String delimParam, String delimKey, String delimVal) { Map map = n..
-
람다식(Lamda Expression)JAVA 2023. 3. 15. 12:00
함수형 프로그래밍(functional programming) 데이터를 어떻게 처리할지에 대한 함수를 정의하고 이를 데이터 처리부로 보내 데이터를 처리하는 기법 함수를 전달 개체로 본다. 동일 데이터에 대해서 어떤 함수를 사용하냐에 따라 결과가 달라진다.(데이터 처리의 다형성) 메소드 : 클래스 또는 객체 안에서 객체의 기능을 정의한 것 람다식 자바에서 함수형 프로그래밍을 위해 추가 Java 8부터 지원 따로 이름을 정의하지 않고 사용. 람다식: (매개변수, ...) -> { 처리 내용 } 자바는 객체지향 언어이기 때문에 람다식을 익명 구형 객체로 처리한다. //익명 구현 객체 public void action(Calculable calculable) { int x = 10; int y = 4; calcu..
-
문자열 관련 클래스JAVA 2023. 3. 14. 11:58
String 클래스 문자열을 저장하고 조작할 때 사용 String 객체가 생성된 다음부터는 메모리(heap)에 저장된 값을 직접 수정하지 못하기 때문에 값을 복제한 후 필요한 부분만 변경하여 새로운 메모리에 할당해준다. (해쉬 코드가 최초 생성 당시와 다른 것으로 확인 가능) 주요 메소드 메소드 설명 byte[] getBytes() JVM에서 사용하는 기본 문자셋으로 String 문자열을 byte 배열로 변환. JVM(운영체제)에서 사용하는 기본 문자셋에 따라 byte 배열의 길이가 달라질 수 있다. (한글 '자'는 UTF-8 문자셋으로 3byte이고, EUC-KR 문자셋으로 2byte이다.) byte[] getBytes(String charsetName) 지정한 문자셋으로 String 문자열을 byte..
-
System 클래스JAVA 2023. 3. 13. 16:41
자바에서 운영체제의 일부 기능을 이용하기 위한 클래스 자바는 자바 가상 머신에서 실행되므로 운영체제의 모든 기능을 직접 접근하기 어렵다. 정적 필드와 정적 메소드로만 구성되어 있다. 생성자가 없다.(= 객체 생성할 필요 없이 바로 사용 가능) 정적 필드 필드 데이터 타입 설명 out PrintStream 콘솔에 문자 출력 (에러 이외의 내용 위주) err PrintStream 콘솔에 에러 내용 출력(붉은 색으로 표시) in InputStream 키보드 입력 키보드 입력 입력한 키 값에 대응되는 정수 값을 반환 System.in.read() 특정 키 입력 시에만 작동하는 기능을 정의할 때 사용 키 코드 표 키 0 1 2 3 4 5 6 7 8 9 코드 값 48 49 50 51 52 53 54 55 56 57..
-
Object 클래스JAVA 2023. 3. 13. 16:34
모든 클래스는 Object 클래스를 최상위 클래스로 상속받기 때문에 아무런 멤버를 선언하지 않았어도 Object 클래스의 필드와 메소드를 호출할 수 있다. java.lang 모듈에 소속된 클래스 주요 메소드 메소드 설명 boolean equals(Object ob) 인자로 들어온 객체의 번지를 비교("==" 연산자와 동일한 기능) 같으면 true, 아니면 false를 리턴. final Class getClass() 클래스 이름 출력. int hashCode() 객체의 해쉬 코드 출력. String toString() 객체의 인스턴스 참조값 출력. 특정 클래스에서는 오버라이딩하여 문자열을 출력하기도 함(String 등). 객체의 동등 비교 서로 다른 별개의 객체를 동등한 것으로 볼 것인지를 정의하는 것. ..
-
중첩 클래스(Nested Class)와 중첩 인터페이스(Nested Interface)JAVA 2023. 3. 10. 12:00
중첩 클래스 클래스 내부에 선언된 다른 클래스 특정 클래스만 관계를 맺을 경우에 사용 클래스의 멤버 사용이 편리하다. 외부에서는 중첨 관계의 클래스를 감춤으로써 코드의 복잡성을 줄일 수 있다. 바깥 클래스를 컴파일하면 중첩 클래스에 대한 별도의 바이트코드 파일(.class)이 생성된다. 중첩 클래스의 바이트코드 파일은 "$" 앞에 외부 클래스가 기록된다. 바깥클래스명$중첩클래스명.class 인스턴스 멤버 클래스 클래스의 인스턴스 멤버로 선언된 중첩 클래스 class 외부클래스 { [public | private] class 멤버클래스 { ... } } 일반적으로 private 접근 제한으로 설정하여 바깥 클래스 내부에서만 사용한다. 객체 생성은 바깥 클래스의 인스턴스 필드 값, 생성자, 인스턴스 메소드에..
-
제네릭(Generic)JAVA 2023. 3. 2. 21:50
제네릭(Generic) : 결정되지 않은 타입을 파라미터로 처리하고 실제 사용할 때 파라미터를 구체적인 타입으로 대체시키는 기능. 어떤 타입을 결정하지 않고 설계 - 필드 생성, 생성자, 매개변수 등 - 설계할 때는 구체적인 타입을 설정하지 않고, 실행할 때 설정하는 기능 Object 타입으로 선언하는 방법 - 자바의 모든 객체를 저장할 수 있다. (자바의 모든 클래스는 Object의 자식 클래스이기 때문) - Object 객체에 저장된 것을 꺼내려고 할 때 실제 어떤 타입인지 알기 어렵기 때문에 원래대로 복원하는데 어려움이 있다. 데이터 타입을 일반화. 로 표시 public class Box { public T content; } 단, 클래스를 선언할 때의 데이터 타입과 생성자를 호출할 때의 데이터 타..