Language/Java 10

Java - 람다식

람다식 : 익명 함수를 생성하기 위한 식, 함수에 가까움 매개변수가 하나일 경우 소괄호 생략 가능, 람다식 내 코드가 한 줄일 경우 중괄호 생략 가능 return문만 있을 때는 중괄호 생략 불가 // (타입 매개변수1, 매개변수2, ...) -> { ... } // 혹은 // (매개변수1, 매개변수2, ...) -> { ... } // 람다식 예시 (int a) -> { sout(a); }; - 람다식에서의 메소드 매개변수 또는 로컬 변수는 final 특성을 가짐 : 수정 불가 함수적 인터페이스(@FunctionalInterface) : 하나의 추상 메소드가 선언된 인터페이스를 람다식을 이용하여 구현 객체를 생성하고자 할 때 사용 인터페이스 상단에 @FunctionalInterface 어노테이션을 붙여서..

Language/Java 2021.07.18

Java - 제네릭

제네릭 타입이란? 타입을 파라미터로 가지는 클래스와 인터페이스 상속과 구현에 사용될 수 있음 public class 클래스명 { ... } public interface 인터페이스명 { ... } // 혹은 public class 클래스명 { ... } public interface 인터페이스명 { ... } → 제네릭 타입의 장점 1. 컴파일 시 강한 타입 체크 : 타입 에러 방지 2. 타입 변환 제거 : 요소를 명시하기 때문 - 예시 // Box 클래스 선언 public class Box { private T object; public T get() { return t; } public void set(T t) { this.t = t; } } // Box 제네릭 타입 이용 public class Bo..

Language/Java 2021.07.07

Java - 멀티 스레드 정리

스레드란? CPU가 독립적으로 처리하는 하나의 작업 단위 프로세스를 이루는 작은 단위 멀티 스레드 - 어플리케이션 내부에서의 멀티 태스킹 - 멀티 스레드가 모여 프로세스를 이루고 프로세스가 모여 멀티 프로세스를 이룸 메인 스레드 - main() 메소드의 첫 코드부터 순차적으로 실행 - 필요에 따라 작업 스레드들을 만들어 병렬로 코드 실행 가능(=멀티 스레드) 싱글 스레드 어플리케이션 vs 멀티 스레드 어플리케이션 - 싱글 스레드 어플리케이션 : 메인 스레드가 종료되면 프로세스도 종료 - 멀티 스레드 어플리케이션 : 실행 중인 작업 스레드가 남아있으면 종료되지 않음 작업 스레드 - 생성 1. Thread 클래스로부터 직접 생성(Runnable로 생성) Thread thread = new Thread(new..

Language/Java 2021.07.02

Java - 기본 API 클래스 정리

java.lang 패키지 기본 패키지, import 없이 사용 가능 클래스 용도 Object 자바 클래스의 최상위 클래스로 사용 System 표준 입력 장치(키보드)로부터 데이터를 입력받을 때 사용 표준 출력장치(모니터)로 출력하기 위해 사용 자바 가상 기계를 종료시킬 때 사용 쓰레기 수집기를 실행 요청할 때 사용 Class 클래스를 메모리로 로딩할 때 사용 String 문자열을 저장하고 여러 가지 정보를 얻을 때 사용 StringBuffer, StringBuilder 문자열을 저장하고 내부 문자열을 조작할 때 사용 Math 수학 함수를 이용할 때 사용 Wrapper (Byte, Short, Character, Integer, Float, Double, Boolean, Long) 기본 타입의 데이털르 갖..

Language/Java 2021.06.25

Java - 중첩 클래스와 중첩 인터페이스, 예외 처리 복습

중첩 클래스/인터페이스 : 클래스 내부에 선언한 클래스/인터페이스 class ClassName { class NestedClassName { // 중첩 클래스 예시 ... } interface NestedInterfaceName { // 중첩 인터페이스 예시 ... } } - 장점 1. 두 클래스의 멤버들에 쉽게 접근 가능 2. 코드 복잡성 감소 중첩 클래스 - 멤버 클래스 1. 인스턴스 멤버 클래스 : 인스턴스 필드와 메소드 선언 가능(정적 필드/메소드는 X) 외부에서 접근시 A 객체를 먼저 생성하고 B 객체를 생성한 후에 사용 가능 → 장점: 바깥 클래스 접근 가능 // 인스턴스 멤버 클래스 예시 class A { class B { B() { ... } int field; void method1() ..

Language/Java 2021.06.25

Java - 인터페이스 복습

인터페이스 // 인터페이스 예시 interface RemoteControl { public static final int MAX_VALUE = 10; // public static final 생략 가능 int MIN_VALUE = 0; public void turnOn(); public void turnOff(); public void setVolume(int volume); } : 객체의 사용 방법을 정의한 타입 자바의 다형성과 관련 상수 필드와 메소드를 가짐(클래스와의 차이점) - 특징 1. 상수 필드만 가질 수 있으므로 변수를 선언해도 자동으로 상수 변환 ex) int a = 1; → public static final int a = 1; 로 변환 2. 추상 메소드 선언시 public abstrac..

Language/Java 2021.06.24

Java - 상속 복습

상속 // 상속 예시 class 자식클래스 extends 부모클래스 { super(); // 부모 생성자(자동 생성), 반드시 첫 줄에 위치 ... } - 특징 1. private 접근 제한을 갖는 필드와 메소드는 상속 제외 2. 클래스 다중상속 불가(인터페이스는 다중상속 가능) 3. 부모가 먼저 생성 → 자식이 그 다음에 생성 - 장점: 코드 중복 제거 - super(): 부모 클래스의 생성자를 호출할 때 사용, 매개변수 지정 가능 메소드 재정의(=메소드 오버라이딩) : 상속된 메소드의 내용이 자식 클래스에 맞지 않을 경우 자식 클래스에서 동일한 메소드를 재정의 @Override 어노테이션을 앞에 붙임 class Parent { void method1() { ... } void method2() { ...

Language/Java 2021.06.23

Java - 클래스 복습

객체(Object) : 물리적이거나 추상적인 것들 중 다른 것과 식별 가능한 속성 → 특징 1. 속성(필드)과 동작(메소드)으로 구성 ex) 객체 - 사람 속성 - 이름, 나이 동작 - 웃다, 걷다 2. 객체 모델링: 현실세계의 객체를 소프트웨어의 객체(= 필드 + 메소드)로 정의하는 것 3. 객체&메소드 호출: 객체에 도트(.) 연산자를 붙여 호출 객체 간의 관계 1. 집합 관계 : 완성품 객체 내에 여러 객체가 속함 2. 사용 관계 : 객체 간의 상호작용 ex) 사람이 자동차를 사용 → 달린다, 멈춘다 메소드 호출 3. 상속 관계 : 상위(부모) 객체와 하위(자식) 객체를 갖는 관계 일반적으로 상위 객체는 종류, 하위 객체는 사물에 해당 ex) 기계(상위 객체) ↔ 자동차(하위 객체) 객체지향 프로그..

