Java

Java

[Java] Scanner, BufferedReader, BufferedWriter

Scanner와 BufferdReader의 차이 BufferedReader, BufferedWriter은 버퍼를 사용하여 읽기, 쓰기를 하는 함수이다. 버퍼를 사용하지 않는 입력은 키보드의 키를 누르는 즉시 프로그램에 전달된다. 버퍼를 사용하는 입력은 키보드의 입력 이 있을 때마다 한 문자씩 버퍼로 전송한다. 이 버퍼가 가득차거나 줄 바꿈을 하면 버퍼의 내용을 한 번에 프로그램에 전달한다. Scanner은 1KB의 버퍼를 갖고, BufferedReader는 8KB의 버퍼를 가진다. 즉, Scanner은 더 자주 프로그램에 전달하고, BufferedReader은 조금 더 모아놨다가 프로그램에 전달한다. ( 쓰레기가 생길때마다 나가서 버리는 거랑, 쓰레기통에 모아놨다가 한 번에 버리는 차이 ) 버퍼는 키보드..

Java

[JAVA] Comparator / Comparable - 정렬을 위한 클래스(인터페이스)

Comparator와 Comparable 두가지 모두 두개의 객체를 비교하기 위한 인터페이스 이다. Comparator의 compare() 메서드는 두 매개변수 객체를 비교하고, Comparable의 compareTo() 메서드는 자기자신과 매개변수 객체를 비교한다. 객체 o1, o2가 있을 때 , compare(o1, o2) / o1.compareTo(o2) 가 가능할 것이다. 이때, return 값에 따라 o1과 o2의 위치가 결정된다. return 1 (양수) : 위치를 변경하지 않음. 즉, o1이 o2보다 앞쪽에 위치하도록 결정 return -1(음수) : 위치를 변경함. 즉, o1이 o2의 뒤에 위치하도록 결정 return 0 : return1과 비슷하거나 같음. 위치를 변경하지 않음 publi..

Java

[JAVA] 배열의 길이 length에는 괄호()가 붙지 않고, 문자열의 길이 length()에는 괄호()가 붙는 이유

배열과 문자열의 길이 배열의 길이를 구할 때는 사용하고, 문자열의 길이를 구할 때는 str.length()를 사용한다. 사실 코딩테스트 연습문제를 풀 때마다 맨날 헷갈렸다. 배열은 length뒤에 ()를 안 붙여도 되고, 문자열은 붙여야 한다. 항상 "왜 그럴까?"만 생각하고 넘어갔었다. 추측하기로는 str.length()는 뭔가 메서드의 성격을 갖고 있어서 ()가 붙고, arr.length는 그렇지 않은 것 같다는 정도만 생각하고 있었다. 이번에 그 이유를 한번 찾아보았다. int[] arr = {1,2,3,4}; String str = "hello"; int arr_len = arr.length; //4 int str_len = str.length(); // 5 배열의 length는 함수(메서드)가 ..

Java

[JAVA] Math 클래스

Math 클래스? 자바는 수학적 계산을 쉽게 해주는 Math 클래스를 제공한다. Math 클래스의 여러 가지 메서드를 이용해서 수학적 연산, 비교 등을 쉽게 할 수 있다. 간단한 예제로 두 수의 크기를 비교할 때 if문을 사용하는 방법과 Math 클래스를 사용하는 방법을 알아보자. int a = 10; int b = 5; int max = 0; //if문 if(a>b){ max = a; }else{ max = b; } //삼항 연산자 max = a>b ? a:b; //Math 함수 max = Math.max(a,b); 위와 같이 if문, 삼항 연산자, Math.max()함수를 이용해서 최댓값을 구할 수 있다. 메모리 관점과 시간 관점으로 봤을 때 Math 클래스는 해당 연산을 최적으로 수행할 수 있도록 ..

Java

[JAVA] format() 메서드 : 문자열 포맷 지정 / printf()

JAVA를 처음 배우면 System.out.println("Hello World!"); 부터 배운다. 그리고 얼마 안있어서 System.out.printf("%d",3); 와 같은 포맷을 지정할 수 있는 printf도 배운다. format() 메서드는 printf와 비슷하게 포맷을 지정하여 String에 저장할 수 있는 메서드이다. 1. String.format() 메서드 format(String format, Object... args) format(Locale locale, String format, Object... args) format : 문자열 포맷 지정 locale : 선택, 로케일 지정 args : 선택, format에저 지정된 포맷에 넣어줄 데이터 입력 (ex) int age = 23 S..

Java

[JAVA] 람다식과 스트림 Stream()

함수형 프로그래밍 함수의 구현과 호출만으로 프로그래밍이 수행되는 방식 순수함수(pure function)를 구현하고 호출함으로써, 외부 자료에 side effect를 주지 않도록 구현 순수함수 : 매개변수만을 사용하여 만드는 함수 → 따라서 함수 외부에 있는 변수를 사용하지 않아 외부에 영향을 주지 않음 함수를 처리할 때 외부 자료를 사용하지 않아서 외부에 영향을 미치지 않기 때문에 여러 자료가 동시에 수행되는 병렬처리가 가능하다. 1. 람다식 익명 함수 매개변수와 매개변수를 이용한 실행문을 이루어진다. (매개변수) -> { 실행문 }; 람다식의 장점 코드가 간결해짐 코드 가독성이 높아짐 생산성이 높아짐 람다식의 단점 코드 재사용 불가 디버깅이 어려움 람다식 표현 규칙 메서드 이용 int add(int ..

Java

[JAVA] 파일 입출력

파일에 쓰기 1. FileWriter fname으로 지정한 파일이 쓰기 모드로 열린다. 없으면 파일을 생성한다. FileWriter(String fname, boolean append) 두 번째 파라미터로 이어 쓰기 옵션을 선택한다. default는 false이다. append=true로 설정 시 파일에 남아있는 텍스트 뒤로 이어 쓴다. fw.write(String str) 파일에 문자열을 입력한다. fw.close() FileWriter를 모두 사용한 뒤엔 꼭 close() 메서드로 닫아줘야 한다. String fname = "./src/file/memofile.txt"; //상대경로 FileWriter fw = new FileWriter(fname); String memo = "hello world!..

Java

[JAVA] 추상 클래스 (abstract class)

추상 클래스 상속을 하기 위해 만드는 클래스 구현 코드 없이 메서드의 선언만 있는 추상메서드를 포함한 클래스 반드시 하나 이상의 추상메서드를 포함해야 한다. abstract 예약어 사용 추상 클래스는 인스턴스화할 수 없음 ( 객체 생성 불가 ) (참고) 추상 클래스, 추상 메서드는 클래스 다이어그램에서 기울임체로 쓴다. 추상 메서드 자식 클래스에서 반드시 overriding 해야하는 메소드 선언한 하고 구현하지 않는다. abstract int methodA(int x, inty); //추상메서드 더보기 1) 메서드 선언 (declaration) : 반환타입, 메서드 이름, 매개변수로 구성 2) 메서드 정의(definition) : 구현부 { }를 가짐 abstract i..

HSRyuuu
'Java' 카테고리의 글 목록 (2 Page)