목록분류 전체보기 (323)
삶 가운데 남긴 기록 AACII.TISTORY.COM
바이트 배열을 문자열로 변환 문자열은 본래 바이트(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..
객체지향 언어 객체지향 언어는 캡슐화, 상속, 다형성이 특징입니다. 클래스(class) 클래스는 기본 데이터 타입들(int , char, ...)로 된 변수(필드)들과 그들을 다루기 위한 동작(method)들을 정의한 객체(object)로 인스턴스(instance: 메모리에 구현된 객체)를 생성하기 위한 설계도입니다. 클래스 내부에 정의된 변수(필드)와 메서드들을 그 객체의 멤버(member)라고 부릅니다. 클래스 이름은 대문자로 시작하도록 이름을 정하는 것이 관례입니다. 캡슐화 데이터(필드)를 외부로부터 숨겨서(은닉화) 접근을 허용하지 않는 대신 제어 가능한 일부 필드와 메서드를 제공합니다. 자바에서는 접근 제한자를 이용하여 구현합니다. 접근 제한자 public : 모든 접근 허용 protected :..
if~else class Sample { public static void main(String[] args){ int num = (int)(Math.random()*6) +1;//주사위 번호 뽑기 if(num == 1) { System.out.println("1번이 나왔습니다."); }else if(num == 2){ System.out.println("2번이 나왔습니다."); }else { System.out.println("3번이상이 나왔습니다."); } } } switch class Sample { public static void main(String[] args){ int num = (int)(Math.random()*6) +1;//주사위 번호 뽑기 switch(num) { case 1: Sy..
단항 연산자 1. 부호 연산자: +, - int i = -100; 2. 증감 연산자: ++, -- int x = 1; int y = 1; int result1 = ++x + 10;//먼저 x를 1증가 후 연산 int result2 = y++ + 10;//연산 후 y를 1 증가 3. 논리(boolean) 부정 연산자: ! boolean isComplete = false; System.out.println(isComplete); System.out.println(!isComplete); 4. 비트 반전 연산자: ~ 비트 반전 연산자는 정수 타입에만 사용됩니다. 비트 반전을 하고 나면 데이터 타입이 int 타입이 됩니다. 최상위 비트는 부호비트이므로, 비트 반전시 최상위 비트 포함해서 반전이 되므로 부호가 반..
변수(variable) 변수는 값을 저장하는 메모리 공간을 가리키는 메모리 주소를 참조하는 이름을 붙인 것입니다. 변수의 선언 변수는 사용하기 전에 선언을 해야 합니다. 왜냐하면 저장되는 값의 데이터 타입(data type)에 따라서 메모리 공간의 크기가 달라지기 때문입니다. 그 데이터 타입의 크기만큼 공간을 미리 확보해서 다른 프로그램이 값을 변경시키지 못하도록 해야 하기 때문입니다. int age; 여기서 int가 데이터 타입(정수형)이고 age가 변수입니다. 변수 작성 관례 1. 알파벳 소문자로 시작합니다. 2. 단어를 합성할 때 첫 글자를 대문자로 합니다. (낙타등 표기법) 3. 자바에서 사용하는 예약어는 금지입니다. char charData; 변수 할당 연산자 = = 은 수학에서는 같다의 뜻이지..
JDK 구버전 다운로드 최신 버전은 연구용이나 학습용으로 주로 사용됩니다. 프로젝트에서는 보통 최신 버전을 사용하지 않고 안정화되고 대중화된 버전을 사용합니다. 그래서 jdk 구버전이 필요할 때가 있습니다. 아래는 오라클에서 제공하는 모든 구버전 다운로드에 관한 링크입니다. https://www.oracle.com/technetwork/java 단, 오라클 계정이 필요합니다. JDK JDK는 java virtual machine 실행환경과 개발환경 모두 포함되어 있습니다. jdk설치 경로에는 bin 디렉토리가 있는데, 거기에 javac 가 .java 소스코드를 .class로 컴파일 해주는 컴파일러이고, java가 class를 실행해주는 실행 파일입니다. (윈도우: 제어판>시스템 및 보안>시스템>고급 시스..
Q. 언어를 배우는 방법? 언어(외국어)를 배울 때, 처음엔 듣고 따라하거나 무작정 외우거나 해서 그 언어에 익숙해지는 방법을 사용합니다. 물론 나중에 일정한 수준에 이르면 문법 지식이나 고도화된 활용법을 연구해야 하는 시기가 오지만, 시작하는 단계에서는 아직 그럴 때가 아닙니다. 이 방법은 프로그래밍 언어를 배울 때도 마찬가지 입니다. 먼저 좋은 샘플 코드를 보고 따라쳐보고 무작정 외워서 그 언어에 빨리 익숙해지는 것이 먼저입니다. 배우는 속도에는 차이가 있을 수 있으나 노력만 하면 누구나 할 수 있는 것이 언어입니다. Q. 저는 강의를 듣고 책을 읽어도 코딩을 좀처럼 할 수 없습니다. 모든 언어는 반복 트레이닝(연습)을 기본으로 해야하는 것입니다. 눈으로 읽거나 듣는 연습만을 해서는 말하거나 쓰기가 ..
자바스크립트에서 메인 스레드 외에 Web Wokers에서 병렬로 처리되는 스레드를 워커(woker)라고 합니다. 워커와 메인 스레드는 서로 다른 전역 객체를 가지기 때문에 상대방의 전역 객체를 참조할 수 없습니다. 그래서 워커와 메인 스레드 사이에는 postMessage를 사용한 비동기 통신만 가능합니다. Worker 객체 생성 var worker = new Worker("worker.js"); 메인스레드와 같은 디렉터리에 있는 worker.js 가 워커를 정의한 자바스크립트 파일입니다. Worker생성자의 인수로 URL(같은 사이트)을 넘길 수 있습니다. 워커에 메시지 전송 worker.postMessage("message"); worker 인스턴스가 생성되면 postMessage로 메시지를 보낼 수 ..