전체 글
-
10991 별 찍기 - 16PS/백준 2022. 3. 13. 23:58
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(buf.readLine()); for(int i = 0; i < n; i++) { for(int j = 0; j
-
2446 별 찍기 - 9PS/백준 2022. 3. 13. 00:18
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(buf.readLine()); for(int i=0; i < n; i++) { for(int j=0; j < i; j++) { System.out.print(" "); } for (int k = 0; k < (2 * n - ..
-
2522 별 찍기 - 12PS/백준 2022. 3. 12. 23:54
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); int inputValue = Integer.parseInt(buf.readLine()); for(int i=0,k=inputValue; i
-
item 22 인터페이스는 타입을 정의하는 용도로만 사용하라책/이펙티브 자바 2022. 3. 10. 23:45
ITEM 22 인터페이스는 타입을 정의하는 용도로만 사용하라 인터페이스는 자신을 구현한 클래스의 인스턴스를 참조할 수 있는 타입 역할을 한다 클래스가 어떤 인터페이스를 구현했는가에 따라 클라이언트에서 해당 클래스의 인스턴스로 무엇을 할 수 있는지 파악이 가능하다 인터페이스는 이 용도로만 써야한다 상수 인터페이스처럼 상수 공개용 수단으로 사용하면 안된다 안티패턴 상수 인터페이스 메서드 없이 상수(static final) 필드만 있는 인터페이스 정규화된 이름을 쓰는걸 피하려고 이런 인터페이스를 구현하는 클래스가 생기게된다 상수 인터페이스는 안티패턴으로 인터페이스를 잘 못 활용한 예이다 클래스 내부에서 사용하는 상수는 외부 인터페이스가 아니라 내부 구현인데 상수 인터페이스를 구현하면 내부 구현을 외부로 노출하..
-
2445 별 찍기 - 8PS/백준 2022. 3. 10. 23:09
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); int inputVal = Integer.parseInt(buf.readLine()); int loopLeng = inputVal * 2; int startIdx = 0; int endIdx = 0; for (int i = 1; i
-
item 21 인터페이스는 구현하는 쪽을 생각해 설계하라책/이펙티브 자바 2022. 3. 9. 23:01
ITEM 21 인터페이스는 구현하는 쪽을 생각해 설계하라 자바 8이전에는 기존 구현체를 깨뜨리지 않고 인터페이스에 새로운 메서드를 추가하는 방법이 없었다 자바 8부터 디폴트 메서드를 통해 기존 인터페이스에 새로운 메서드를 추가할 수 있게 되었다 디폴트 메서드를 사용하면 인터페이스를 구현한 모든 구현체에서 디폴트 메서드를 재정의 하지 않아도 디폴트 메서드를 사용 가능하다 디폴트 메서드가 생겨난 덕분에 하위 호환성이 좋아졌지만 자바 8 이전에 작성된 코드들은 인터페이스에 새로운 메서드가 추가되는 일은 없을거라고 가정하고 짠 것이니 항상 주의해야 한다 디폴트 메서드가 하위 호환성이 좋지만 모든 경우에 매끄럽게 연결되지 않을수 있다 생각할 수 있는 모든 상황에서 불변식을 해치지 않는 디폴트 메서드를 작성하기는 ..
-
2442 별 찍기 - 5PS/백준 2022. 3. 9. 21:54
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); int loopLeng = Integer.parseInt(buf.readLine()); for (int i = 1; i
-
item 20 추상 클래스보다는 인터페이스를 우선하라책/이펙티브 자바 2022. 3. 8. 23:39
ITEM 20 추상 클래스보다는 인터페이스를 우선하라 인터페이스 사용시 장점 기존 클래스에도 손쉽게 새로운 인터페이스를 구현해 넣을 수 있다 인터페이스가 요구하는 메서드를 추가하고, 클래스 선언부에 implements 만 적어주면 끝 추상 클래스는 계층구조상 같은 조상을 바라봐야 해서 기존 클래스에 추가하기가 어렵다 새로 추가된 추상 클래스의 모든 하위 클래스가 상속하게 되는것 인터페이스는 믹스인 정의에 안성맞춤이다 믹스인 : 클래스가 구현할 수 있는 타입 대상 타입의 주된 기능에 선택적 기능을 제공하는것 추상 클래스에는 위와 동일한 이유로 믹스인을 정의 할 수 없다 자바에서 일반 클래스는 단일상속만 지원하여 클래스 계층 구조에서는 믹스인을 삽입하기에 적절한 위치가 없음 인터페이스로는 계층구조가 없는 타..
-
2441 별 찍기 - 4PS/백준 2022. 3. 8. 22:04
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); int loopLeng = Integer.parseInt(buf.readLine()); for (int i = 0; i < loopLeng; i++) { for (int j = 1; j
-
item 19 상속을 고려해 설계하고 문서화하라. 그러지 않았다면 상속을 금지하라책/이펙티브 자바 2022. 3. 7. 22:32
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); int loopLeng = Integer.parseInt(buf.readLine()); for (int i = 1; i