본문 바로가기

JAVA/혼공자

(26)
[혼공자] Chapter 11-1 java.lang 패키지 (String, Wrapper, Math) String 클래스 자바의 문자열은 java.lang 패키지의 String 클래스의 객체이다. String 클래스에서는 문자열 생성, 추출, 비교, 찾기, 분리, 변환 등의 메소드를 제공한다. - String 객체 생성자 문자열 리터럴은 String 객체로 자동 생성되지만, String 생성자를 이용해 직접 String 객체를 만드는 방법도 존재한다. Ex. String str1 = "Hi"; 도 되고 String str2 = new String("Hi"); 도 된다. String 생성자의 매개값으로는 다양한 값이 올 수 있다. 파일의 내용을 읽거나, 네트워크를 통해 받은 테이터는 보통 byte[ ] 배열형식인데, 이를 문자열로 변환하기 위해 생성자의 매개값으로 byte[ ] 배열을 넘겨준다. 이때, 문..
[혼공자] Chapter 11-1 java.lang 패키지 (Object, System, Class) Chapter 11. 기본 API 클래스 Intro. API 란? API (Application Programming Interface)는 '응용 프로그램 / 프로그래밍 / 인터페이스'로 응용 프로그램에서 프로그래밍 언어를 제어할 수 있게 만든 인터페이스이다. API는 다양한 분야에서 다양한 의미로 사용되는데, 여기서 자바 API란 자바를 쉽게 구현할 수 있게 한 클래스 라이브러리의 집합이다. 즉, 자바라는 언어를 사용하여 사용자의 부담을 최소화하는 반면에 입출력, 화면 구성, 이미지, 네트워크와 같이 복잡하지만 필요한 클래스들을 미리 구현하여 사용자가 쉽게 구현하도록 하는 API이다. 더 쉽게 말하면, java 프로그래밍에 자주 사용되는 패키지라고 생각하면 되겠다. 11-1 java.lang 패키지 j..
[혼공자] Chapter 10. 예외처리 10-1 예외 클래스 ▶ 자바에서의 에러와 예외 에러 (Erorr) : 개발자가 해결할 수 없는 치명적인 오류 Ex. 하드웨어 고장으로 인한 응용프로그램 실행 오류 예외 (Exception) : 개발자가 해결할 수 있는 그나마 덜 심각한 오류 Ex. 잘못된 코딩으로 인해 발생하는 오류 예외가 발생하면 프로그램은 곧바로 종료되지만, 예외 처리를 통해 정상 실행 상태가 유지되게 할 수 있다. 예외 처리의 목적 : 프로그램의 비정상 종료를 막고 정상적인 실행 상태를 유지하는 것 ▶ 예외의 종류 일반 예외 (컴파일러 체크 예외) 컴파일러가 예외처리 코드 유무를 검사한다. 예외처리 코드가 없다면 컴파일 오류가 발생하여 프로그램이 실행되지 않는다. cf. 이클립스는 일반 예외가 발생할 수 있는 코드를 작성하면 빨간..
[혼공자] Chapter 09-2 익명 객체 ▶ 익명 객체란 정의 : 이름이 없는 객체 조건 : 어떤 클래스를 상속하거나 인터페이스를 구현해야 한다. 종류 : 어떤 클래스를 상속하는 익명 상속 객체, 어떤 인터페이스를 구현하는 익명 구현 객체 사용하는 이유 : 일반적으로 클래스를 이름과 함께 정의하고 생성자로 해당 클래스의 객체를 만들어 사용한다. 클래스에 이름을 정의하는 이유는 어디에서건 클래스의 이름과 동일한 생성자를 호출하여 객체를 만들기 위함이다. 하지만, 특정 위치에서만 사용하는 클래스라면, 위의 기능이 필요하지 않으므로 이름을 명시하는 것이 필요 없는 작업이 된다. 이런 경우 익명 객체를 생성하는 것이 효율적이다. 익명 객체를 사용하는 목적 : 한 번만 사용할 자식 객체, 구현 객체를 만들기 위해 사용 방법 : new와 생성자를 이용해 ..
[혼공자] Chapter 09-1 중첩 클래스와 중첩 인터페이스 소개 ▶ 정의 중첩 클래스 : 클래스 내부에서 선언한 클래스 중첩 인터페이스 : 클래스 내부에서 선언한 인터페이스 ▶ 중첩 클래스의 장점 외부에서 필드에 접근하려 하면, 항상 getter, setter을 사용해야 하지만 중첩 클래스나 중첩 인터페이스를 사용하면, 필드에 쉽게 접근할 수 있음 (아무 제한 없이 접근할 수 있는건 아니고 this 키워드 이용해야 함) 외부에 불필요한 클래스를 감춤으로써 코드의 복잡성을 줄일 수 있음 ▶ 중첩 클래스의 종류 중첩 클래스는 그 역할에 따라 클래스 멤버로 선언되는 멤버 클래스, 생성자 또는 메소드 내부에서 선언되는 로컬 클래스로 구분되며 멤버 클래스는 인스턴스 멤버 클래스, 정적(static) 멤버 클래스로 구분된다. * 편의상 바깥 클래스를 A, 중첩 클래스를 B로 둠..
[혼공자] Chapter 08. 인터페이스 인터페이스 역할 : 강제적인 설계도 + USB 포트 인터페이스 타입에 구현 객체가 대입되었을 때(자동 형변환), 인터페이스의 메소드를 호출함으로써 구현 객체의 메소드를 모른 상태에서도 구현 객체의 메소드를 실행할 수 있음 ▶ 인터페이스의 특징과 장점 ① 다중 상속 가능 여러 인터페이스를 상속하면 여러 부모의 필드와 메소드를 이용할 수 있다. 즉, 다양한 동작을 수행할 수 있다. → 추상 클래스와의 가장 큰 차이점! ② 클래스 설계도 추상 클래스처럼, 인터페이스는 추상 메소드를 통해 클래스 설계를 강제할 수 있다. 하지만, 인스턴스 메소드를 구현할 수 있는 추상 메소드와 달리 인터페이스의 목적은 오로지 '설계'이므로 메소드를 구현할 순 없으며, 오로지 추상 메소드만 선언만 가능하다. (default, st..
[혼공자] Chapter 07-3 추상 클래스 ▶ 추상 클래스란? 정의 : 실체 클래스의 공통된 특징을 추출하여 선언한 클래스 cf. 사전상 정의보다 특징이 더 중요한 개념 같다. Q. 추상 클래스가 필요한 이유? ① 필드와 메소드 이름 통일 기능이 동일함에도 이름이 다른 경우, 사용 방법이 달라서 복잡해진다. Ex. 이름이 다르므로, 메소드에 넣는 부분도 다르게 작성해줘야 함 이때, 동일한 클래스를 상속한다면 메소드 이름을 통일할 수 있다. Ex. Cat 클래스의 소리 함수 : meow( ) / Dog 클래스의 소리 함수 : woof( ) 처럼 이름이 따로 있는 것보다 Cat, Dog 모두 Animal 클래스를 상속하게 하면 void makeSound(Animal ani){ani.sound( );} 처럼 공통된 함수를 사용할 수 있어 통일감 있다...
[혼공자] Chapter 07-2 타입 변환과 다형성 intro. 앞서 말했듯이 객체지향 프로그래밍은 '객체를 어떻게 조립할 것인가'가 관건이다. 이번 절에서는 상속의 파생 개념으로 클래스 타입 변환과 다형성에 대해 배워보고자 한다!! ▷ 복습 - 지금까지 배운 타입 변환 기본형에서의 자동 타입 변환 : 더 작은 것을 큰 그릇으로 담아도 괜찮다는 개념 ex. int i1 = 7; double d1 = i1; // 정상 작동 기본형에서의 강제 타입 변환 : (타입)의 문법으로, 넘치는 것은 버리겠다는 개념 ex. int i2 = (int)3.14; 문자형 to 기본형 타입 변환 ex. int i3 = Integer.parseInt(str); // 정수로 ex. char c = str.charAt(0); // char로 기본형 to 문자형 타입 변환 ex. S..