Java 37

상속 관계와 생성자

자바에는 상속(Inheritance)이 존재합니다. 상속 관계에서는 상위 클래스와 하위 클래스가 있습니다. 하위 클래스는 상위 클래스를 상속하여 그 부모의 멤버-필드와 메서드-를 받아 사용할 수 있습니다.  예를 들어 아래와 같이 사용할 수 있습니다.class SuperClass { int age; int height; String name; Sex sex; sc.eat("사랑스러운 소고기");}class SubClass extends SuperClass{ public SubClass() { }}public class Main { public static void main(String[] args) throws InterruptedException { SubClass sc = new Sub..

Java/Java 문법 2024.12.26

캡상추다 - 다형성(같은 이름의 다양한 형태)

자바의 다형성(Polymorphism)은 같은 이름의 메서드나 객체가 여러 다른 형태로 동작할 수 있게 만드는 개념입니다.자바에서 다형성이라고 하면 다양한 이야기를 할 수 있지만,이 글에서는 기본인 오버라이딩과 오버로딩에 대해 이야기 하겠습니다.  오버라이딩 : 같은 메서드 이름, 같은 매개 변수로 상위 클래스의 메서드를 재정의오버로딩 : 같은 메서드 이름, 다른 매개 변수로 다수의 메서드를 중복 정의 public class Animal { public String name; public void showName() { System.out.printf("안녕하세요, %s입니다\n", name); } } public class Male extends Animal {..

Java/Java 문법 2024.10.13

정규 표현식(Regular Expression)

**정규 표현식(Regular Expression, RegEx)**은 문자열의 패턴을 정의하는 방법으로, 문자열을 검색, 추출, 치환하는 데 사용됩니다. 정규 표현식은 자바의 java.util.regex 패키지를 통해 사용할 수 있습니다. 이 패키지는 두 개의 주요 클래스인 Pattern과 Matcher를 제공하며, 이를 통해 패턴 매칭 작업을 수행합니다.  메타 문자설명예시설명.임의의 단일 문자 (\n 제외)a.ba, 임의의 단일 문자, b와 매칭^문자열의 시작을 나타냄^abcabc로 시작하는 문자열과 매칭$문자열의 끝을 나타냄xyz$xyz로 끝나는 문자열과 매칭*0개 이상의 문자가 반복됨ab*a 뒤에 b가 0개 이상 있는 경우와 매칭+1개 이상의 문자가 반복됨cd+c 뒤에 d가 1개 이상 있는 경우와..

Java/Java 문법 2024.10.12

Enum

Enum(enumeration : 열거) 제한된 목록에서 값을 가져와 사용하기 위해 만듭니다! 제한된 목록이란 예를 들어 성별의 남, 여 요일의 월, 화, 수, 목, 금, 토, 일 계절의 봄, 여름, 가을, 겨울 월, 혈액형 등이 있습니다. Enumpublic enum Season { // 변하지 않는 값이기에 상수처럼 대문자로 적는 것이 관례 SPRING, SUMMER, FALL, WINTER}  Enumpublic enum Week { MONDAY, TUESDAY, WEDNESDAY,// WENDESDAY 동일한 값 넣을 수 없음 THURSDAY, FRIDAY, SATURDAY, SUNDAY, FALL}  Classimpor..

Java/Java 문법 2024.10.10

Java) 캡상추다 - 상속(재사용+확장) feat.인터페이스

상속을 사전에 검색했을 때 '뒤를 이음' 이라는 의미가 제일 먼저 나옵니다. 자바의 상속도 부모와 자식을 떠올리기 보다는 '뒤를 잇는다'는 의미를 떠올려주세요. 왜냐하면 클래스의 상속이라는 건 할아버지 - 아버지 - 딸과 같은 가계도와 같지 않고 동물 - 포유류 - 인간과 같은 분류도와 같기 때문입니다.        "아버지가 할아버지의 뒤를 잇고, 아들이 아버지의 뒤를 잇는 거 아닌가요?"라고 하실 수 있습니다. 하지만 할아버지와 아버지, 딸의 공통 특성을 생각해봅시다. 키, 몸무게, 성별, 나이, 자다(), 먹다(), 숨쉬다() 등.... 하지만 위 특성들이 할아버지로부터 아버지, 딸에게 전달되는 것인가요? 이러한 공통 특성은 오히려 인간(분류)이기에 공유하게 됩니다. 즉 인간이라는 상위 클래스가 있..

Java/Java 문법 2024.10.06

Java) 변수 선언, 저장 및 메모리 영역

위 이미지는 변수 선언, 저장(할당)의 의미와 그때 메모리 영역에 어떤 일이 일어나는지 설명하고 있습니다. 메모리 영역은 크게 static, stack, heap 영역으로 나눌 수 있습니다. static 영역 : 클래스 = stack 영역 : 메서드 = heap 영역 : 객체 라고 생각하시면 편합니다.  아래 예시를 통해 자세히 설명하도록 하겠습니다. 클래스는 Driver , Animal , Penguin 이 있습니다. Penguin 은 Animal 의 하위 클래스 입니다. class Animal 은 변수 String = name; 과 void showName() 메서드가 있습니다. class Penguin extends Animal 은 변수 String = habitat; 와void showHabita..

Java/Java 문법 2024.10.05

캡상추다 - 추상화(Abstraction, 공통 특성 추출)

클래스는 개념, 객체는 실체  위 말을 기억해 주세요.  위에서 알 수 있는 건 개념과 실체는 다르다는 것이고, 클래스로부터 객체가 만들어지니, 개념으로부터 실체가 만들어진다고도 볼 수 있겠네요.    초등학생에게 추상화에 대해 물어보면 이렇게 대답할지도 몰라요. 추상화란 무엇인가요 ? 추상적이게 만드는 것이요 ! 그럼 추상적인 것이란 무엇이죠 ? 음... 사랑 ? 미움 ? 신 ! 붕어빵틀??? '추상적'이라는 건 하나 하나의 사물이 아니라 그것 자체로 '일반적'인 것을 말합니다. 예를 들어 '사람'이라고 해보죠. 그 사람은 세종대왕인가요 ? 나폴레옹인가요 ?  세종대왕, 나폴레옹은 사람의 구체적인 실체이고,  사람은 나폴레옹, 세종대왕 등을 추상화한 개념이에요.  자바로 들어가서 설명해볼게요 ! 사람 ..

Java/Java 문법 2024.10.04

스트림 예시

https://school.programmers.co.kr/learn/courses/30/lessons/70128 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr import java.util.ArrayList;class Solution { public long solution(int[] a, int[] b) { long answer = 0; ArrayList arrayListA = new ArrayList(); for (int i: a) { arrayListA.add(i); } ..

Java/Java 문법 2024.10.02

스트림

스트림(Stream)이란 데이터 소스(컬렉션, 배열, int 범위, 텍스트 파일, 디렉토리 등)를 반복 처리 하기 위한 방식입니다. 스트림을 통해 자료구조를 표준화된 방법으로 다룰 수 있습니다.  import java.util.HashSet;import java.util.Set;import java.util.stream.Stream;public class Stream01 { public static void main(String[] args) { Set set = new HashSet(); set.add("홍길동"); set.add("일지매"); set.add("바보온달"); // 외부 반복자 이용 for (String it..

Java/Java 문법 2024.10.01

람다

람다는 표현식으로서 변수에 저장 가능한 로직을 나타냅니다. 람다 도입 이전의 자바에서 로직은 메서드 내에 존재해야 했고, 일반적으로 그 메서드를 사용하기 위해서는 객체를 만들어야 했습니다. 하지만 자바 8 람다를 사용하여 지역 변수, 속성, 메서드의 매개 변수, 메서드의 return값에 바로 로직을 줄 수 있게 됐습니다. 람다 표현식은 함수형 인터페이스에서만 사용 가능합니다. 함수형 인터페이스란 단 하나의 추상 메서드만을 가진 인터페이스를 말합니다. 이때 '단 하나의 추상 메서드'는 인터페이스의 추상 메서드가 하나 뿐이며 그것이 추상 메서드라는 의미가 아닙니다. 인터페이스가 갖는 추상 메서드는 하나여야 한다는 뜻이고, 디폴트 메서드나 정적 메서드는 다수 포함될 수 있습니다.  추상 메서드는 인스턴스 생성..

Java/Java 문법 2024.09.27