본문 바로가기

전체 글192

[JAVA] File.separator로 파일 구분자 사용하기 파일을 저장할 때 파일의 경로가 달라지면 전혀 다른 곳으로 저장이 될 수도 있기에 주의가 필요한데 사용하는 운영 체제에 따라 파일 경로를 구분하는 파일 구분자가 다르게 사용된다. 윈도우는 구분자 '\'로 파일을 구분하고 리눅스는 구분자 '/'로 파일을 구분한다. (요즘 윈도우는 '/'도 인식한다고 한다.) 파일/폴더 경로를 작성 시 이렇게 작성 할 수 있다. (\는 escape문자로 인식하기에 2번 입력해야 한다.) String path = "pathA\\pathB\\pathC"; 그러나 이럴 경우 리눅스에서 해당 코드를 실행 시 파일 구분자를 변경해주어야 하는데 이러한 불편함을 해소하기 위해 File.separator를 사용한다. String path = "pathA"+File.separator+"pa.. 2021. 2. 18.
[08-2] finally, try-with-resources, 사용자정의예외, 예외 던지기 finally블럭o  finally블록은 예외의 발생 여부에 상관없이 반드시 실행 되어야할 코드를 포함시킬 목적으로 사용된다.o  try-catch문에 선택적으로 덧붙여 사용할 수 있으며, try-catch-finally 순으로 구성된다. public class Test {        public static void main(String[] args) {        try {            // 예외 발생 가능성이 있는 문장을 넣는다.        } catch{            // 예외 처리를 위한 문장을 적는다.        } finally {            // 예외에 발생여부에 관계없이 항상 수행 되어야하는 문장들을 넣는다.            // finally블럭은 tr.. 2021. 2. 17.
[08-1] 예외 처리, try-catch, throw, throws 예외처리(exception handling) 프로그램 오류 o 프로그램 오류는 발생 시점에 따라 나눌 수 있다. 컴파일 에러 : 컴파일 시에 발생하는 에러 런타임 에러 : 실행 시에 발생하는 에러 논리적 에러 : 실행은 되지만, 의도와 다르게 동작하는 것 o 소스코드를 컴파일 시 컴파일러가 소스코드에 대해 오타나 잘못된 구문, 자료형 체크 등의 기본적인 검사를 수행하여 오류가 있는지를 알려준다. 알려준 오류를 수정하고 컴파일을 마치면 클래스 파일이 생성되어 실행할 수 있다. o 컴파일러가 소스코드의 오류는 검사하지만 실행 중에 발생할 수 있는 에러는 검사하지 못하기에 실행 중 에러가 발생할 수 있다. o 자바는 프로그램 실행 시 발생할 수 있는 에러를 두 가지로 구분하였다. 에러(error) - 프로그램.. 2021. 2. 17.
[07-8] 내부 클래스(inner class), 익명 클래스(anonymous class) 내부 클래스(inner class) o 내부 클래스는 클래스가 클래스 내에 선언된다는 점을 제외하면 일반 클래스와 다르지 않다. 내부 클래스의 몇 가지 특징만 잘 이해하면 실제로 활용하는데 어려움이 없을 것이다. o 내부 클래스는 사용빈도가 높지 않으므로 내부 클래스의 기본 원리와 특징을 이해하는 정도 까지만 알아본다. 내부 클래스란? o 내부 클래스는 클래스 내에 선언된 클래스로 클래스에 다른 클래스를 선언하는 이유는 다음과 같은 장점이 있기 때문이다. 1. 내부 클래스에 외부 클래스의 멤버들을 쉽게 접근할 수 있다. 두 클래스의 멤버들 간에 서로 쉽게 접근할 수 있다. 2. 코드의 복잡성을 줄일 수 있다.(캡슐화) 외부에 불필요한 클래스를 감춤으로써 코드의 복잡성을 줄일 수 있다. 내부 클래스의 종류.. 2021. 2. 17.
[자바의 정석] Chapter 7 객체 지향 프로그래밍II (8) - 인터페이스(interface) 인터페이스(interface) 인터페이스란? o 인터페이스는 추상클래스의 일종으로 추상클래스와 비슷하나 약간의 다른 점이 있다. 구현부를 갖춘 메서드 또는 멤버 변수를 멤버로 가질 수 없으며 오직 추상 메서드와 상수만을 멤버로 가질 수 있다. o 추상 클래스가 미완성 설계도였으면 인터페이스는 구현된 것은 아무것도 없이 밑그림만 그려진 기본 설계도라 할 수 있다. o 인터페이스도 자체만으로 사용되기 보다 다른 클래스를 작성하는데 도움 줄 목적으로 작성된다. 인터페이스 작성 o 인터페이스 작성은 class키워드 대신 interface를 사용하며 접근 제어자 또한 클래스와 같이 public 또는 default를 사용할 수 있다. 그러나 클래스 멤버와 달리 인터페이스 멤버들은 다음과 같은 제약사항이 있다. - .. 2021. 2. 17.
[자바의 정석] Chapter 7 객체 지향 프로그래밍II (7) - 추상클래스(abstract class) 추상클래스(abstract class) 추상클래스란? o 추상 클래스는 미완성 설계도로 비유할 수 있다. 미완성이라는 것은 멤버 개수에 관계된 것이 아닌 미완성 메서드(추상메서드)를 포함하고 있다는 의미이다. o 추상클래스는 인스턴스를 생성할 수 없으며, 상속을 통해 자손클래스에 의해서만 완성될 수 있다. 추상클래스 자체로는 클래스로서 역할을 다 못하지만, 새로운 클래스를 작성하는데 있어 중요한 의미를 갖는다. o 키워드 ‘abstract’를 붙이기만 하면 추상클래스를 선언할 수 있다. 이를 통해 이 클래스에는 추상메서드가 있으니 상속을 통해 구현을 해줘야 한다는 것을 쉽게 알 수 있다. abstract class Ex {...} o 추상 클래스는 추상 메서드를 포함하고 있다는 것을 제외하면 일반 클래스.. 2021. 2. 16.
[자바의 정석] Chapter 7 객체 지향 프로그래밍II (6) - 다형성(polymorphism)(2) 매개변수의 다형성 o 참조변수의 다형성 특징은 매개변수에도 적용이 된다. 어떤 메소드에서 매개변수를 특정 타입 (조상)클래스의 자손 클래스 타입으로 참조변수를 받는 경우 자손 클래스가 여러 개면 해당 자손 클래스 들을 사용하기 위해 메소드도 추가해야 한다. o 그러나 매개변수를 자손 클래스 타입 참조 변수 대신 조상 클래스 참조 변수로 사용한다면 조상 클래스 참조변수를 받는 메소드 하나로 여러 자손 클래스 타입의 값을 입력 받을 수 있다. package JavaProject; public class Test { public static void main(String[] args) { Buyer b = new Buyer(); Tv t = new Tv(); b.buy(t); //b.buy(new Tv());.. 2021. 2. 16.
[자바의 정석] Chapter 7 객체 지향 프로그래밍II (5) - 다형성(polymorphism) 다형성이란? o 객체지향개념에서 다형성이란 ‘여러 가지 형태를 가질 수 있는 능력’을 의미하며, 한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록 한다. 구체적으로는 조상클래스 타입의 참조변수로 자손클래스의 인스턴스를 참조할 수 있도록 하는 것이다. o 지금까지 생성된 인스턴스를 다루기 위해서는 인스턴스 타입과 일치하는 참조변수만을 사용했다. 그러나 서로 상속 관계에 있는 클래스의 경우 조상 클래스 타입의 참조변수로 자손 클래스의 인스턴스를 참조하도록 하는 것도 가능하다. 객체 배열의 다형성 매개 변수의 다형성 Animal[] animals = new Animal[4]; animals[0] = new Dog(); animals[1] = new Cat(); animals[2] = new Rabbi.. 2021. 2. 16.
[자바의 정석] Chapter 7 객체 지향 프로그래밍II (4) - 제어자(modifier) 제어자란? o 제어자(modifier)는 클래스, 변소 또는 메서드의 선언부에 함께 사용되어 부가적인 의미를 부여한다. 접근 제어자 public, protected, default, private 그 외 static, final, abstract, native, transient, synchronized, volatile, strictfp o 제어자는 클래스나 멤버 변수에 주로 사용되며, 하나의 대상에 여러 제어자를 조합하여 사용할 수 있지만 접근 제어자는 한 번에 하나만 선택해서 사용할 수 있다. static – 클래스의, 공통적인 o static은 ‘클래스의’ 또는 ‘공통적인’의미로 인스턴스 변수는 인스턴스 별로 다른 값을 유지하지만 클래스(static)변수는 모든 인스턴스가 공유하기에 하나의 값을 .. 2021. 2. 16.