프로그래밍/JAVA 35

[JAVA] StringTokenizer 클래스

StringTokenizer 는 긴 문자열을 지정된 구분자를 기준으로 토큰이라는 여러 개의 문자열로 잘라내는 데 사용된다. 예를들면, "100,200,300,400" 이라는 문자열을 ',' 라는 구분자로 잘라내는 경우 "100", "200", "300", "400" 의 4개의 문자열을 토큰으로 얻을 수 있다. StringTokenizer 의 생성자와 메서드 메서드 설명 StringTokenizer(String str, String delim) 문자열 str을 구분자 delim 으로 나누는 StringTokenizer 를 생성한다. 구분자는 토큰으로 간주하지 않음 StringTokenizer(String str, String delim, boolean returnDelims) 문자열 str을 구분자 del..

[JAVA] Scanner클래스

Scanner 는 화면, 파일, 문자열과 같은 입력소스로부터 문자데이터를 읽어오는데 도움을 줄 목적으로 JDK1.5 부터 추가된 클래스이다. Scanner 에는 다양한 생성자들을 지원하기 때문에 다양한 입력소스로 부터 데이터를 읽을 수 있다. 아래 생성자들이 Scanner에서 지원하는 것 들이다. Scanner(String s) Scanner(File s) Scanner(InputStream s) Scanner(Readable s) Scanner(ReadableByteChannel s) Scanner(Path s) 입력 받을 값의 형식에 따라 아래와 같은 메서드들을 사용하여 입력 받을 수 있다. 하지만 실제 입력된 데이터가 형식에 맞지 않는다면 InputMismatchException 예외가 발생한다. ..

[JAVA] 정규식(Regular Expression) - java.util.regex 패키지

