멀티스레드

스레드는 프로그램의 흐름을 말한다. 프로그램을 실행하면, main() 메소드가 호출되어 하나의 스레드가 시작된다. 일반적으로 프로그램이 하나의 흐름으로 실행되는 것을 싱글 스레드라고 하는데 이 흐름을 여러개 만들어 동시에 실행하는 것을 멀티스레드라고 한다.

Thread 클래스를 상속받아 run() 메소드를 오버라이딩 한다.


현재시각

currentTimeMills() 메소드는 그리니치 표준시로 1970/1/1 00:00:00부터 현재까지 경과시간을 밀리초로 long형 리턴한다. 밀리초인데다가 시차고려도 되지 않아 date 클래스를 이용하여 변환한다.

long time = System.currentTimeMills();

Date d = new Date(time);

Calendar 클래스

캘린더 클래스는 date 오브젝트값을 년,월,일,시간 등의 값으로 변환하는 추상클래스이다. 일반적인 달력으로 변환하기 위해서 GregorianCalendar 클래스를 사용한다.

Math 클래스

수학과 관련된 메소드를 사용한다.

메소드 

동작 

사용법 

abs() 

절대값 

int a = Math.abs(b) 

max() 

최대값

int a = Math.max(b,c) 

min() 

최소값

int a = Math.min(b,c) 

sqrt() 

제곱근

double z = Math.sqrt(x) 

exp() 

e지수

double z = Math.exp(x) 

pow() 

거듭제곱

double z = Math.pow(x,y) 

log() 

자연대수

double z = Math.log(x) 

sin() 

사인

double z = Math.sin(x) 

cos() 

코사인

double z = Math.cos(x) 

tan() 

탄젠트

double z = Math.tan(x) 

toRadians() 

각도 > 라디안

double b = Math.toRadians(a) 

toDegrees()

라디안 > 각도

double a = Math.toDegrees(b) 

random()

난수생성

double ran = Math.random() 

수학과 관련된 필드

필드명 

내용 

자연로그 밑 (2.718...) 

PI

원주율(3.141592...) 


비트연산자

논리곱 & : 각비트를 비교하여 모두 1이면 1, 아니면 0을 반환

논리합 | : 각비트를 비교하여 한쪽이 1이면 1, 아니면 0을 반환

배타적논리합 ^ : 각비트를 비교하여 한쪽이 1이고 다른한쪽이 0이면 1, 그렇지 않으면 0을 반환

보수 ~ : 각 비트를 반전한 값을 반환


시프트 연산자

비트열을 좌우로 이동하는 연산자를 시프트연산자라고 한다.

왼쪽 시프트 연산자 << : 왼쪽으로 시프트한다. 10 << 2 10을 왼쪽으로 2비트 시프트한다. 최상위비트는 사라지고 최하위비트는 0으로 채워진다.

오른쪽 시프트 연산자 >> : 오른쪽으로 시프트한다. 10 >> 2 10을 오른쪽으로 2비트 시프트한다. 최하위비트는 사라지고 최상위비트는 시프트전 최상위 비트값과 같은 값으로 채워진다.

논리 오른쪽 시프트 연산자 >>> : 오른쪽으로 시프트하면서 최상위는 0으로 채워진다. 10 >> 2 10을 오른쪽으로 논리 2비트 시프트한다. 최하위비트는 사라지고 최상위비트는 0으로 채워진다.


File 클래스

File 클래스는 파일명 자체를 표현하기도 하고 파일과 디렉토리를 다루기 위한 클래스이기도 하다. java.io 패키지를 임포트해야 사용할 수 있다.

메소드명 

기능 

사용법 

생성자 

 파일명 초기화

File f = new File("file.txt") 

getAbsolutePath() 

파일 또는 디렉토리의 절대경로명 

File f = new File("file.txt")

String a = f.getAbsolutePath() 

isAbsolute() 

절대경로명인지 판단 

File f = new File("file.txt")

boolean a = f.isAbsolute() 