Language/Java 2021.06.22

Java - 참조 타입 복습

데이터 타입 - 기본 타입(Primitive Type) : 정수, 실수, 문자, 논리 리터럴을 저장하는 타입 - 참조 타입(Reference Type) : 객체의 번지를 참조하는 타입 = 배열, 열거, 클래스, 인터페이스 등 + 문자열(String) → 차이점 1. 기본 타입(일반 변수)는 값을 스택 영역에 저장하고, 참조 타입(객체)은 값을 힙 영역에 저장, 스택 영역에는 번지를 저장 2. 참조 타입 변수는 null로 초기화 가능 메모리 사용 영역 1. 메소드 영역 : 코드에서 사용되는 클래스를 클래스 로더로 읽어 클래스별로 런타임 상수풀, 필드/메소드 데이터, 메소드/생성자 코드 등을 분류하여 저장 → 모든 스레드가 공유 2. 힙 영역 : 객체와 배열이 생성되는 영역 3. JVM 스택 영역 : 메소드..

Language/Java 2021.06.19

Java - 개념, 변수, 연산자, 조건문과 반복문 복습

대학생 시절 때 자바 과목을 수강했었는데 무려 C+을 맞았다. 그 당시엔 너무 슬펐는데 지금 와서 생각해 보니 공부 하나도 안했는데도 씨쁠을 주신 교수님이 혜자스럽다. 내가 왜 자바 재수강을 안하고 졸업했는지 의문이다. 아마 내가 웹 개발을 하게될 줄 몰랐던 게 아닐까? 암튼 회사에서 스프링 프레임워크를 사용하면서 개발을 하다 보니 나도 모르게 야매로 배운 자바에 대한 한계가 느껴졌다... 물론 엄청 기본적인 부분은 다 알지만 클래스나 상속 등 중요한 뒷 내용을 싸그리 까묵었다 이거야! 그래서 2년 전에 사놓고 포장도 안뜯은 자바책을 오늘 개봉해서 시간 날 때마다 복습을 하려고 한다. 서론 넘나 긴 것.... 이제부터 정리를 시작한다. Java Class → 클래스명 첫 글자는 대문자로 한다. // 대충..

Language/Java 2021.06.18