분류 전체보기 127

System 클래스

자바 프로그램은 운영체제상에서 바로 실행되는 것이 아니라 JVM 위에서 실행 운영체제의 모든 기능을 자바 코드로 직접 접근하기란 어려움 java.lang 패키지에 속하는 System 클래스를 이용하면 운영체제의 일부 기능을 이용할 수 있다. 프로그램 종료, 키보드로 부터 입력, 모니터로 출력 . 메모리 정리, 현재 시간 읽기, 시스템 프로퍼티 읽기, 환경 변수 읽기 등이 가능, System 클래스의 모든 필드와 메소드는 정적(Static) 필드와 정적 (Static) 메소드로 구성 프로그램 종료(exit()) 경우에 따라서는 강제적으로 JVM을 종료 시킬 때도 있다. System 클래스의 exit() 메소드를 호출 exit() 메소드는 현재 실행하고 있는 프로세스를 강제 종료시키는 역할 exit() 메소..

Objects 클래스

Object와 유사한 이름을 가진 java.util.Objects 클래스는 객체 비교, 해시코드 생성, null 여부, 객체 문자열 리턴 등 연산을 수행하는 정적 메소드들로 구성된 Object 유틸리티 클래스 리턴 타입 메소드(매개 변수) 설명 int compare(T a, T b, Comparator c) 두 객체 a와 b를 Comparator를 사용해서 비교 boolean deepEquals(Object a, Object b) 두 객체의 깊은 비교(배열의 항목까지 비교) boolean equals(Object a, Object b) 두 객체의 얕은 비교(번지만 비교) int hash(Object... values) 매개값이 저장된 배열의 해시코드 생성 int hashCode(Object o) 객체의 ..

Object 클래스

extends 키워드로 다른 클래스를 상속하지 않으면 암시적으로 java.Object 클래스를 상속 자바의 모든 클래스는 Object 클래스의 자식이거나 자손 클래스 객체 비교(equals()) public boolean equals(Object obj){...} equals() 메소드 매개타입은 Object인데, 이것은 모든 객체가 매개값으로 대입될수 있음 -> Object가 최상위 타입이므로 모든 객체는 Object 타입으로 자동 타입 변환 될수 있다. Object 클래스의 equals() 메소드는 비교연산자인 ==과 동일한 결과를 리턴 두 객체가 동일한 객체라면 true를 리턴, 그렇지 않으면 false를 리턴 자바에서는 두 객체를 동등 비교할때 equals() 메소드 사용 -> 두객체를 비교해서 ..

java.lang 과 java.util 패키지

가장 많이 사용하는 패키지 java.lang java.util.java.time 패키지 java.lang 패키지 자바 프로그램의 기본적인 클래스를 담고 있는 패키지 java.lang 패키지에 있는 클래스와 인터페이스는 import 없이 사용 가능 String, System 클래스도 java.lang 패키지에 포함되어 있기 때문에 import 하지 않고 사용 클래스 용도 Object -자바 클래스 최상위 클래스로 사용 System -표준 입력장치 (키보드)로부터 데이터를 입력받을때 사용 -표준 출력장치 (모니터)로 출력하기 위해 사용 -자바 가상 기계를 종료 시킬 때 사용 -쓰레기 수집기를 실행 요청할때 사용 Class - 클래스를 메모리로 로딩할 때 사용 String - 문자열을 저장하고 여러가지 정보를..

자바 API 도큐먼트

API (Application Programming Interface) API => 라이브러리라고 부르기도함 프로그램 개발에 자주 사용되는 클래스 및 인터페이스 모음 API 들은 \jre\lib\rt.jar 압축 파일에 저장 API 도큐먼트는 쉽게 API를 찾아 이용 할 수 있도록 문서화 한 것 API 도큐먼트는 HTML페이지로 작성 , http://docs.oracle.com/javase/8/docs/api/ 에서 추가 확인 가능 API 도큐먼트는 세개의 프레임으로 나뉘어져 있다 좌측상단 프레임 패키지 전체 목록 확인 좌측 하단 프레임 패키지에 속하는 클래스와 인터페이스에 대한 상세 설명을 보여 준다 중앙 프레임 내용은 크게 세부분 구성 상단 부분은 클래스가 포함된 패키지 정보, 상속정보, 인터페이스 ..

예외 처리

