[Java] 업 캐스팅
·
Language/Java
업 캐스팅부모타입에 자식 생성자Parent P = new Child();자식 클래스 객체를 부모 타입의 참조 변수로 가리키는 것자동 형변환 (명시적 캐스팅 필요 없음)자바에서 다형성을 구현하기 위한 핵심 개념🔎 자바에서 업캐스팅을 왜 사용할까 ? (핵심 포인트 5가지)1️⃣ 다형성(Polymorphism) 구현업캐스팅의 가장 중요한 목적Animal a1 = new Dog();Animal a2 = new Cat();a1.speak(); // 멍멍a2.speak(); // 야옹부모 타입으로 다양한 자식 객체를 담을 수 있음동일한 메서드 호출이지만, 각 객체에 맞는 동작 실행됨 → 오버라이딩 + 동적 바인딩2️⃣ 공통된 인터페이스/타입으로 묶어서 처리 가능컬렉션, 배열 등에서 매우 유용List animals..
[Java] 스트림
·
Language/Java
스트림(stream)이란 ?스트림이란 이름에서도 알 수 있듯, 데이터를 효율적으로 처리할 수 있는 흐름을 말한다.스트림은 선언형 스타일로 가독성이 굉장히 뛰어나며 데이터 준비 → 중간 연산 → 최종 연산 순으로 처리된다. 스트림은 컬렉션(List, Set 등) 과 함께 자주 이용되기도 한다.스트림의 특징데이터 흐름(데이터 스트림)스트림은 데이터를 한 방향으로 전달하며, 여러 연산을 적용할 수 있음.컬렉션과 다르게 데이터를 직접 저장하지 않음리스트(List), 셋(Set), 맵(Map)과 달리 데이터를 저장하는 구조가 아님.즉, 스트림은 데이터를 "흐르게" 하면서 변형하는 도구.한 번 사용하면 다시 사용할 수 없음스트림은 한 번 실행되면 재사용할 수 없음.중간 연산(Intermediate Operation..
[Java] if-else와 try-catch에 대해서
·
Language/Java
너무나 당연하게 예외처리를 하고 있었던 와중에, 예외처리가 꼭 필요할까 ? 에 대한 생각이 들었다. 그냥 습관적으로 예외 핸들링을 하고 있었던 것 같달까 ….따지고 보면 if-else 와 같은 조건문으로 입력 값을 처리하는거나 try-catch 등을 활용하여 예외를 처리하는 것이 콘솔의 결과창으로 봤을 때는 동일하게 느껴졌기 때문이다.따라서 원초적인 질문에 대해 정리하는 시간을 가졌다. 요즘 개발을 하면서 사소한 것 하나부터 끈질기게 의심하고 “왜” 해야하는지에 대해 치열하게 고민하려고 노력중이다.그래서, 왜 ! 예외처리가 필요할까 ?if-else로 예상되는 잘못된 값을 처리하는 것과 예외를 처리하는 것은 개념적으로 차이가 있다.1. if-else로 예상되는 잘못된 값 처리if-else는 예측 가능한 잘..
[Java] 제네릭(Generic)
·
Language/Java
제네릭 (Generic) 이란 ?제네릭은 이름에서도 알 수 있듯, “일반적인(Generic)” 뜻을 지니고 있다. 즉, 데이터 타입을 일반화하여, 여러 타입을 받을 수 있도록 만드는 기능을 담당한다.💡쉽게 말해:"데이터 타입을 미리 지정하지 않고, 필요할 때 정할 수 있도록 해주는 기능” 자바에서 배열과 함께 자주 쓰이는 자료형이 리스트인데, 다음과 같이 클래스 선언 문법에 꺽쇠 괄호 로 되어 있는 형태다.ArrayList list = new ArrayList();저 꺽쇠 괄호를 바로 제네릭이라고 한다. 괄호 안에는 타입 명을 기재할 수 있다.제네릭이 없는 경우import java.util.ArrayList;public class WithoutGenerics { public static void..
[Java] 기본형과 참조형
·
Language/Java
1️⃣ 기본형 vs 참조형 1 - 시작자바의 참조형은 매우 어렵고 이해하기 힘들다. 따라서 기본형과 참조형을 심도있게 정리해보고자 한다.변수의 데이터 타입은 크게 두 가지로 나뉜다. 사용하는 값을 변수에 직접 넣을 수 있는 기본형, 그리고 이전에 본 Student student1 과 같이 객체가 저장된 메모리의 위치를 가리키는 참조값을 넣을 수 있는 참조형으로 분류할 수 있다.기본형(Primitive Type): int , long , double , boolean 처럼 변수에 사용할 값을 직접 넣을 수 있는 데이터 타입을 기본형이라 한다.참조형(Reference Type): Student student1 , int[] students 와 같이 데이터에 접근하기 위한 참조(주소)를 저장하는 데이터 타입을..
[Java] 익명 클래스 (Annoymous Class)와 람다 (Lamda)
·
Language/Java
람다식을 알기전에, 배경지식으로 반드시 알아야 할 내용이 바로 익명 클래스다.익명 클래스 (Annoymous Class)익명 클래스는 내부 클래스(Inner class) 일종으로 단어 그대로 이름이 없는 클래스다.익명, 이름이 없다는 것은 알 필요가 없다는 것이며, 나중에 재사용될 일이 없다는 뜻을 지닌다. 즉, 프로그램에서 일시적으로 한 번만 사용되고 버려지는 객체라고 보면 된다. (일회용 클래스) 익명 클래스와 일반 클래스의 사용 예제// 부모 클래스class Greeting { void sayHello() { System.out.println("안녕하세요!"); }}// 자식 클래스, 별도의 클래스 정의class EnglishGreeting extends Greeting { ..