전체 글 87

[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를 잘 구분하자. 그리고 메서드의 선언부에 예외를 처리함으로써 메서드를 사용하려는 사람이 메서드의 선언부를 보았을 때, 이 메서드를 사용하기 위해서는 어떠한 예외들이 처리되어..

[JAVA] 예외 발생시키기(throw)

자바에서 고의로 예외를 발생시킬 수 있다. 방법은 아래의 순서를 따르면 된다. 1. 면저, 연산자 new를 이용해서 발생시키려는 예외 클래스의 객체를 만든 다음 → Exception e = new Exception("고의로 발생시킴"); 2. 키워드 trow를 이용해서 예외를 발생시킨다. → throwe; 두개를 합치면, → thrownew Exception("고의로 발생시킴"); 💎예제💎 public class ExceptionEx9 { public static void main(String[] args) { try { Exception e = new Exception("고의로 발생 시킴"); throw e; } catch (Exception e) { System.out.println("에러 메세지 :..

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

추상클래스(abstract class)란? 클래스 설계도에 비유한다면, 추상클래스는 미완성 설계도에 비유할 수 있다. 단어 뜻 그래도 완성되지 못한 채로 남겨진 설계도를 말한다. 하지만 우리가 생각하는 것 처름 클래스가 미완성이라 아무것도 없는 것이 아니라 단지 미완성 메서드(추상메서드)를 포함하고 있다는 의미이다. 🙄 그래서 추상 클래스 사용하는 이유는 뭘까? → 자식 클래스에서 반드시 사용되어야 하는 메소드를 작성해야 할 때이다. 🙄그러면 그냥 오버라이딩해서 사용하면 되지 않나? → 상속받은 자식 클래스에서는 메소드들이 완전히 구현된 것으로 인식하고 오버라이딩하지 않을 수 있기 때문에 추상 클래스를 사용한다. 반드시 사용되어야 하는 메소드를 추상 클래스에 추상 메소드로 선언해 놓으면, 이 클래스를 상..

[ JAVA ] 다형성 - 매개변수의 다형성, 여러 종류의 객체 배열

1. 매개변수의 다형성 참조변수의 다형적인 특징은 메서드의 매개변수에도 적용된다. 예제로 알아보자! 💎예제💎 class Product { int price; int bonusPoint; } class TV extends Product{} class Computer extends Product{} class Audio extends Product{} class Buyer { int money = 1000; int bonusPoint = 0; } 위 코드를 보면 Product클래스는 TC,Audio,Computer클래스의 부모클래스이며, Buyer 클래스는 제품을 구입하는 사람을 클래스로 표현한 것이다. 여기서 Buyer 클래스에 물건을 구입하는 기능의 메서드를 추가해보자! 구입할 대상이 필요하므로 매개변수..

[ JAVA ] Instanceof 연산자란? Instanceof 연산자 사용방법

Instanceof 연산자란? 객체가 어떤 클래스인지, 어떤 클래스를 상속받았는지 확인하는데 사용하는 연산자 이다.즉, 참조변수가 참조하고 있는 인스턴스의 실제 타입을 알아보기 위해 해당 연산자를 사용한다. 💡문법💡 object instanceOf type object가 type이거나 type을 상속받는 클래스라면 true를 리턴합니다. 그렇지 않으면 false를 리턴합니다. 💎예제💎 간단하게 살펴보자면, class A { } class B extends A { } // A 클래스를 상속 public static void main(String[] args) { A a = new A(); B b = new B(); System.out.println(a instanceof A); // true 출력 Syst..

[ JAVA ] 다형성 - 참조변수의 형변환

참조형 변수도 형변환이 가능한가? → 가능하다.기본형 변수와 같이 참조 변수도 형변환이 가능하다. 단, 조건이 있다. 서로 상속관계이 있는 클래스 사이에서만 가능하다. ✅ 참고 바로 위 부모나 바로 밑 자식이 아닌, 부모의 부모인 조부모로도 형변환이 가능하다. 따라서 모든 참조변수는 모든 클래스의 조상인 Object클래스 타입으로 형변환이 가능다. 기본형 변수의 형변환에서 작은 자료형에서 큰자료형의 형변환은 생략이 가능 했듯이, 참조형 변수의 형변환에서는 자식타입의 참조변수를 부모타입으로 형변환하는 경우에 형변환을 생략할 수 있다. 자식타입 → 부모타입(Up-casting) : 형변환 생략가능 부모타입 → 자식타입(Down-casting) : 형변환 생략불가 * 참조변수간의 형변환 역시 캐스트연산자를 사..

[ JAVA ] 다형성이란?

다형성이란? 객체지향 개념에서는 '여러 가지 형태를 가질 수 있는 능력'을 의미한다. Java에서는 한 타입의 참조 변수로 여러 타입의 객체를 참조할 수 있도록 함으로써 다형성을 프로그램적으로 구현하였다. 구체적으로 말하자면, 부모 클래스 타입의 참조 변수로 자식 클래스의 인스턴스를 참조할 수 있도록 하였다는 것이다. 💡잠깐, 참조 변수 타입과 인스턴스 타입이 같아야 하는 것 아닌가❗❔ → 답은 아니다! 참조 변수 타입과 인스턴스 타입이 일치하는 것이 보통이지만, 서로 상속 관계에 있을 경우, 다음과 같이 부모 클래스의 타입의 참조 변수로 자식 클래스의 인스턴스를 참조하도록 하는 것도 가능하다! 🙄 그러면 왜 이렇게 사용하는 것일까? 그리고 어떤 차이가 있을까? → 일단 어떤 차이가 있는지 알아보고 왜 ..

[ CS용어 ] JSON 이란?

JSON 이란? JavaScript Object Notation이라는 의미의 축약어이고, JavaScript 객체 문법으로 구조화된 데이터를 표현하기 위한 표준 포맷이다. 이러한 JSON은 XML의 대안으로써 좀 더 쉽게 데이터를 교환하고 저장하기 위하여 고안되었다. 💎예시1💎 { "동물 리스트" : [ { "name" : "강아지", "typeCode": "A" }, { "name" : "고양이", "typeCode": "B" }, ] } 동물 리스트에 강아지, 고양이가 있고 강아지의 타입 코드는 타입 코드는 A이고, 고양이의 타입 코드는 B인 것을 JSON의 형식으로 위 예시처럼 표현 가능하다. * {}는 객체를 뜻함. * []는 배열을 뜻함. 💎예시2💎 { "동물 리스트" : [ { "name" :..

기타/CS용어 2022.10.17
728x90