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