Java
-
[Java] BufferedReader, BufferedWriter 사용법Java 2022. 5. 20. 13:46
Scanner나 System.out.println()을 사용해서 입출력을 만들게 되면 메모리에 상당한 부담이 가해지게 된다. 이를 방지하기 위해 버퍼를 사용해 입출력 효율을 올릴 수 있다. 데이터 처리량이 많을 때 유용한 기능이다. BufferedReader는 Scanner의 기능을 한다. Scanner의 경우 공백도 사용가능 하지만, BufferedReader를 사용할 때에는 엔터만 구분자로 인식하기 때문에 추가적으로 가공을 해줘야 한다. 또한 BufferedReader에서 받아오는 데이터는 모두 String 객체이기 때문에 형변환을 반드시 해줘야 한다. BufferedWriter는 System.out.println 메소드와 일치한다. 다만 중간에 버퍼를 사용하기 때문에 더 빠르다. BufferedRe..
-
[Java] Exception 발생 시키기Java 2022. 5. 20. 11:07
Exception 발생 시키기 throw는 오류를 떠넘기는 throws와 같이 사용된다. public class ExceptionExam3 { public static void main(String[] args) { int i = 10; int j = 0; int k = divide(i, j); System.out.println(k); } public static int divide(int i, int j){ int k = i / j; return k; } } divide메소드는 2번째 파라미터의 값이 0일 경우 나누기를 할 떄 Exception이 발생한다. public class ExceptionExam3 { public static void main(String[] args) { int i = 10;..
-
[Java] throwsJava 2022. 5. 20. 10:48
throws는 예외가 발생했을 때 예외를 호출한 쪽에서 처리하도록 던져준다. public class ExceptionExam2 { public static void main(String[] args) { int i = 10; int j = 0; int k = divide(i, j); System.out.println(k); } public static int divide(int i, int j){ int k = i / j; return k; } } 정수를 매개변수로 2개를 받아들인 후 나눗셈을 한 뒤 그 결과를 반환하는 devide메소드 main 메소드에서는 devide메소드를 호출한다. public class ExceptionExam2 { public static void main(String[] ar..
-
[Java] Exception - 예외처리Java 2022. 5. 20. 10:15
프로그램이 실행중 얘기치 못한 상황을 예외라고 한다. 예외 상황을 미리 예측하고 처리할 수 있는데, 이렇게 하는 것을 예외 처리라고 한다. public class ExceptionExam { public static void main(String[] args) { int i = 10; int j = 0; int k = i/j; System.out.println(k); } } 위의 예제를보면 에러가 발생하게 된다. 5번째를 보면, i 나누기 j 를 하는데, 자바에서는 정수를 정수로 나눌때 0 으로 나누면 오류가 발생한다. 이를 방지하기위해 예외처리를 하는데, j라는 변수에 0이 들어올지도 모르는 예외 상황을 미리 예측하고 처리 할 수 있다. 예외 처리하는 문법 try { ... } catch(예외클래스 변..
-
[Java] API - String 클래스Java 2022. 5. 19. 16:57
charAt(int index) 리턴타입 char 해당 문자열 의 뒤에 인수로 전달된 문자열을 추가한 새로운 문자열 반환 public static void main(String[] args) { String str = "hello world"; char t = str.charAt(2); System.out.println(t); } equals(Object anObject) 리턴타입 booldean 2개의 객체가 동일한지 검사하기 위해 사용한다. public static void main(String[] args) { String str1 ="1"; String str2 = new String("1"); String str3 = "1"; if (str1 == str2) { System.out.println..
-
[Java] 헷갈리는 문자열 함수 정리 (substring, split, charAt, indexOf, lastIndexOf)Java 2022. 5. 18. 16:18
substring() 문자열의 '일부'를 뽑아오거나 여러 데이터를 하나의 문자열로 받아 원하는 문자열만큼 추출하는 메소드, 중간에 구분자가 없는 경우에 사용한다. substring은 총 2가지가 있다 substring ( int beginIndex ) : 시작 인덱스부터 끝까지 substring ( int beginIndex, endIndex ) : 시작 인덱스부터 끝 인덱스 -1 까지 주의사항은 beginIndex는 0에서 시작하고 endIndex는 자르려는 글자 끝 index보다 1을 더해줘야 한다. String str = "ABCDEFGHIJ" 가 있다고 가정하면, 인덱스는 0부터 시작된다. 그러므로 A는 0, B는 1, C는 2가 된다. A B C D E F G H I J 0 1 2 3 4 5 6..
-
[Java] 내부 클래스Java 2022. 5. 18. 10:18
클래스 안에 선언된 클래스를 내부 클래스라고 한다. 어느 위치에 선언 되느냐에 따라 4가지 형태가 있을 수 있다. 내부 클래스를 사용하는 이유 ? -다중 상속의 문제점을 해결하는 하나의 방안이 될 수 있다. -코드의 복잡성을 줄일 수 있다(캡슐화) 1. 클래스 안에 인스턴스 변수 필드를 선언하는 위치에 선언되는 경우 - 중첩클래스, 인스턴스 클래스 public class Test { class Cal { // 필드를 선언하는 위치에 클래스를 선언 public void plus() { value++; } } public static void main(String[] args) { test t = new t(); t.Cal cal = t.new Cal(); cal.plus(); } } 2.정적 중첩 클래스 ..
-
[Java] 인터페이스 default 메소드Java 2022. 5. 18. 09:49
자바8이 나오면서 인터페이스에 대한 정의가 변경되었다. 기존에 인터페이스는 추상 메소드만 가질 수 있었다. 자바 8 부터는 default, static method를 정의할 수 있도록 변경되었다. 인터페이스가 default로 선언이되면 메소드를 구현 할 수 있고, 이 메소드를 오버라이딩 할 수 있다. default 사용법 public interface Calculator { public int plue(int i, int j); public int multiple(int i, int j); // 자바 8 부터는 dafult 키워드를 이용하여 메소드 구현이 가능해졌다. 원래는 에러 발생 default int exec(int i, int j){ return i + j ; } } 인터페이스가 변경이 되면 그 ..