개발공부 34

[JAVA] 람다식

람다식 메서드를 하나의 식으로 표현한 것. 함수를 간략하면서도 명확한 식으로 표현할 수 있게 해준다. int[] arr = new int[5]; Arrays.setAll(arr, (i) -> (int)(Math.random()*5)+1); int method() { return (int)(Math.random()*5) + 1; } 모든 메서드는 클래스에 포함되어야 하므로 클래스로 새로 만들어야 하고, 객체도 생성한 후에야 메서드를 호출할 수 있다. 그러나 람다식은 모든 과정 없이 오직 람다식 자체만으로 메서드의 역할을 대신할 수 있다. 람다식의 작성 익명함수답게 메서드에서 이름과 반환타입을 제거하고 매개변수 선언부와 몸통 사이에 ->을 추가한다. 반환타입 메서드이름(매개변수 선언) { 문장 } (매개변수..

STUDY/JAVA 2022.04.10

[JAVA] 제네릭(지네릭스) Generics

지네릭스 일반적인, 보편적인 ---> "타입" (1) 기본타입을 대상으로 하지 않음 (2) 참조타입을 대상으로 함 지네릭스는 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입체크를 해주는 기능이다. 객체의 타입을 컴파일 시에 체크하기 때문에 객체의 타입 안정성을 높이고 형변환의 번거로움이 줄어든다. 객체의 타입 안정성 상승 = 의도하지 않은 타입의 객체 저장을 막고, 잘못 형변환되는 오류를 줄여준다는 뜻 지네릭스의 장점 1. 타입 안정성을 제공 2. 타입체크와 형변환을 생략할 수 있으므로 코드가 간결해진다. 지네릭 클래스의 선언 class Box { Object item; void setItem(Object item) {this.item = item;} Object getItem(..

STUDY/JAVA 2022.04.06

[JAVA] 예외

예외 Exception Handling 프로그램 오류 프로그램 실행 중 어떤 원인에 의해서 오작동을 하거나 비정상적으로 종료되는 경우, 이러한 결과를 초래하는 원인 컴파일 에러: 컴파일 시에 발생하는 에러 런타임 에러: 실행 시에 발생하는 에러 논리적 에러: 실행은 되지만 의도와 다르게 동작하는 것 자바에서는 실행(runtime)시 발생할 수 있는 프로그램 오류를 에러error와 예외exception으로 구분한다. 에러는 메모리부족OutOfMemoryError나 스택오버플로우StackOverflowError와 같이 일단 발생하면 복구할 수 없는 심각한 오류이고, 예외는 발생하더라도 수습될 수 있는 비교적 덜 심각한 것이다. 에러가 발생하면 프로그램의 비정상적인 종료를 막을 길이 없지만, 예외는 발생하더라..

STUDY/JAVA 2022.04.03

[JAVA] 추상

추상 클래스 abstract class 클래스를 설계도에 비유한다면 추상클래스는 미완성 설계도이다. 클래스가 미완성이라는 것은 멤버의 개수에 관계된 것이 아니라, 단지 미완성 메서드(추상 메서드)를 포함하고 있다는 의미이다. 추상클래스 자체로는 클래스로서의 역할을 다 못하지만 새로운 클래스를 작성하는데 있어 바탕이 되는 조상클래스로서 중요한 의미를 갖는다. 추상화: 클래스간의 공통점을 찾아내어 공통의 조상을 만드는 작업 구체화: 상속을 통해 클래스를 구현, 확장하는 작업 추상클래스의 작성 abstract class 클래스이름 { ;; } // end class 추상클래스에도 생성자가 있으며 멤버변수와 메서드도 가질 수 있다. 추상 메서드 abstract method 선언부만 작성하고 구현부는 작성하지 않..

STUDY/JAVA 2022.04.03

[JAVA] 다형성

다형성 [Polymorphism] : 여러가지 형태를 가질 수 있는 능력 같은 부모타입이지만 부모타입 변수에 대입된 자식객체가 부모타입의 선언된 메소드를 재정의한 경우, 부모타입 메소드를 수행했을 때 대입된 자식객체의 재정의된 다양한 성질을 가지는 메소드가 수행됨으로써 다양한 결과가 나오는 이 성질을 "다형성"이라고 한다. 부모 타입에는 모든 자식 객체가 대입 가능하다. = 조상클래스 타입의 참조변수로 자손클래스의 인스턴스를 참조할 수 있도록 하였다. 참조변수가 사용할 수 있는 멤버의 개수는 인스턴스의 멤버 개수보다 같거나 적어야 한다. (* 클래스는 상속을 통해서 확장될 수는 있어도 축소될 수는 없으므로, 조상 인스턴스의 멤버 개수는 자손 인스턴스의 멤버 개수보다 항상 적거나 같다.) 조상타입의 참조변..

STUDY/JAVA 2022.04.02

[JAVA] 인터페이스

인터페이스 일종의 추상클래스이다. 추상클래스처럼 추상메소드를 갖지만 추상클래스보다 추상화 정도가 높아서 추상클래스와 달리 몸통을 갖춘 일반 메서도 또는 멤버변수를 구성원으로 가질 수 없다. 오직 추상메서드와 상수만을 멤버로 가질 수 있으며, 그 외의 다른 어떠한 요소도 허용하지 않는다. 인터페이스 선언 멤버: 가. static final 상수 선언 나. 추상 메소드 선언 -----------------------@until 7 다. 디폴트 메소드(인스턴스 메소드) 라. 정적 메소드(class에 소속된 메소드) 인터페이스 = 커뮤니케이션 개발코드와 객체가 서로 통신하는 접점 - 개발코드는 인터페이스의 메소드만 알고 있으면 OK 인터페이스의 작성 클래스를 작성하는 것과 유사하지만 키워드를 class 대신 i..

STUDY/JAVA 2022.03.31

[JAVA] 제어자

제어자Modifier 제어자는 클래스, 변수, 또는 메소드의 선언부와 함게 사용되어 부가적인 의미를 부여한다. 접근제어자: public, protected, default, private 그외: static, final, abstract, native, transient, synchronized, volatile, strictfp 제어자는 클래스나 멤버 변수에 주로 사용되며, 하나의 대상에 대해서 여러 제어자를 조합하여 사용하는 것이 가능하다. static - 클래스의, 공통적인 static이 사용될 수 있는 곳 -> 멤버변수, 메소드, 초기화 블록 인스턴스 변수는 하나의 클래스로부터 생성되었더라도 각기 다른 값을 유지하지만 클래스변수(static 멤버변수)는 인스턴스에 관계 없이 같은 값을 갖는다. 하..

STUDY/JAVA 2022.03.30

[JAVA] import문

import문 소스코드를 작성할 때 다른 패키지의 클래스를 사용하려면 패키지명이 포함된 클래스 이름을 사용해야 한다. 이러한 불편함을 해결하기 위해서는, 클래스의 코드를 작성하기 전에 import문으로 사용하고자 하는 클래스의 패키지를 미리 명시해주면 소스코드에서 사용되는 클래스 이름에서 패키지명은 생략할 수 있다. import문의 역할은 컴파일러에게 소스파일에 사용된 클래스의 패키지에 대한 정보를 제공하는 것이다. 일반적인 소스 파일(*.java)의 구성 1. package문 2. import문 3. 클래스 선언 import문의 선언 모든 소스파일에서 import문은 package문 다음에, 그리고 클래스 선언문 이전에 위치한다. 한 소스파일에서 여러 번 선언할 수 있다. import Package.c..

STUDY/JAVA 2022.03.30

[JAVA] String 타입

String 타입 "문자열 객체"를 찍어내는 틀 문자열을 저장하는 클래스 타입 String name = "ABC"; Lvalue = Rvalue 그릇 = 주소 보관 변수 똑같은 문자열은 단 한 번만 객체가 생성된다. String name2 = "ABC"; 같은 주소를 갖는다. Intergar number = 100; intergar : 정수를 찍어내는 틀(class), 참조 타입 중 하나 Integar number = new Integar(100); 정수의 자리에는 정수가 들어가야 한다.

STUDY/JAVA 2022.03.30

[JAVA] 오버라이딩과 오버로딩

오버라이딩 조상 클래스로부터 상속받은 메소드의 내용을 변경하는 것 오버라이딩의 조건 오버라이딩은 메소드의 내용만을 새로 작성하는 것이므로 메소드의 선언부는 조상의 것과 일치해야 한다. 자손클래스에서 오버라이딩하는 메소드는 조상 클래스의 메소드와 - 이름이 같아야 한다. - 매개 변수가 같아야 한다. - 반환 타입이 같아야 한다. - 단, 접근 제어자와 예외는 제한된 조건 하에서만 다르게 변경할 수 있다. 접근제어자와 예외는 제한된 조건 하에서만 다르게 변경할 수 있다. - 접근 제어자는 조상 클래스의 메소드보다 좁은 범위로 변경할 수 없다. - 조상 클래스의 메소드보다 많은 수의 예외를 선언할 수 없다. 오버로딩 : 기존에 없는 새로운 메소드를 정의하는 것 package Inheritance; publi..

STUDY/JAVA 2022.03.29