목록DEV&OPS/Java (148)
삶 가운데 남긴 기록 AACII.TISTORY.COM
자바 어플리케이션은 main()스레드 외에 병렬로 처리하는 스레드를 같이 실행할 수 있습니다. 보통은 멀티 스레드로 병렬로 작업하는 것이 효율적이지만, 너무 많은 스레드를 실행하면 각 스레드간 context switching 에 시간을 더 소비하게 되어 오히려 효율이 떨어지게 됩니다. java.lang.Thread 클래스로부터 extends 하거나 Runnable 인터페이스로부터 implements 해서 스레드를 생성할 수 있습니다. Runnable 구현 방법 import java.awt.Toolkit; public class BeepTask implements Runnable { @Override public void run() { Toolkit toolkit = Toolkit.getDefaultToo..
DecimalFormat 숫자 데이터를 원하는 형식으로 표현하기 위한 클래스 입니다. import java.text.DecimalFormat; public class DeciamlFormatEx { public static void main(String[] args) { double num = 1234567.89; DecimalFormat df = new DecimalFormat("0");//10진수, 빈자리는 0으로 채움 System.out.println(df.format(num)); df = new DecimalFormat("0.0");//소수점 표현 System.out.println(df.format(num)); df = new DecimalFormat("0000000000.00000"); Syst..
Date 클래스 현재 날짜 출력을 위한 클래스입니다. 날짜를 표기하는 포멧을 지정하려면 SimpleDateFormat 클래스를 이용합니다. import java.text.SimpleDateFormat; import java.util.Date; public class DateEx { public static void main(String[] args) { Date now = new Date(); String strNow1 = now.toString(); System.out.println(strNow1); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); String strNow2 = sdf.format(now); System.out.p..
Math 클래스 수학 계산용 메서드들을 제공합니다. 대부분 static 이므로 인스턴스 생성 없이 바로 사용가능 합니다. public class MathEx { public static void main(String[] args) { int v1 = Math.abs(-5);//절대값 double v2 = Math.ceil(5.3);//올림 double v3 = Math.floor(-5.3); //내림 int v4 = Math.max(5, 9);//최대값 double v5 = Math.min(5.1, 2.3);//최소값 double v6 = Math.random();//0 이상 1 미만 랜덤 숫자 long v7 = Math.round(5.6);//반올림 System.out.println(v1); Syste..
자바는 기본 데이터 타입을 값으로 갖는 객체를 생성할 수 있습니다. 이러한 객체를 wrapper class 라고 합니다. byte : Byte char : Character short : Short int : Integer long : Long float : Float double : Double boolean : Boolean Boxing/Unboxing boxing: 기본 데이터 타입을 래퍼 클래스로 변환 unboxing: 래퍼클래스를 기본 데이터 타입으로 변환 public class BoxingUnBoxing { public static void main(String[] args) { //boxing Integer obj1 = new Integer(100); Integer obj2 = new Int..
Arrays 클래스에는 배열 관련된 기능들을 제공합니다. 모든 메서드는 static이기 때문에 클래스 이름으로 바로 메서드를 사용할 수 있습니다. binarySearch(배열, 찾는값) : 배열 항목중 찾는 값이 있으면 인덱스 값을 리턴 copyOf(원본배열, 복사할길이) : 배열을 복사할 길이만큼 복사해서 배열로 리턴 copyOfRange(원본배열,시작인덱스,끝인덱스) : 배열을 시작인덱스부터 끝인덱스까지 복사해서 배열로 리턴 deepEquals(배열, 배열) : 두 배열의 중첩된 배열 항목까지 비교해서 boolean 리턴 equals(배열, 배열) : 두 배열을 비교 fill(배열, 값) : 배열의 항목에 동일한 값을 저장 fill(배열, 시작인덱스,끝인덱스,값) : 배열의 항목에 시작인덱스부터 끝인..
정규 표현식 [abc] : a,b,c 중 하나의 문자 [^abc] : a,b,c 이외의 하나의 문자 [a-zA-Z] : 알파벳 중 하나의 문자 \d : 한개의 숫자 \s : 공백 \w : 한개의 알파벳 또는 한개의 숫자 ? : 없음 또는 한 개 * : 없음 또는 한 개 이상 + : 한 개 이상 {n} : n개 {n,} : 최소한 n개 {n, m} : n개에서 m개까지 이메일 정규식 \w+@\w+\.\w+(\.\w+)? 예제 import java.util.regex.Pattern; public class PatternEx { public static void main(String[] args) { String regExp = "(010)-\\d{3,4}-\\d{4}"; String data = "010-1..
바이트 배열을 문자열로 변환 문자열은 본래 바이트(byte/char)의 배열로 되어있습니다. 자바에서는 이를 클래스나 기본 데이터 타입처럼 String 을 다룰 수 있습니다. public class ByteToString { public static void main(String[] args) { byte[] bytes = {72, 101, 108, 108, 111, 32, 74, 97, 118, 97 }; //Hello Java String str1 = new String(bytes); System.out.println(str1); String str2 = new String(bytes, 6, 4);//6번째 인덱스부터 길이가 4만큼 System.out.println(str2); } } 실행 결과 He..
자바 프로그램은 운영체제가 아니라 JVM에서 실행됩니다. 그래서 System 클래스를 통해 운영체제의 일부 기능을 제공하고 있습니다. exit() 프로세스를 강제 종료한는 메소드 입니다. public class ExitEx { public static void main(String[] args) { for(int i = 0; i
Objects Object 클래스와 이름이 유사한 Objects 클래스는 static으로 객체를 다루기 위한 여러가지 메서드들을 지원합니다. 객체 비교 compare() import java.util.Comparator; import java.util.Objects; public class CompareExample { public static void main(String[] args) { Student s1 = new Student(1); Student s2 = new Student(1); Student s3 = new Student(2); int result = Objects.compare(s1, s2, new StudentComparator()); System.out.println(result);..
자바 API documents http://docs.oracle.com/javase/8/docs/api/ Java Platform SE 8 docs.oracle.com Object class 클래스는 extends를 생략하면 암시적으로 Object 클래스를 상속받습니다. Object는 자바의 최상위 부모 클래스입니다. equals() 객체가 동등한 지 비교합니다. public class Member { public String id; public Member(String id) { this.id = id; } @Override public boolean equals(Object obj) { //인수가 Member Type인지 확인 if(obj instanceof Member) { //Member type..
하드웨어 오동작이나 고장으로 인해 프로그램이 오류가 나는것을 에러라고 부르고 예외는 사용자의 잘못된 조작이나 개발자의 잘못된 코딩으로 인해 오류가 나는 것을 말합니다. try catch finally public class TryCatchFinally { public static void main(String[] args) { try { String data1 = null; String data2 = null; data1 = args[0]; data2 = args[1]; int value1 = Integer.parseInt(data1); int value2 = Integer.parseInt(data2); int result = value1 + value2; System.out.println(result)..
익명 객체 익명 객체는 이름이 없는 객체를 말합니다. 단독으로 생성할 수 없고 클래스를 상속하거나 인터페이스를 구현해야 생성할 수 있습니다. 보통 UI이벤트 처리 객체나 스레드 객체를 간편하게 생성할 목적으로 활용합니다. public class Person { void wake() { System.out.println("일어납니다."); } } public class Anonymous { Person field = new Person() { void work() { System.out.println("출근합니다."); } void wake() { System.out.println("6시에 일어납니다."); work(); } }; void method1() { Person localVar = new Per..
중첩(Nested) 클래스, 인터페이스 중첩 클래스는 클래스 내부에 선언한 클래스를 말합니다. 마찬가지로 클래스 내부에 선언하는 인터페이스는 중첩 인터페이스입니다. 각 클래스간 긴밀한 관계에 있을 때, 혹은 UI 프로그램을 만들 때 이벤트를 처리할 목적으로 많이 활용됩니다. public class View{ public interface OnClickListener{ public void onClick(View v); } } 인스턴스 멤버 클래스 class A{ class B{ ... } } 외부에서 B클래스의 인스턴스 객체를 만들려면 A클래스의 인스턴스 객체를 먼저 생성하고 B클래스의 인스턴스를 생성해야 합니다. A a = new A(); A.B b = a.new B(); 만약 중첩 클래스를 stati..
추상 클래스(abstract class) 클래스 이름 앞에 abstract 키워드를 붙은 클래스를 추상 클래스라고 합니다. 추상 클래스는 인스턴스를 생성할 수 없고 상속 후에 오버라이딩을 할 목적으로 생성합니다. 추상화된 클래스를 부모 클래스로 사용함으로써 자손 클래스들의 공통된 필드나 메서드의 이름을 통일시켜서 설계 목적으로 사용합니다. Abstract.java public abstract class Abstract { public String owner; public Abstract(String owner) { this.owner = owner; } public void turnOn() { System.out.println("전원 켬"); } public void turnOff() { System.o..