java
-
Java: String[] split(regex, limit) 사용 예시Java 2022. 5. 17. 08:58
모각코 스터디를 하다가 한 분이 'split() 메서드의 두번째 인자에 -1을 넣어주는 경우에는 무엇이 달라지는 거냐' 하고 질문을 주셨는데 나도 잘 몰라서 알아보았다. 알아본 내용은 정리해야 제맛! String[] String.split(String regex, int limit) 첫번째 인자는 문자열을 구분할 문자열(또는 정규식 표현)입니다. 두번째 인자는 구분된 문자열의 개수를 말합니다. Optional. 사용예시) 원 문자열의 정의가 다음과 같은 경우 String str = "강아지:고양이:멧돼지:공룡"; ":"를 구분자로 사용하면 다음과 같습니다. String[] sArr = str.split(":"); // sArr => {"강아지", "고양이", "멧돼지", "공룡"} 3을 l..
-
추상클래스와 인터페이스의 차이와 선택 기준각종 학습 요약/Java 2022. 5. 13. 16:17
추상클래스와 인터페이스의 차이와 선택 기준 이 글은 추상화나 abstract 키워드에 대해 설명하는 글이 아니고, 추상화 개념이 동일하게 적용되었으면서도 각각 다른 방식으로 상속하는 추상클래스와 인터페이스의 차이를 알아보기 위함이다. 추상클래스의 특징 추상클래스는 일반 필드와 일반 메소드 그리고 추상 메소드를 가질 수 있는 클래스다. 인터페이스의 특징 static final 변수만 가질 수 있으며 추상 메소드를 가질 수 있는 추상객체다. 한 가지 의문 추상 클래스의 설명을 읽다가 문득 이런 의문이 들었다. 추상 클래스도 주 목적은 추상메소드 구현을 통한 강제 Overriding이고, 인터페이스의 주 목적도 동일하게 구현체의 기능 구현을 강제하는 건데, 굳이 둘이 나눠져 있는 이유는 뭐지? 인터페이스가 다..
-
Java: 다형성을 '정말' 이해하기 위해서Java 학습 2022. 5. 13. 12:58
Java: 다형성을 '정말' 이해하기 위해서 들어가기 앞서 다형성의 기초적인 개념을 설명하는 글이 아니지만, 다형성을 잘 이해하는 데에 있어서 꼭 필요하다고 생각되는 부분을 나름대로 정리해보려고 한 글이다. 본 내용은 아래 파트에서 설명한다. 이 파트는, 왜 그 알아듣기도 어려운 설명을 꼭 들어야하는지에 대한 나의 생각이다. 그럼 그게 어떤 생각인지, 한번 이야길 해보자. 다형성은 특정한 로직 구성 방법을 말하는 것이 아니다. 다형성은 개념이다. 우리가 자연수를 설명한다고 해보자. 자연수는 '특정한 수'가 아니고 '개념'이다. 이 개념을 설명하기 위해서는 '0보다 큰 정수'라는 개념을 알려줘야만 한다. 그 설명을 듣고 바로 이해가 되지 않더라도, ..
-
# Java의 상속 개념 : inheritance, composite각종 학습 요약/Java 2022. 5. 12. 16:24
Java의 상속 개념 상속에 대해 설명을 잘하는 것 같진 않지만, 적어도 장단점은 꼭 알아보고 상속 개념을 활용하면 좋겠다는 마음으로 글을 써본다. 이 글에도 끄트머리 즈음(아마도..)에 장단점을 다룬다. 상속이란? 두 클래스 간 만들어질 수 있는 연관 관계 중 하나다. 둘 중 개념의 범위가 좀 더 넓고 하나를 포괄하고 있는 클래스를 상위 클래스(혹은 부모 클래스)라고 하고, 좀 더 특정적이고 구체적인 개념의 클래스를 하위 클래스(혹은 자식 클래스)라고 한다. 개념적인 설명이 잘 와닿지 않는다면 역시 비유로 가자. 언제 상속관계가 필요할까? IS-A or HAS-A / 상속(inheritance)와 포함(composite)이라는 키워드를 알아야 한다. 닉은 사람이다 (닉 == 사람, is-a) 닉은 심장..
-
객체지향프로그래밍(OOP) 개념의 기초적인 이해각종 학습 요약/Java 2022. 5. 10. 12:05
객체 지향 프로그래밍(OOP, Object-Oriented Programming) 개념의 기초 기본 구성 클래스(Class): 같은 분류로 묶이는(같은 기능/목적을 가지는) 속성들(멤버변수로 표현된다)과 행위들(메소드로 표현된다)의 정의. OOP에서는 클래스를 사용자가 정의한 데이터 타입으로써 사용한다(참조타입). Java에서는 다음과 같은 식으로 정의된다. class Car { // 멤버(혹은 필드) (속성) private String name = "MustangGT"; // 메소드 (행동) public void startUp(Key key) { ... } // 생성자 public Car() { ... } public Car(Driver driver) { ... } class CarInner { .....
-
프로그래머스 - Lv2. 오픈채팅방PS 2022. 3. 10. 21:38
문제 : [2019 KAKAO BLIND RECRUITMENT] 오픈채팅방 문제 내용은 여기. 쉽게 말해, 모든 출입 내역을 반환하면 된다. 최초에 방을 개설한 사람이 보게되는 출입내역이 아니라, 처음부터 끝까지의 모든 출입내역을 반환하면 된다. 풀이 import java.util.HashMap; import java.util.ArrayList; public class OpenChattingRoom { class Message { final String uid; final String message; public Message(String uid, String message) { this.uid = uid; this.message = message; } public String getUid() { ret..
-
생각: Java에는 왜 const(상수)가 없을까?Java 2022. 3. 5. 19:12
🙋 Java에는 왜 const(상수)가 없나요? 사람들과 어떤 주제에 대해서 이야기를 하다보면 신기한 포인트가 있다. 어렵지 않고, 심지어 익숙한 주제라서 다들 잘 알고 사용하겠거니 싶었는데, 알고 보면 제각기 다르게 생각하면서 사용하고 있는 것들 말이다. 오늘 이야기 할 주제가 바로 그런 내용이다. 📝 내용이 너무 길어서, 세 줄 요약 Java에서 상수가 필요하다면 static final 키워드를 쓴다. (대신에 final없이 static만 쓰는 건 지양하자) 상황에 따라 static final을 final로 대체하여 해당 클래스 내부 혹은 해당 객체를 이용하는 곳에서만 상수처럼 쓸 수 있는 상황도 있다. 하지만 그래도 final은 상수가 아니고, 상수처럼 쓰고 있는 것이다. static final로 ..
-
프로그래머스 - Lv1. 다트 게임PS 2022. 3. 4. 23:58
문제 : [2018 KAKAO BLIND RECRUITMENT 1차] 다트 게임 문제 내용은 여기. 쉽게 말해, (맞춘 점수)^(맞춘 영역의 제곱)*(보너스/이전보너스/패널티 여부)의 총합을 구하면 된다. 풀이 import java.util.stream.Stream; public class DartGame { public int solution(String str) { // sdt - S : single (^1) / D : double (^2) / T : Triple (^3) // bp - * : 보너스(* 2) / # : 패널티(* -1) String[] points = str.replaceAll("\\D+", " ").split("\\s+"); String[] calcs = Stream.of(str...