list() 

디렉토리에 있는 파일과 디렉토리 문자열로 가져옴

File d = new File("dir")

String[] b = d.list() 

mkdir() 

디렉토리를 생성

File d = new File("dir")

boolean a = d.mkdir() 

delete() 

파일 또는 디렉토리 삭제

File f = new File("file.txt")

boolean a = f.delete() 

renameTo() 

파일명 변경

File f1 = new File("file1.txt")

File f2 = new File("file2.txt")

boolean a = f1.renameTo(f2) 

isFile() 

파일인지 아닌지 판정

File f = new File("file.txt")

boolean a = f.isFile() 

isDirectory() 

디렉토리인지 아닌지 판정

File d = new File("dir")

boolean a = d.isDirectory() 

exists() 

파일 또는 디렉토리가 존재하는지 판정

File f = new File("file.txt")

boolean a = f.exists() 


printf() 메소드

C언어처럼 서식을 지정하여 데이터를 표시할수 있다. format() 메소드를 사용해도 같은 결과가 나온다.

%d : 정수를 10진수로 표시

%f : 실수를 표시

%c : 문자를 표시

%s : 문자열을 표시

printf("%4d",25) : 공백두개와 25 출력. printf("%04d",25) : 0025 출력. %6.2f 는 전체 6자리 소수점이하 2자리 표시


for 확장

반복할 횟수를 미리 정하지 않고 요소의 개수만큼 반복하기.

int[] a = (1,2,3,4};

for(int b : a)    // 4번 반복됨


메소드의 가변인수

인수의 배열을 받기때문에 미리 인수의 개수를 맞춰 메소드를 호출하지 않아도 된다.

int add(int...a) {     // int 리턴값의 형, add 메소드명, int 인수형 a 인수배열명

}

int sum = add(1,2,3,4,5);    // 인수를 배열로 호출함


오버라이딩 확장

버전6.0에서 리턴값과 타입이 다른 메소드도 오버라이딩을 할 수 있다. 단, 리턴값의 타입은 상속한 메소드의 서브클래스여야 한다.


Scanner 클래스

키보드입력일 경우

Scanner sc = new Scanner(System.in);

문자열 입력일 경우

String text = "ABCDEF";

Scanner sc = new Scanner(text);


Static 임포트

static 필드와 메소드만 임포트할 수 있다.

특정 static 멤버만 임포트할 경우

import static Class1.S1;    // Class1 의 모든 멤버를 임포트할 경우 Class.*

class C {

x = S1;    // 임포트한 멤버는 클래스명 생략가능    

y = Class1.S2;    // 임포트하지 않은 멤버는 클래스명 기술해야함

}


Auto-Boxing

6.0 이상에서는 기본 데이터형과 랩퍼 클래스가 자동 변환되어 캐스트할 필요가 없다.


제네릭(Generics)

타입을 파라미터로 하여 추상적으로 표현한다. 이것을 활용하면 번거로운 타입 캐스팅과정이 필요없다. 오브젝트를 생성하기 전까지는 타입을 추상적으로 표현하고, 오브젝트 생성시에 구체적인 타입을 지정한다.

class A <T> {    //  타입 파라미터 선언

private T t ;    // 필드의 타입으로 사용    

public method1(T x) { }    // 인수의 타입으로 사용    

public T method2() { }    // 리턴값의 타입으로 사용

}

A<String> a = new A<String> ();    // 인스턴스 생성시 타입을 String 으로 지


열거형(enum)

사용자가 독자적인 상수를 정의하여 상수를 기술할 수 있음. 코드의 가독성이 향상됨.

public enum Korail { Mugunghwa, Saemaul, KTX }    //  열거형 선언    

Korail ko = Korial.Mugunghwa ;     // 열거형 변수 선언 및 상수 대입


이 내용은 ANK Co.,Ltd. 저 김성훈 역의 Java가 보이는 그림책에서 요약 발췌하였습니다.

+ Recent posts