목록languages/java (13)
Written by coh at home
java로 코테를 준비하게 되었다.1. 입출력Scanner sc = new Scanner(System.in);가장 기본적인 입력받는 객체.버퍼에 개행이 남아있는 것을 주의 해야한다.112345sc.nextInt(); // 1sc.nextLine(); // \nsc.nextLine(); // 12345BufferedReader br = new BufferedReader(new InputStreamReader(System.in));입력이 빠르다.이 경우 throws IOException을 붙여줘야 한다.StringBuilder sb = new StringBuilder();sb.append();출력에서 빠른 성능을 보장해준다. 음.. 문자열 객체인 String을 이어 붙일 때 새로운 객체를 만들지만 Strin..
Stream은 수도꼭지다. 물을 똑똑 흘러내듯이 원소들을 똑똑 흘러낼 수 있는 API이다.스트림을 사용하다가 문득 mapToInt와 map의 차이점이 뭔지 궁금해졌다.결론부터 말하면 mapToInt와 map의 차이점은 스트림 처리에서 반환되는 타입이다.mapToInt:정수형 스트림(IntStream)반환. 즉, 원소들이 int로 변환된다.합계, 평균 연산을 스트림 중에 사용 가능함.List arr = List.of("1", "2", "3");// int[]로 반환int[] result = arr.stream() .mapToInt(Integer::parseInt) .toArray();map: 객체형 스트림(Stream) 반환. 즉, 원소들이 어떤 객체로 변환된다. 기본형(int) 대신 객체형(예를들어..
둘 다 자바에서 제공하는 클래스지만 서로 다른 목적을 갖고 있다.1.Collections 클래스정적 유틸리티 클래스로 List, Set, Map 등의 컬렉션을 조작하는 다양한 메서드 제공.정렬, 검색, 동기화 등의 기능이 포함되어 있다.주요메서드Collections.sort(List); 정렬Collections. reverse(List); 순서 뒤집기List arr = Arrays.asList(3,2,1);Collections.sort(arr); // [1,2,3]Collections.sort() 에서 정렬기준을 주기 위해서 두 가지 인터페이스를 사용할 수 있다.Comparable : 자신과 다른 원소를 비교Comparator : 서로 다른 두 원소를 비교정렬기준은 외우고 있진 않고 그때그때 사용해보고 ..
코테 준비를 하면서 문제를 푸는데 계속 에러가 나고 있었다. 나는 로직 분명 개잘짰는데 왜 에러가 날까..?문제가 된 부분ArrayList v = new ArrayList();for i = 0 ... i = n: v.add(1000);for i = 0... i = n: for j = i + 1 ... j = n: if (v.get(i) != v.get(j) continue;Integer를 비교하는 부분에서 자동으로 언박싱이 된다고 생각했는데 그게 아니었던 것이어따...객체끼리의 비교이므로 주소를 비교하는 로직이 된 것이었다... ㅜㅜ내 1시간 돌려내..언박싱이 되기 위해서는원시타입과 비교가 되어야 했던 것...!원시타입 그래서 저 문제를 해결하기 위해서는equ..
함수형 인터페이스 자바는 람다를 함수형 인터페이스를 통해 구현한다. 인터페이스의 추상메서드가 존재할 때 우리는 해당 메서드를 오버라이드해서 사용한다. 람다는 추상메서드가 단 하나인 인터페이스에 대하여 오버라이드를 편하게 하는 방법이다. 함수형 인터페이스를 매번 구현하는 것은 귀찮은 일이므로 자바에서는 이를 제공하고 있다. Runnable, Function, BiFunction, consumer 등등이 존재하며 Runnable에 대한 기본 코드를 한번 보자. public class Button { private Runnable runnable; private String name; public Button(String name, String sound) { this.name = name; runnable ..
1. 상속 상속은 주로 기존 클래스의 정보에서 내가 필요로 하는 메소드나 변수가 필요할 때 사용된다. ->기존 클래스의 필드와 메소드들 + 내가 필요해서 만든 필드와 메소드. 1-1. 상속시킬 때 알아야 하는 것들. ->상속 시킬 때는 class 이름 옆에 extend하고 상속시킬 클래스를 적는다. ->상속 시 생성자는 항상 부모클래스 먼저 생성한다. keyword는 super()이다. 단, 부모클래스의 생성자가 존재하지 않는다면 하지 않아도 된다. 부모 클래스의 메소드를 사용하고 싶을 때에도 super. 하고 사용한다. ->상속 클래스에서 접근제어자에 따라 필드에 접근을 못할 수도 있다. 단, 데이터를 사용못한다는 거지 물려받지 않는다는 것이 아니다. 부모클래스의 protected 필드는 자식클래스에서..

# STATIC ## C에서의 static은 어떻게 사용되었나. 1. 특정 함수 내에서 프로그램 종료 시까지 데이터 값을 유지. -> 보통 함수 호출을 하면 stack에서 사용하고 종료되면 그 값이 사라지지만 static variable은 그 값이 유지된다. 2. 함수명 앞에 static을 붙이면 해당 파일 내에서 사용하는 함수라는 의미. -> 다른 소스파일에 같은 이름의 함수가 있어도 현재 파일 내의 static 함수를 사용하여 충돌을 방지해줌. ## Java에서의 static. static method, variable은 다음과 같은 의미를 갖는다. 해당 class 내에서 공통적으로 사용하는 변수, 메소드. 그래서 각각의 객체들을 생성하면 각각 메모리 공간을 사용하지만 static이 붙은 메소드와 변..
자바는 모든 것이 객체의 요소들이므로 method라고 부른다. c에서의 함수와 비슷하다. 우리가 함수를 왜 쓰는지를 생각해보면 좋을 것 같다. 1. 같은 동작을 여러번 할 때. 2. 코드의 가독성을 높이기 위해 + 이제부터 디버깅 포인트는 main의 끝으로 지정하고 하자. step over는 그냥 다음 라인을 실행하고 step into는 라인에 함수가 있다면 함수로 들어간다. step out을 하면 into에서 빠져나와 다음 line을 살펴보게 된다. -특징들.. 특징을 적기 앞서 한 가지 유의할 것이 있다. method내에서 외부 변수의 값을 바꾸는 것은 좋지 않다. 원본을 변화시키는 것은 좋은 코드가 아님을 유의하자. 값만 카피해서 사용하는 것이 좋다. 1. static main method밖에서 m..