예외와 예외 클래스 컴퓨터 하드웨어의 오동작 또는 고장 -> 응용프로그램 실행 오류가 발생하는 것을 자바에서 -> 에러 에러 JVM 실행에 문제가 생겼다는 것 JVM위에서 실행되는 프로그램을 아무리 견고하게 만들어도 실행 불능 에러에 대처할 방법이 없음 에러 이외에 예외(exception) 오류 사용자의 잘못된 조작, 개발자의 잘못된 코딩으로 발생하는 프로그램 오류 예외가 발생되면 프로그램은 곧바로 종료 예외처리 (Exception Handling) 통해 프로그램을 종료하지 않고 정상 실행 상태가 유지 일반예외(Exception) - 컴파일러 체크 예외 - 자바 소스를 컴파일 하는과정에서 예외 처리 코드가 필요한지 검사 - 예외 처리 코드가 없다면 컴파일 오류 발생 실행예외(Runtime Exceptio..

중첩 클래스와 중첩 인터페이스

중첩클래스와 중첩 인터페이스란? 객체 지향 프로그램에서에서 클래스들은 서로 긴밀한 관계를 맺고 상호작용을 한다. 어떤 클래스는 여러 클래스와 관계를 맺지만 어떤 클래스는 특정 클래스와 관계를 맺는다. 클래스가 여러 클래스와 관계를 맺는 경우에는 독립적으로 선언 하는것이 좋으나 특정 클래스와 관꼐를 맺을 경우에는 관계 클래스를 클래스 내부에 선언하는 것이 좋다 중첩 클래스(Nested Class)란 클래스 내부에 선언한 클래스를 말하는데 중첩 클래스를 사용하면 두클래스의 멤버들을 서로 쉽게 접근 할수 있다는 장점과 외부에는 불필요한 관계 클래스를 감춤으로써 코드의 복잡성을 줄일 수 있다. class ClassName{ class NestedClassName{ } -> 중첩 클래스 } 인터페이스도 클래스 내..

인터페이스

인터페이스의 역할 인터페이스는 객체의 사용방법을 정의한 타입 객체의 교환성을 높여주기 때문에 다형성을 구현하는 매우 중요한 역할 자바8의 람다식은 함수적 인터페이스의 구현 객체를 생성 인터페이스는 개발 코드와 객체가 서로 통신하는 접점 역할 개발 코드가 인터페이스의 메소드를 호출 -> 인터페이스는 객체 메소드 호출 개발 코드는 객체의 내부 구조를 알 필요가 없다. 인터페이스의 메소드만 알고 있으면 된다. 개발 코드가 직접 객체의 메소드를 호출 하면 간단 -> 개발코드를 수정하지 않고 사용하는 객체를 변경할수 있도록 하기 위함 인터페이스는 하나의 객체가 아니라 여러 객체들과 사용이 가능 하므로 어떤 객체를 사용하느냐에 따라 실행 내용과 리턴값이 다를 수 있다. 개발 코드 측면에서는 코드 변경 없이 실행 내..

추상 클래스

추상 클래스의 개념 추상 (abstract) 실체 간에 공통되는 특성을 추출 객체를 직접 생성 할 수 있는 클래스를 실체 클래스 클래스들의 공통적인 특성을 추출해서 선언한 클래스 추상 클래스 추상클래스와 실체 클래스는 상속 관계 추상 클래스는 new 연산자를 사용해서 인스턴스를 생성 시키지 못함 부모 클래스로만 사용 코드로 설명하면 추상 클래스는 extends 뒤에만 올수 있는 클래스 추상 클래스의 용도 1. 실체 클래스들의 공통된 필드와 메소드의 이름을 통일 할 목적 2. 실체 클래스를 작성할때 시간을 절약 설계자와 코더는 일반적으로 다른 사람 설계자는 코더에서 클래스는 어떤 구조로 작성해야 한다는 것을 알려줄 필요성이 있다. 단순히 문서로 코더에게 전달한다면, 코더가 실수로 필드와 메소드 이름을 다르..

타입 변환과 다형성

다형성 : 같은 타입이지만 실행결과가 다양한 객체를 이용할수 있는 성질 하나의 타입에 여러 객체를 대입함 으로써 다양한 기능을 이용할 수 있도록 해줌 자바는 부모 클래스로 타입 변환을 허용 * 부모 타입에 모든 자식 객체가 대입 될수 있다 -> 객체의 부품화 자동 타입 변환(Promotion) 프로그램 실행 도중에 자동적으로 타입 변환이 일어나는 것 (자동 타입 변환) 부모클래스 변수 = 자식클래스타입; 바로 위의 부모가 아니더라도 상속 계층에서 상위 타입 이라면 자동 타입 변환이 일어날 수있다. 부모 타입으로 자동 타입 변환된 이후에는 부모 클래스에 선언된 필드와 메소드만 접근이 가능 변수는 자식객체를 참조하지만 변수로 접근 가능한 멤버는 부모 클래스 멤버로만 한정 * but 예외) 메소드가 자식 클래..