본문 바로가기

Programming language

(38)
[JAVA] StringBuffer 클래스 1. String처럼 문자열 배열(char [])을 내부적으로 가지고 있다. 그러나 String과 달리 내용을 변경할 수 있다. 2. StringBuffer는 저장할 문자열의 길이를 고려해서 적절한 크기로 생성해야 한다. 버퍼의 크기를 지정하지 않으면 버퍼의 크기는 16이 된다.(만약 지정하면 +16만큼 늘어남) 3. append(), delete(), insert()의 반환 타입이 StringBuffer이다. 4. StringBuffer는 equals()가 오버라이딩 되어있지 않다.(주소비교) String은 오버라이딩이 되어있고 내용비교를 함 - 참고 public class Ch9_15_16_17_18 { public static void main(String[] args) { StringBuffer ..
[JAVA] 예외 처리 예외 발생시키기 1. 연산자 new를 이용해서 발생시키려는 예외 클래스의 객체를 만든 다음 2. 키워드 throw를 이용해서 예외를 발생시킨다. package org.example.ch08; public class Ch8_9_10 { public static void main(String[] args) { try{ // Exception e = new Exception("여기는 에러 메세지"); // throw e; // 예외를 발생시킴 throw new Exception("여기는 에러 메시지"); // 한줄로 가능 } catch (Exception e) { System.out.println("에러 메시지 : " + e.getMessage()); e.printStackTrace(); } System.ou..
[JAVA] instanceof 연산자 1. 참조변수의 형변환 가능여부 확인에 사용, 가능하면 true 반환 2. 형변환 전에 반드시 instanceof로 확인해야 함 a instanceof b a와 b의 객체가 같거나 a가 b의 자손 객체면 true를 반환한다. public class Ch7_26 { public static void main(String[] args) { FireEngine2 fe = new FireEngine2(); System.out.println(fe instanceof Object); // ture System.out.println(fe instanceof Car2); // ture System.out.println(fe instanceof FireEngine2); // ture } } Q 참조변수의 형변환은 왜 하..
[JAVA] 프로그램 오류 컴파일 에러(compile-time error) : 컴파일할 때 발생하는 에러 런타임 에러(runtime error) : 실행할 때 발생하는 에러 논리적 에러(logical error) : 작성 의도와 다르게 동작 JAVA의 런타임 에러 에러(error) : 프로그램 코드에 의해서 수습될 수 없는 심각한 오류 예외(exception) : 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류 -> 에러는 어쩔 수 없지만, 예외는 처리하자. 예외처리의 정의와 목적 정의 프로그램 실행 시 발생할 수 있는 예외의 발생에 대한 코드를 작성하는 것 목적 프로그램의 비정상 종료를 막고, 정상적인 실행상태를 유지하는 것 Exception과 RuntimeException Excepion클래스를 Exception의 자..
[JAVA] 내부 클래스 1. 크게 내부 클래스는 인스턴스 내부 클래스, static 내부 크래스, 지역 내부 클래스가 있음 2. 내부 클래스의 제어자는 변수에 사용 가능한 제어자와 동일(원래 클래스는 default or public 만 허용함) package org.example.ch07; public class Ch7_45_46_47_48_49_59 { public static void main(String[] args) { // static 내부 클래스만 static 멤버를 정의할 수 있다. // 어떻게보면 당연한게 static 멤버는 객체 생성없이 사용할 수 있어야됨 // 단 상수인 경우에는 허용한다(final static) System.out.println(InstanceInner.CONST); System.out.pr..
[JAVA] 인터페이스 추상 메서드의 집합 선언부가 같고 구현부가 다르기 때문에 기존 클래스는 다중 상속이 안됨 ->인터페이스는 구현부가 없기 때문에 충돌 문제가 없음 -> 다중 상속 가능 인터페이스의 구현 인터페이스에 정의된 추상 메서드를 완성하는 것 인터페이스(미완성 설계도)에 정의된 추상 메서드를 완성하는 것 - 구현 - implements 추상클래스 vs 인터페이스 차이 2 추상 클래스는 extends 상속을 통해서 추상 클래스 완성 -> 추상 클래스는 일부만 구현하는 경우, 클래스 앞에 abstract 를 붙여야 함 인터 페이스는 implemetns 구현을 통해서 인터 페이스 완성 Q 추상 클래스와 인터페이스의 공통점은? A 추상 메서드를 가지고 있다(미완성 설계도) Q 추상 클래스와 인터페이스의 차이점은? A 인터페..
[JAVA] 다형성 1. 객체지향개념 중에서 가장 중요한 개념이다. 2. 여러 가지 형태를 가질 수 있는 능력이다. 3. 조상 타입 참조 변수로 자손 타입 객체를 다루는 것이다. - 이렇게 외우면 된다. 4. 자손 타입의 참조변수로 조상 타입의 객체를 가리킬 수 없다. public class Ch7_23 { public static void main(String[] args) { Tv tv = new SmartTv(); // 조상 타입 참조변수로 자손 타입 인스턴스 참조 // SmartTv tv1 = new Tv(); // 에러 허용 안됨 // 버튼이 7개인데 실제 사용할 수 있는 기능이 5개 그래서 허용 안함 // 불일치가 가능하다 // 조상타입으로 가리키면 실제 멤버 개수보다 적게 쓸 수 밖에 없음 } } class T..
[JAVA] 캡슐화 1. 외부로부터 데이터를 보호하기 위해서 2. 외부에는 불필요한, 내부적으로만 사용되는, 부분을 감추기 위해서 package org.example.ch07; public class Ch7_22 { public static void main(String[] args) { Time t = new Time(); // t.hour = 13; // 멤버 변수에 직접 접근하면 데이터가 보호가 안됨 -> 간접 접근 t.setHour(24); // 잘못된 값이 들어와서 데이터가 보호가 됨 System.out.println(t.getHour()); t.setHour(23); System.out.println(t.getHour()); } } class Time{ private int hour; // 0~23 사이의 값을 ..