네트워킹이란 두 대 이상의 컴퓨터를 케이블로 연결하여 네트워크를 구성하는 것을 말한다. 컴퓨터들끼리 데이터를 쉽게 주고받거나 주변기기를 함께 공유하고자 하는 목적으로 시작되었다.
표준입출력은 콘솔을 통한 데이터의 입력과 출력을 의미한다. 자바에서는 표준 입출력을 위해 System.in, System.out, System.err을 제공하는데, 이들은 자바 어플리케이션 실행과 동시에 자동 생성되기 때문에 개발자가 별도로...
입출력이란 컴퓨터 내부 또는 외부의 장치와 프로그램간의 데이터를 주고받는 것을 말한다. 자바에서 입출력을 실행하기 위해서 두 대상을 연결하고 데이터를 전송하는 역할로 스트림을 사용한다. 즉 스트림이란 데이터를 운반하는데 사용되는 연결통로이다.
collect()는 스트림의 최종 연산 중 가장 복잡하고 유용한 메서드이다. 스트림의 요소를 수집하여 다양한 결과를 볼 수 있다. 필요한 스트림의 요소를 어떻게 수집할 것인가를 정의한 것이 컬렉터이다.
반복된 연산이나 중복된 기능의 메서드들에 대한 문제를 해결하기 위해 만든 것이 스트림이다. 스트림은 데이터 소스를 추상화하고, 데이터를 다루는데 자주 사용되는 메서드들을 정의해 놓았다.
람다식이란 메서드를 하나의 식으로 표현한 것이다. 함수를 간략하면서도 명확하게 표현할 수 있다. 메서드를 람다식으로 변환하면 이름과 반환값이 없어져 익명 함수라고 부르기도 한다.
멀티쓰레드 프레스스의 경우 여러 쓰레드가 같은 프로세스내의 자원을 공유하여 작업하기 때문에 서로의 작업에 영향을 주게 된다. 서로의 영향으로 인해 의도했던 것과 다른 결과를 얻을 수 있는데, 이러한 일이 발생하는 것을 ...
두 작업을 처리하는 상황에서 싱글쓰레드의 경우 한 작업을 마친 후 다른 작업을 시작하지만, 멀티쓰레드는 2개의 쓰레드가 번갈아 가면서 작업을 수행하기 때문에 동시에 작업이 수행되는 것처럼 보인다.
자바를 개발한 사람들은 소스코드와 문서를 하나의 파일로 관리하는 것이 바람직하다고 생각했다. 소스코드의 주석에 소스코드에 대한 정보를 저장하고, 소스코드의 주석으로부터 HTML문서를 생성해내는 프로그램을 만들어서 사용했다.
지네릭스는 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입체크를 해주는 기능이다. 컴파일시에 객체타입을 체크하기 때문에 타입 안정성을 높이고 형변환의 번거로움을 줄일 수 있다.
Arrays.sort()와 같은 정렬 메소드는 컴퓨터가 배열을 정하는 것처럼 보였지만, 실제로는 Comparator와 Comparable 인터페이스 구현에 의해 정의되고 있었던 것이다.
앞서 본 배열(ArrayList)는 구조가 간단한고 데이터를 읽어오는데 걸리는 시간(access time)이 빠르다는 장점을 가지고 있다. 하지만 배열의 크기를 변경하거나 순차적으로 데이터에 접근하지 않는 경우 시간이 오래걸린다는 단점이 존재한다.
Instant는 EPOCH TIME(1970-01-01 00:00:00 UTC)부터 경과된 시간을 나노초 단위로 표기한다. 단일 진법을 사용하기 때문에 연산에 유리하다는 장점을 가지고 있다. UTC를 기준으로 잡기 때문에 LocalTime과 차이가 있을 수 있다.
날짜와 시간을 다루기 위해 JDK1.0부터 Date클래스, JDK1.1부터 Calendar클래스를 제공하였는데, 여러가지 불편한 점이 많았다.
Math클래스는 수학 연산과 관련된 메소드로 구성되어 있다. Math클래스의 생성자는 접근 제어자가 private이라 다른 클래스에서 Math인스턴스를 생성할 수 없는데, 이는 Math클래스 내의 인스턴스 변수가 하나도 없어 인스턴스를 생성할 필요가 없기 때문이다.
Object클래스는 모든 클래스의 최고 조상이기 때문에 머돈 클래스에서 바로 사용할 수 있다. Object클래스에 존재하는 몇몇 메소드에 대해 살펴보자.
프로그램 오류란 프로그램 실행 중 오작동하거나 비정상적으로 종료되는 경우를 말한다. 에러의 종류에는 발생 시점으로 구분하는 컴파일 에러와 런타임 에러, 그 외에도 논리적 에러 등이 존재한다.
내부 클래스는 말 그대로 클래스 내부에서 선언되는 클래스이다. 클래스 내부에 클래스를 선언하는 이유는 두 클래스가 밀접한 관계를 맺고 있기 때문이다.
추상 클래스란 미완성 메소드를 포함하고 있는 클래스를 의미한다. 메소드의 선언부만 정의하고 구현부가 없는 상태이기 때문에 무의미하다고 생각할 수 있지만 클래스 작성의 틀을 제공하는 역할을 수행한다.
제어자는 클래스, 변수 또는 메소드의 선언부에 함께 사용되어 부가적인 의미를 부여한다. 제어자의 종류는 크게 접근 제어자와 그 외로 나눌 수 있다. 제어자는 여러가지를 조합할 수 있으나 접근 제어자의 경우에는 4가지 중 한가지만을 사용해야 한다.