본문 바로가기

java21

Step23. 예외처리(Exception) □ 예외처리 : 프로그램에 문제가 있는 것을 말하며, 예외로 인해 시스템 동작이 멈추는 것을 막는것. 즉, 전체적인 흐름을 끊지 않기 위해서 예외처리를 진행. ○ Exception : Error는 개발자가 대처가능 - Checked Exception : 예외처리를 반드시 해야하는 경우(네트워크, 파일 시스템 등) - Unchecked Exception : 예외처리를 개발자의 판단에 맞기는 경우(데이터 오류 등) - Exception 클래스 : NullPointerException, NumberFormatException 등 ▷ NullPointerException : 객체를 가리키지 않고 있는 레퍼런스 이용시 ▷ ArrayIndexOutOfBoundException : 배열에서 존재하지 않는 인덱스를 가.. 2023. 9. 26.
Step22. Collections(List&Map) □ Collections ○ List : 인터페이스로 이를 구현한 클래스는 인덱스를 이용해서 데이터를 관리 - 특징(1) 인덱스를 이용 - 특징(2) 데이터 중복 가능 ○ Map : 인터페이스로 이를 구현한 클래스는 key를 이용해서 데이터를 관리 - 특징(1) key 이용 - 특징(2) key 중복될 수 없음 - 특징(3) 데이터 중복이 가능 2023. 9. 26.
Step21. 문자열 클래스 □ 문자열클래스 ○ 문자열을 다루는 String 클래스(객체)는 데이터가 변경되면 메모리상의 변화가 많아 속도가 느려짐 ○ 문자열이 변경되면 기존의 객체를 버리고 새로운 객체를 메모리에 생성함. ○ 기존 객체는 GC에 의해 메모리회수가 진행됨 ○ StringBuffer, StringBuilder - String 클래스의 단점을 보완한 클래스로 데이터가 변경되면 메모리에서 기존 객체를 재활용함 - 속도 : StringBuffer StringBuilder 2023. 9. 26.
Step20. 람다식(Lamda) □ 람다식 ○ 익명함수(anoymous function)을 이용해서 익명 객체를 생성하기 위한 식 ○ 기본적으로 함수를 만들어 사용한다고 생각하면 됨 ○ 장점 : 코딩 공수가 줄며 편하고 효율적임 예제 1) 인터페이스 생성 package person_test; //인터페이스 생성 public interface LamdaInterface1 { //선언부 public void method(String s1, String s2, String s3); } 예제 2) 생성된 인터페이스를 바탕으로 객체 생성 및 람다식 적용 package person_test; public class LamdaInterface1_Main { public static void main(String[] args) { LamdaInter.. 2023. 9. 26.
Step19. 추상 클래스(abstract) ○ 클래스의 공통된 부분을 뽑아서 별도의 클래스 즉, 추상클래스를 만들어 놓고 이를 상속해서 사용 ○ 추상 클래스의 특징 - 멤버변수를 가짐 - 추상클래스를 상속하기 위해서는 extends를 이용 - 추상 메서드를 가지며 상속한 클래스에서 반드시 구현해야함 - 일반 메서드도 가질수 있음 - 일반 클래스와 마찬가지로 생성자도 있음 ○ 추상 클래스와 인터페이스 공통점 - 추상 메서드를 가짐 - 객체 생성이 불가하며 자료형 타입으로 사용 ○ 추상 클래스와 인터페이스 차이점 - 추상 클래스 : 상수, 추상세서만 가짐. 추상 메서드를 구현만 하도록함. 다형성을 지원 - 인터페이스 : 클래스가 가지는 모든 속성과 기능을 가짐. 추상 메서드 구현 및 상속의 기능을 가짐. 단일 상속만 지원. 예제 1) 추상클래스 생성.. 2023. 9. 26.
Step18. 인터페이스(Interface) □ 인터페이스 ○ 클래스와 달리 객체를 생성할 수 없으며, 클래스에서 구현해야할 작업 명세서임 ○ 클래스에서 인터페이스를 구현하는 단계. 이때 인터페이스는 상세한 내역은 없고 껍데기만 있음 ○ public class 클래스명 + implements + 인터페이스A, 인터페이스B, 인터페이스C ~ ○ 사용이유 : 인터페이스를 사용하는 이유는 많지만 가장 큰 이유는 객체가 다양하 자료형(타입)을 가질 수 있기 때문 예제 1) 인터페이스 2개 생성 package pjt_test; //인터페이스 생성 public interface InterfaceA { //인터페이스상에서 메서드 선언만 할뿐 정의는 하지 않음 //정의는 {}활용 public void funA(); } package pjt_test; //인터페이.. 2023. 9. 25.
Step17. 내부클래스와 익명클래스 □ 내부클래스(inner) : 클래스 안에 또 다른 클래스를 선언하는 것으로 이렇게 하면 두 클래스의 멤버에 쉽게 접근 가능 예제1) 클래스 파일 생성 및 내부클래스, Static클래스 지정 package person_test; public class Outer_Class { //클래스 속성지정 int num = 10; String str1 = "java"; //static 을 활용하여 어디서나 공유가능한 속성 static String str11 = "world"; //생성자 public Outer_Class() { System.out.println("최초 생성자"); } //내부 클래스 생성 class InnerClass{ //내부클래스 속성 지정 int num = 100; String str2 = ".. 2023. 9. 25.
Step16. 오버라이드(Override)와 Super 클래스 □ 메서드 오버라이드(override) ○ 부모 클래스의 기능을 자식 클래스에서 재정의해서 사용 * 부모클래스명에 커서를 넣고 ctrl+t를 누르면 모든 상속관계를 조회할 수 있음 □ 자료형(타입) : 기본 자료형처럼 클래스도 자료형임 □ Super 클래스 : 상위 클래스를 호출할때 super 키워드를 이용 예제1) 부모클래스 생성 및 속성/메서드 정의 package person_test; //부모클래스 메서드 생성 public class China_Food_Parents { //클래스 속성 지정 int openYear = 1900; //부모클래스 생성자생성 public China_Food_Parents() { System.out.println("나는 생성자"); } //부모클래스 메서드 생성 publi.. 2023. 9. 25.
Step15. 상속과 Private 접근자 □ 상속 ○ 기존에 만들어진 클래스의 기능을 상속받아서 새로운 클래스를 쉽게 만들 수 있는 것 ○ 부모 클래스를 상속받은 자식 클래스는 부모 클래스의 속성과 기능도 이용할 수있음 ○ 부모클래스로부터 속성과 기능을 상속받아 생성된 자식클래스를 활용하여 생성된 객체는 부모/자식클래스의 속성과 기능을 활용할 수 있음 ○ 상속의 필요성 : 기존의 검증된 Class를 이용해서 빠르고 쉽게 새로운 Class를 만들 수 있음 ex) 할아버지 G음식점 개업 - 아버지 G음식점 인수 및 메뉴 개발 - 아들 G음식점 인수 및 기존 메뉴개선&신메뉴 개발 ○ exten 키워드를 이용해서 상속 구현 ○ Java는 단일상속만 가능함 □ 부모클래스의 private 접근자 ○ 자식클래스는 부모클래스의 모든 자원을 사용할 수 있지만,.. 2023. 9. 25.