본문 바로가기

Java/information

(31)
[자바/JAVA] Stream 프로그램은 데이터를 읽고 출력하는 작업을 빈번히 수행한다. 데이터는 키보드를 통해 입력될 수도 있고, 파일 또는 네트워크로부터 입력될 수도 있다. 반대로 모니터로 출력될 수도 잇고, 파일 또는 네트워크로 출력될 수도 있다. 자바에서 데이터는 스트림을 통해 입출력 된다. 스트림은 단일 방향으로 연속적으로 흘러가는 것을 말하는데, 물이 높은 곳에서 낮은 곳으로 흐르듯이 데이터는 출발지에서 도착지로 흘러간다. 프로그램이 출발지냐 또는 도착지냐에 따라서 사용하는 스트림의 종류가 결정된다. 프로그램이 도착지이면 흘러온 데이터를 입력받아야 하므로 입력 스트림을 사용하고, 반대로 프로그램이 출발지면 데이터를 출력해야 하므로 출력 스트림을 사용한다. 입출력 스트림의 종류 java.io 패키지에는 여러 가지 종류의 스트..
[자바/JAVA] java.util의 여러 클래스들 java.util은 java에서 기본적으로 제공되는 클래스들을 모음 패키지이다. 컬렉션의 클래스들이 대부분을 차지하고 있다. Math 클래스 java.lang.Math 클래스는 수학 계산에 사용할 수 있는 메소드를 제공하고 있다.' Math 클래스가 제공하는 메소드는 모두 정적 메소드이므로 Math 클래스로 바로 사용이 가능하다. 수학 관련 클래스로, 생성자가 없고 두개의 상수와 메소드들로 이루어짐 모든 메소드들은 정적 메소드로 인스턴스 생성없이 사용할 수 있음 java.util.Random 클래스 java.util 패키지에 있는 Random 클래스는 임의의 수를 생성할 때 유용 생성자 Random() : 임의의 값을 생성할 수 있는 인스턴스 생성함 Random(long seed) : seed 값으로 임..
[자바/JAVA] API와 String 메소드들 API application programming interface의 약자로 api의 맥락에서 애플리케이션이라는 단어는 고유한 기능을 가진 소프트웨어를 나타낸다. 인터페이스는 두 애플리케이션 간의 서비스 계약이라고 할 수 있는데 이 계약은 요청과 응답을 사용하여 두 애플리케이션이 서로 통신하는 방법을 정의한다. api 문서는 개발자가 이러한 요청과 응답을 구성하는 방법에 대한 정보가 들어있다. 많은 사람들이 api를 레스토랑의 점원을 빗대어 말하는데 손님(사용자)가 들어오면 점원(api)를 통해 원하는 음식을 주문하고 그것을 주방(프로그램)에 전달하고 원하는 서비스를 제공할 수 있게 도와주는 매개체로 볼 수 있다. 이렇게 api의 장점으로는 사용자가 보기에 어렵지 않게 간소화되고 빠른 프로세스 처리를 가..
[자바/JAVA] 예외 클래스 오류에는 예외와 에러로 나뉜다. 예외는 일반 예외와 실행 예외로 또 나뉜다. 자바에서는 컴퓨터 하드웨어의 오동작 또는 고장으로 인해 응용프로그램 실행 오류가 발생하는 것을 에러라고 한다. 그리고 에러 이외에 프로그램 자체에서 발생하는 오류는 예외라고 부른다. 예외란 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류를 말한다. 예외가 발생되면 곧바로 종료된다는 점에서는 에러와 비슷하다. 그러나 예외는 예외 처리를 통해 프로그램을 종료하지 않고 정상 실행 상태가 유지되도록 할 수 있다. 자바는 예외가 발생할 가능성이 높은 코드를 컴파일할 때 예외 처리 유무를 확인한다. 만약 예외 처리 코드가 없다면 컴파일 되지 않는다. 하지만 모든 예외에 대해서 예외 처리 유무를 확인하는 것은..
[자바/JAVA] 익명 객체 익명 객체 -이름이 없는 객체 명시적으로 클래스를 선언하지 않기 때문에 쉽게 객체를 생성할수 있음 -필드값, 로컬 변수값, 매개변수값으로 주로 사용 1)익명 자식 객체 -부모 클래스를 상속받아 생성되는 객체 -부모 타입의 필드, 로컬 변수, 매개 변수의 값으로 대입할 수 있음 2)익명 구현 객체 -인터페이스를 구현해서 생성되는 객체 -인터페이스 타입의 필드, 로컬변수, 매개변수의 값으로 대입할 수 있음 -안드로이드와 같은 UI 프로그램에서 이벤트를 처리하는 객체로 많이 사용 new 부모 생성자(매개값...){ 필드 메소드 }; 익명 자식 객체(무명 클래스)는 프로그램에서 일시적으로 한번만 사용되고 버려지는 객체로 익명객체를 만드려면 단독으로 생성할 수 없고 부모 클래스를 상속받아 생성되며 부모 타입의 필..
[자바/JAVA] 중첩클래스 중첩 클래스 중첩 클래스(nested class), 내부 클래스란 클래스 내부에 선언한 클래스를 말한다. 중첩 클래스를 사용하면 두 클래스의 멤버들을 서로 쉽게 접근할 수 있고, 외부에는 불필요한 관계 클래스를 감춤으로써 코드의 복잡성을 줄일 수 있다는 장점이 있다. 중첩 클래스는 클래스 내부에 선언되는 위치에 따라서 크게 두가지로 분류된다. 1)클래스의 내부에 클래스의 멤버로써 선언되는 중첩 클래스를 멤버 클래스라 하고 멤버 클래스는 static키워드가 안붙는 인스턴스 멤버 클래스와 static키워드가 붙는 정적 멤버 클래스가 있다. 혹은 어느 위치에서 선언하느냐에 따라 네가지 형태로 나누기도 한다. =>인스턴스 클래스, static 클래스, 지역 클래스, 익명 클래스 (1)인스턴스 멤버 클래스 인스턴..
[자바/JAVA] interface 인터페이스는 클래스와는 달리 다중상속을 허용한다. 인터페이스를 상속을 받았으면 인터페이스가 가지고 있는 추상 메소드를 모두 구현해야한다. 그렇지 않다면 본인도 인터페이스가 되어야 한다. 인터페이스를 구현하는 클래스에서는 추상 메소드를 구현할 때 public 접근 제한자를 붙이지 않으면 에러가 난다. 부모가 가지고 있는 접근 제한보다 더 강하게 접근 제한을 할 수 없기 때문이다. 자바 7까지는 인터페이스는 상수 필드와 추상 메소드만을 구성 멤버로 가졌지만 자바 8부터는 default와 static 메소드, 자바 9부터는 private 메소드도 가질 수 있게 되었다. default키워드를 갖는 default 메소드의 접근 제한은 public으로 접근 제한자를 붙이지 않으면 컴파일러가 자동으로 생성해준다. 인..
[자바/JAVA] 추상 클래스와 인터페이스 추상 클래스는 실체 클래스가 공통적으로 가져야 할 필드와 메소드들을 정의해놓은 추상적인 클래스로, 실체 클래스의 멤버(필드, 메소드)를 통일하는데 목적이 있다. 모든 실체들이 가지고 있는 메소드의 실행 내용이 동일하다면 추상 클래스에 메소드를 작성하는 것이 좋다. 하지만 메소드의 선언만 통일하고, 실행 내용은 실체 클래스마다 달라야하는 경우가 있다. 이런 경우를 위해서 추상 클래스는 추상 메소드를 선언할 수 있다. 추상 메소드는 abstract 키워드와 함께 메소드의 선언부만 있고 메소드 실행 내용인 중괄호 {}가 없는 메소드를 말한다 추상메소드 -어떤 클래스가 자식 클래스만을 위해 존재하는 경우 추상 클래스로 정의해 사용가능 -부모 클래스에 메소드 이름은 존재하지만 메소드 내용은 필요하지 않은 경우 추..