정규식 (Regular Expression) 은 텍스트 데이터 중에서 원하는 조건, 패턴과 일치하는 문자열을 찾아내기 위해 사용하는 것으로 미리 정의된 기호와 문자를 이용해서 작성한 문자열을 말한다. Java API 문서에서 java.util.regex.Pattern 패키지에 있는 클래스들을 사용하면 된다. 주로 Pattern 클래스와 Matcher클래스가 사용된다. 그럼 Pattern 클래스와 Matcher클래스가 어떻게 사용되는지 예제로 알아보자! import java.util.regex.*; class Example { public static void main(String[] args) { String[] data = { ... }; Pattern p = Pattern.compile("c[a-z]..

[JAVA] Random 클래스

난수를 얻는 방법에는 Math.random()도 있고, Random클래스를 사용하면 난수를 얻을 수 있다. 사실 Math.random()은 내부적으로 Random클래스의 인스턴스를 생성해서 사용하는 것이라 둘 중에서 편한 것을 사용하면 된다. 아래 예시 코드를 보면 동일 내용이다. double ranNum = Math.random(); double ranNum = new Random().nextDouble(); Random클래스의 생성자와 메서드 생성자 Random()은 종자값을 System.currentTimeMillis()로 함. → 실행할 때마다 얻는 난수가 달라짐 public Random() { this(System.currentTimeMillis()); } Random 클래스의 메서드 목록 메서..

[JAVA] Objects 클래스

java.util.Objects클래스는 Object 클래스의 보조 클래스로 모든 메서드가 static이다. 객체의 비교나 널 체크에 유용하다. Null Check Object.isNull(null); // true Object.nonNull(null); // false - isNull(): 해당 객체가 널인지 확인해서 null이면 true를 반환하고 아니면 fasle를 반환함. - nonNull(): isNull()과 반대로 null인지 확인해서 null이면 false 아니면 true를 반환함. Object.requireNonNull(null, "NullPointException 발생시킴"); - requireNonNull() : 객체가 null이면, NullPointException 예외가 발생시킨다...

[JAVA] 예외 던지기(exception re-throwing) / 연결된 예외(chained exception)

예외 던지기(exception re-throwing) 란? 한 메서드에서 발생할 수 있는 예외가 여럿인 경우 몇 개는 try-catch문을 통해서 메서드 내에서 자체적으로 처리하고, 그 나머지는 선언부에 지정하여 호출한 메서드에서 처리하도록 함으로써, 양쪽에서 나눠서 처리되도록 할 수 있다. 그리고 단 하나의 예외에 대해서도 예외가 발생한 메서드와 호출한 메서드, 양쪽에서 처리하도록 할 수 있다. 이것은 예외를 처리한 후에 인위적으로 다시 발생시키는 방법을 통해서 가능한데, 이것을 예외 되던지기(exception re-throwing)라고 한다. 연결된 예외(chained exception) 란? 한 예외가 다른 예외를 발생시킬 수도 있다. A가 B의 예외를 발생시킨다면, A를 B의 ‘원인 예외(caus..

[JAVA] 사용자정의 예외 만들기

말 그대로 예외는 프로그래머가 기존의 정의된 예외 클래스 외에 필요에 따라 새로운 예외 클래스를 정의하여 사용할 수 있다. 🙄어떻게 내 마음대로 예외를 만들 수 있는 걸까? → 우리가 이때까지 배운 상속을 통해서 사용자 정의를 만들 수 있다. Exception클래스 또는 RuntimeException클래스로부터 상속받아 클래스를 만들기도 하고, 필요에 따라 알맞은 예외 클래스를 선택하여 상속받아 만들 수 있다. 말로만 보면 알지 못하니 예를 들어보면! class MyException extends Exception { MyException(String msg) { // 문자열을 메개변수로 받는 생성자 super(msg); // 부모인 Exception 클래스의 생성자를 호출 } } Exception 클래..

[JAVA] 자동 자원 반환 try-with-resources

JDK1.7부터 try-catch-resources문이라는 try-catch문의 변형이 새로 추가되었다. 이 구문은 입출력(I/O)과 관련된 클래스를 사용할 때 유용하다. 주로 입출력에 사용되는 클래스 중에서는 사용한 후에 꼭 닫아 줘야 하는 것들이 있다. 그래서 사용했던 자원(resources)이 반환되기 때문이다. 🙄하지만 그렇게 사용하지 않고 finally를 사용하여 닫아주면 안 되는 건가? try{ fis = new FileInputStream("score.dat"); dis = new DataInputStream(fis); }catch(IOException ie){ ie.printStackTrace(); } finally { dis.close(); } 위 코드처럼 할 경우 별 문제가 없어 보인다..

[JAVA] finally 블럭

finally 블록은 예외의 발생 여부에 상관없이 실행되어야 할 코드를 포함시킬 목적으로 사용된다. try-catch문의 끝에 선택적으로 덧붙여 사용할 수 있으며, try-catch-finally 순서로 구성된다. try{ // 예외가 발생할 가능성이 있는 문장들을 넣는다. }catch(Exception e1){ // 예외처리를 위한 문장을 적는다. }finally{ // 예외의 발생여부에 관계없이 항상 수행되어야하는 문장들을 넣는다. // finally 블럭은 try-catch 문의 마지막에 위치해야한다. } 예외 발생한 경우 : try → catch → finally 순으로 진행 예외가 발생하지 않은 경우 : try → finally 순으로 진행 ✅ 정리 finally는 예외가 생겨도 무조건 실행되는..

[JAVA] 메소드에 예외 선언하기 (throws)

예외를 처리하는 방법에는 지금까지 배워 try-catch문을 사용하는 것 외에, 예외를 메서드에 선언하는 방법이 있다. 메서드에 예외를 선언하려면, 메서드의 선언부에 키워드 throws를 사용해서 메서드 내에서 발생할 수 있는 예외를 적어주기만 하면 된다. 그리고 예외가 여러 개일 경우에는 쉼표(,)로 구분한다. void method() throws Exception1,Exception2, ... ExceptionN { // 메서드의 내용 } ✅ 참고 예외를 발생시키는 키워드 throw와 예외를 메서드에 선언할 때 쓰이는 throws를 잘 구분하자. 그리고 메서드의 선언부에 예외를 처리함으로써 메서드를 사용하려는 사람이 메서드의 선언부를 보았을 때, 이 메서드를 사용하기 위해서는 어떠한 예외들이 처리되어..

728x90