본문 바로가기

자바9

[자바의 정석] 14. 람다식 1. 람다식이란? 람다식(Lambda expression)은 메서드를 하나의 '식(expression)'으로 표현한 것이다. 람다식은 함수를 간단하면서도 명확한 식으로 표현할 수 있게 해준다. 람다식을 '익명 함수(anonymous function)'이라고도 한다. 모든 메서드는 클래스에 포함되어야 하므로 클래스도 새로 만들어야 하고, 객체도 생성해야만 비로소 메서드를 호출할 수 있다. 그러나 람다식은 이 모든 과정 없이 오직 람다식 자체만으로도 메서드의 역할을 대신할 수 있다. 람다식은 메서드의 매개변수로 전달되어지는 것이 가능하고, 메서드의 결과로 반환될 수도 있다. 람다식으로 인해 메서드를 변수처럼 다루는 것이 가능해졌다. *메서드는 함수와 같은 의미지만, 특정 클래스에 반드시 속해야 한다는 제약이.. 2023. 12. 30.
[자바의 정석] 12. 애너테이션(annotation) 3.1 애너테이션이란? 프로그램의 소스코드 안에 다른 프로그램을 위한 정보를 미리 약속된 형식으로 포함시킨 것이다. 애너테이션은 주석처럼 프로그래밍 언어에 영향을 미치지 않으며, 유용한 정보를 제공할 수 있다는 장점이 있다. '@'을 붙여서 사용한다. 미리 정의된 태그들을 이용해서 주석 안에 정보를 저장하고, javadoc.exe라는 프로그램이 이 정보를 읽어서 문서를 작성하는데 사용한다. 3.2 표준 애너테이션 애너테이션 설명 @Override 컴파일러에게 오버라이딩하는 메서드라는 것을 알린다. @Deprecated 앞으로 사용하지 않을 것을 권장하는 대상에 붙인다. @SuppressWarnings 컴파일러의 특정 경고메시지가 나타나지 않게 해준다. @SafeVarargs 지네릭스 타입의 가변인자에 사.. 2023. 9. 30.
[자바의 정석] 12. 열거형(enums) 2.1 열거형이란? 열거형은 서로 관련된 상수를 편리하게 선언하기 위한 것으로 여러 상수를 정의할 때 사용하면 유용하다. *관련된 상수들을 같이 묶어 놓은 것. 자바는 타입에 안전한 열거형을 제공 class Card { enum Kind { CLOVER, HEART, DIAMOND, SPADE } //열거형 Kind를 정의 enum Value { TWO, THREE, FOUR } //열거형 Value를 정의 final Kind kind; //타입이 int가 아닌 Kind임에 유의하자. final Value value; } 자바의 열거형은 '타입에 안전한 열거형(typesafe enum)'이라서 실제 값이 같아도 타입이 다르면 컴파일 에러가 발생한다. 이처럼 값뿐만 아디라 타입까지 체크하기 때문에 타입에 .. 2023. 9. 29.
[자바의 정석] 12. 지네릭스 1.1 지네릭스란? 지네릭스는 다양한 타입의 객체들을 다루는 메서드나 컬레션 클래스의 컴파일 시의 타입 체크(compile - time type check)를 해주는 기능이다. 객체의 타입을 컴파일 시에 체크하기 때문에 객체의 타입 안정성을 높이고 형변환의 번거로움이 줄어든다.(컴파일 한계를 넘어서게 해줌) *컴파일러에게 타입정보를 주는 것. 형변환 에러를 줄일 수 있다. 지네릭스의 장점 타입 안정성을 제공한다 타입체크와 형변환을 생략할 수 있으므로 코드가 간결해진다. 간단히 얘기하면 다룰 객체의 타입을 미리 명시해줌으로써 번거로운 형변환을 줄여준다는 얘기다. 1.2 지네릭 클래스의 선언 지네릭 타입은 클래스와 메서드에 선언할 수 있다. 클래스에 선언하는 지네릭 타입 //일반 클래스 class Box {.. 2023. 9. 28.
[자바의 정석] 06. 객체지향 프로그래밍Ⅰ(1) 1. 객체지향언어 1.2 객체지향언어 객체지향언어(설계) = 프로그래밍언어+객체지향 개념(규칙) 핵심개념 캡슐화 상속 추상화 다형성★ 갹체지향 언어의 주요 특징 코드의 재사용성이 높다. → 새로운 코드를 작성할 때 기존의 코드를 이용하여 쉽게 작성할 수 있다. 코드의 관리가 용이하다. → 코드간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경할 수 있다. 신뢰성이 높은 프로그래밍을 가능하게 한다. → 제어자와 메서드를 이용해서 데이터를 보호하고 올바른 값을 유지하도록 하며, 코드의 중복을 제거하여 코드의 불일치로 인한 오작동을 방지할 수 있다. 2. 클래스와 객체 2.1 클래스와 객체의 정의와 용도 클래스 왜 필요? 객체(제품)를 생성하기 위해 객체(제품) 왜 필요? 객체를 사용하기 위해 객체(TV)를.. 2023. 7. 29.
[자바의 정석] 05. 배열(Array) 1. 배열(array) 1.1 배열(array)이란? 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것을 ‘배열(array)’이라고 한다. 여기서 중요한 것은 ‘같은 타입’이어야 한다는 것 int score1, score2, score3, score4, score5; ↓변수 대신 배열을 이용하면 다음과 같인 간단하게 처리할 수 있다. int[] score = new int[5]; // 5개의 int 값을 저장할 수 있는 배열을 생성한다. 변수 score는 배열을 다루는데 필요한 참조변수일 뿐 값을 저장하기 위한 공간은 아니다. 변수와 달리 배열은 각 저장공간이 연속적으로 배치되어 있다는 특징이 있다. 1.2 배열의 선언과 생성 배열의 선언 - 배열을 다루기 위한 참조변수의 선언 생성해야 실제로 저장공간.. 2023. 7. 28.
[자바의 정석] 04. 조건문과 반복문 1. 조건문 - if, switch 프로그램의 흐름(flow)를 바꾸는 역할을 하는 문장들을 ‘제어문(controlstatement)’이라고 한다. 제어문에는 ‘조건문과 반목문’이 있는데, 조건문은 조건에 따라 다른 문장이 수행되도록 하고, 반복문은 특정 문장들을 반복해서 수행한다. 1.1 if문 if문은 가장 기본적인 조건문 만일(if) 조건식이 참(true)이면 괄호{} 안의 문장들을 수행하라. if (조건식) { //조건식이 참(true) 일 때 수행될 문장들을 적는다. } //조건식이 거짓(false)이면, if문 다음의 문장으로 넘어간다. 조건식 if문에 사용되는 조건식은 일반적으로 비교연산자와 논리연산자로 구성된다. [자주 사용되는 조건식] 조건식 조건식이 참일 조건 90 2023. 7. 27.
[자바의 정석] 03. 연산자(Operator) 1. 연산자(operator) 연산을 수행하는 기호 1.1 연산자와 피연산자 연산자가 연산을 수행하려면 반드시 연산의 대상이 있어야 한다(피연산자) 피연산자로 상수, 변수 또는 식(式) 등을 사용할 수 있다. 연산자(operator) : 연산을 수행하는 기호(+,-,*,/등) 피연산자(poerand) : 연산자의 작업 대상(변수, 상수, 리터럴, 수식) “모든 연산자는 연산 결과를 반환한다” 1.2 식(式)과 대입연산자 연산자와 피연산자를 조합하여 계산하고자하는 바를 표현한것을 ‘식(式, expression)’이라고 한다. 식을 계산하여 결과를 얻는 것을 ‘식을 평가(evaluation)한다’고 한다. 1.3 연산자의 종류 [연산자의 기능별 분류] 종류 연산자 설명 산술 연산자 + - * / % >(x).. 2023. 7. 27.
[자바의 정석] 02. 변수(Variable) 학원 개강 전 자바의 정석 1권 3회독 2권 1회독으로 예습 후에 개강하였다. 프로젝트와 수료 후 자바 지식이 많이 휘발되어서 복습과 정리를 하기로 했다. 1. 변수(variable) 1.1 변수란? 단 하나의 값을 저장할 수 있는 메모리 공간 1.2 변수의 선언과 초기화 변수 타입 : 변수에 저장될 값이 어떤 타입 인지를 지정하는 것 변수 이름 : 변수에 붙인 이름(메모리 공간에 이름을 붙여주는 것) 변수에 값을 저장하고 저장된 값을 읽어올수도 있음 같은 이름의 변수는 존재할 수 없음 int(변수타입) age(변수이름); //age라는 이름의 변수를 선언 변수의 이름은 메모리 공간에 이름을 붙여주는 것이다. 그래야 그 이름을 이용해서 저장공간(변수)에 값을 저장하고, 저장된 값을 읽어오기도 할 수 있는.. 2023. 7. 26.