목록Java (14)
모눈종이에 사각사각
해당 위치가 프로젝트의 루트로 지정되어 있지 않아 발생하는 문제이다. 상위의 폴더를 우클릭 -> Mark Diredtory as -> Sources Root 를 클릭하여 프로젝트의 루트로 지정해주면 해결할 수 있다.
java에는 Deque 인터페이스가 있다. Deque 인터페이스는 Queue인터페이스를 상속받았다. 한쪽 끝으로만 추가/삭제할 수 있는 Queue와 달리 Deque는 양쪽 끝에 추가/삭제가 가능하다. 1. add() 큐의 끝에 삽입한다. 삽입할 공간이 없으면 IllegalStateException을 반환한다. 성공적으로 삽입되면 true를 반환한다. 2. addFirst() 큐의 첫번째에 삽입한다. 삽입할 공간이 없으면 IllegalStateException을 반환한다. 성공적으로 삽입되면 true를 반환한다. 3. addLast() 큐의 끝에 삽입한다. 삽입할 공간이 없으면 IllegalStateException을 반환한다. 성공적으로 삽입되면 true를 반환한다. 4. contains() 큐에 요소가..
int 범위를 벗어나는 수를 연산하면 원하는 결과가 나오지 않는다. int a = Integer.MAX_VALUE; int b = Integer.MAX_VALUE; int c = a+b; System.out.println(c); // -2 하지만 JDK 8부터 Math 클래스에 두 개의 addExact() 메서드가 추가됐다. 두 메서드는 결과에 int나 long 오버플로우가 발생하기 쉬울 때 유용한 메서드이다. 잘못된 결과를 반환하는 대신 ArithmeticException을 던진다. int a = Integer.MAX_VALUE; int b = Integer.MAX_VALUE; int c = Math.addExact(a, b); System.out.println(c); Math.addExact() 외에..
구분자 넣기 StringJoiner을 이용하면 쉽게 구분자를 넣을 수 있다. StringJoiner을 생성할 때 구분자를 넣어 생성한 후 add메서드로 삽입한다. StringJoiner stringJoiner = new StringJoiner(" | "); stringJoiner.add("O"); stringJoiner.add(" "); stringJoiner.add("X"); System.out.println(stringJoiner); 출력 O | | X prefix(접두사), suffix(접미사) 넣기 StringJoiner 클래스는 다음과같이 오버로딩 되어있기 때문에 구분자와 함께 접두사와 접미사도 넣어 생성할 수 있다. StringJoiner stringJoiner2 = new StringJoin..
🌙 기본형과 문자열 간의 변환 기본형 \(\rightarrow\) 문자열 문자열 \(\rightarrow\) 기본형 String String.valueOf(boolean b) String String.valueOf(char c) String String.valueOf(int i) String String.valueOf(long l) String String.valueOf(float f) String String.valueOf(double d) boolean Boolean.parseBoolean(String s) byte Byte.parseByte(String s) short Short.parseShort(String s) int Integer.parseInt(String s) long Long.parse..
🌙 표준 입력 스트림이란? System.setIn에 대해 조사하다가 표준입력스트림(standard input stream)이라는 단어가 나왔다. 여기서 "표준"이 의미하는 것이 무엇인지 궁금해졌다. 먼저 스트림에 대해 알아보도록 하자. 스트림(Stream) 자바에서 입출력을 수행하려면, 즉 어느 한쪽에서 다른 쪽으로 데이터를 전달하려면, 두 대상을 연결하고 데이터를 전송할 수 있는 무언가가 필요한데 이를 스트림이라고 한다. 스트림(stream) : 프로그램을 드나드는 데이터를 바이트의 흐름으로(byte stream) 표현한 단어 스트림은 단방향통신만 가능하기 때문에 하나의 스트림으로 입력과 출력을 동시에 처리할 수 없다. 따라서 입출력을 동시에 하려면 입력 스트림(input stream)과 출력 스트림(..
🌙 String 클래스 1. String 클래스는 immutable(변경불가능한) 클래스이다. 한 번 생성된 String인스턴스가 가지고 있는 문자열은 읽을 수만 있고, 변경할 수 없다. '+' 연산자를 이용해서 문자열을 결합하는 경우, 인스턴스 내의 문자열이 바뀌는 것이 아니라 새로운 문자열이 담긴 String 인스턴스가 생성되는 것이다. 다음과 같이 코드를 작성해 보았을 때 기존의 a의 주소와 a+=b 연산을 마친 후의 a의 주소가 달라졌음을 확인할 수 있다. 2. 문자열의 비교 문자열을 만드는 방법은 두 가지가 있다. String s1 = "가나다"; // 문자열 리터럴 지정 String s2 = "가나다"; // 문자열 리터럴 지정 String s3 = new String("가나다"); // St..
파이썬에는 isalpha(), isdigit(), isalnum(), islower(), isupper(), lower(), upper() 등 문자열이 알파벳인지, 숫자인지 등을 판별해주는 함수가 있다. 자바에도 그러한 기능을 하는게 있다. Character.isAlphabetic(), Character.isLetter() // 문자인가?(한글 포함) Character.isDigit() // 숫자인가? Character.isLetterOrDigit() // 문자 또는 숫자인가? Character.isLowerCase() // 소문자인가? Character.isUpperCase() // 대문자인가? Character.toLowerCase() // 소문자로 Character.toUpperCase() // 대..
🌙 @Override @Override 어노테이션은 메서드 앞에만 붙일 수 있는 어노테이션으로, 조상의 메서드를 오버라이딩하는 것이라는 것을 컴파일러에게 알려주는 역할을 한다. 만약 Child가 Parent의 parentMethod()를 오버라이딩 하려고 할 때, 메서드 이름을 잘못 적었다면? @Override annotation이 붙어있었다면 이렇게 에러메시지를 출력한다. 그러나 만약 @Override 를 붙이지 않았다면? 컴파일러는 오버라이딩 한 메소드인지 알지 못해 잘못 썼는지 판단하지 못한다. 새로운 이름의 메서드가 추가된 것이라고 인식한다. 따라서 에러메시지가 출력되지 않는다. 📚 참고자료 남궁성, 『자바의 정석』, 도우출판
List에서 중복을 제거하려면 어떻게 해야할까? Set 이용하기 먼저 List를 Set으로 변경하여 중복을 제거해준다음 다시 List로 반환하는 방법이 있다. List list = List.of(1, 2, 3, 4, 5, 1, 1, 1); System.out.println("list = " + list); Set set = new HashSet(list); List list2 = new ArrayList(set); System.out.println("list2 = " + list2); /** * list = [1, 2, 3, 4, 5, 1, 1, 1] * list2 = [1, 2, 3, 4, 5] */ Stream의 distict() 이용하기 Java8부터는 Stream의 distict()를 이용해서 중..