일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 예외처리
- 문자열
- c++게임엔진
- C/C++
- cocos2d
- unity
- db
- 데이터타입
- c++
- 반복문
- cocos2d-x
- oracle
- Class함수
- java
- 게임엔진
- Thread
- 예외던지기
- 데이터베이스
- singleton
- interface상속
- 프로그래밍
- cocos2dx
- Interface
- 입출력
- 동기화블럭
- 스레드
- 상수변수
- Stack
- Exception
- c#
- Today
- Total
목록java (56)
초보 프로그램 개발자
Daemon Thread 다른 스레드에 도움을 주는 스레드로 데몬스레드가 종료되지 않아도 프로세스가 종료된다. //Daemon Thread : 다른 스레드에 도움을 주는 스레드로 // 데몬스레드가 종료되지 않아도 프로세스(프로그램)가 종료된다. class MyThread5 implements Runnable{ @Override public void run() { for(int i=1; i
동기화 블럭 ( synchronized) synchronized 는 멀티 스레드 사용시 공유하는 데이터에 동시에 진입하는 현상을 방지하기 위해 사용된다. // 동기화 문제 발생 class MyThread8 implements Runnable { private int bank = 10000; private int getBank() { // 잔액 확인 return bank; } private int drawMoney(int m) { // 인출 금액 bank -= m; return m; } @Override public void run() { int money_need = 6000; // 인출 할 금액 int money; String msg = ""; try { if (getBank() >= money_nee..
단일 스레드 단일스레드(main) 만을 이용하여 프로그램 작성 main메소드가 종료되면 프로그램도 종료된다. 명령이 하나의 흐름으로만 구성, 동시에 명령을 실행할 수 없다. 다중 스레드 실시간으로 데이터를 보여주는 프로그램 만들 때 사용 게임, 채팅, 주식프로그램 등등 모든 스레드가 종료되어야지만 프로그램도 종료된다. 다중스레드 작성 방법 1 Thread 클래스를 상속 받는 자식클래스를 작성한다. Thread 클래스에 선언된 run() 메소드를 오버라이딩 한다. main() 메소드와 동시에 실행 될 수 있는 명령을 작성 main스레드와 별개로 실행되는 스레드 작성 자식클래스를 이용하여 객체 생성 -> 스레드 생성 객체를 이용하여 start()메소드 호출 -> 메소드가 호출되면서 스레드가 실행 run() ..
스레드 자바에서 스레드를 사용하는 방법으로는 2가지가 있다. Thread class를 상속받아 사용하는 방법 Runnable Interface를 상속받아 사용하는 방법 두 방법 모두 run()을 오버라이드 해주어야 하지만, Runnable은 Interface로 Thread를 상속받을수 없을 때 사용할 수 있다. Thread 스레드는 Main절이 끝나도 메모리공간을 할당받아 실행중일 수 있다. // Thread를 상속받아 구현하는 방법 class MyThread1 extends Thread { private int num; private String name; public MyThread1(int num, String name) { this.num = num; this.name = name; } // Th..
예외처리 try / catch / finally 는 예외를 처리하기 위한 문법이다. try { // 실행할 코드 } catch (Exception e) { // 에러 발생시 해결방안 } finally { // 무조건 실행되어야 하는 부분 } try 문에는 실행할 코드를 작성하고, catch문에서는 try문에서 에러가 발생했을 경우 처리하는 곳 finally 문에서는 에러가 발생하던 안하던 실행되어야할 코드를 작성할 수 있다. public static void main(String[] args) { String str = "Hello"; try { System.out.printf("%d", str); // String은 %s지만 오류발생유도하기 위해 %d로 작성 } catch (Exception e) { ..
Set Set s = new HashSet(); Set은 중복값을 허용하지 않는다. 사용방법은 다른 Collections들과 같다. Set s = new HashSet(); s.add("서울"); s.add("부산"); s.add("대구"); System.out.println(s); // 서울 부산 대구 출력 // iterator 사용법 또한 같다. Iterator it = s.iterator(); while(it.hasNext()) { String str = it.next(); System.out.print(str + " "); // 서울 부산 대구 출력 } // 중복을 허용하지 않아 출력시 서울 부산 대구 만 출력된다. s.add("서울"); System.out.println(s); Stack Sta..
Map Collections 중 하나인 Map 또한 인터페이스이다. Map을 상속받아 구현한 클래스 두가지를 배운다. Hashtable - 동기화를 지원하지만 느림 HashMap - 동기화를 지원하지 않지만 빠름 List와 사용방법은 비슷하지만, Map에는 key값과 value값이 존재하는데, 간단하게 key를 알아야 value를 가져올 수 있다. 사용 방법 Hashtable hMap = new Hashtable(); 데이터 삽입 하는 방법으로 add 대신 put을 사용하고, 값이 들어있는지 비교할 땐 List는 contains를 사용했지만 Map은 key와 value 두가지 값을 가지고 있기 때문에 containsKey, containsValue로 확인할 수 있다. public static String..
Comparator comparator는 Java.util에 있는 인터페이스이며 익명의클래스 이고, Collections을 정렬할 때 사용한다. Comparator 안의 compare 함수를 오버라이드 해주어야 사용할 수 있다. int형 타입으로 두개의 객체를 받아 비교한뒤 -1, 0, 1 (음수, 0, 양수)를 반환해준다. Comparator comp = new Comparator() { @Override public int compare(ScoreVO vo1, ScoreVO vo2) { // 익명의 클래스로 강제적으로 재정의 해주어야 사용할 수 있다. return; } }; 사용방법 예시) Comparator comp = new Comparator() { @Override public int comp..
Collection Framework (방법론) Collection에는 많은 하위 클래스가 있지만 그중에서 오늘 배운것은 Vector 이다. Collection에 있는 많은 것들 중 우리가 사용할것은 4가지로 뽑아 주셨다. List 를 구현한 ArrayList : Vector보다 빠르지만 동기화를 지원하지 않는다. List 를 구현한 Vector : List보다 느리지만 동기화를 지원한다. Map을 구현한 HashMap : 동기화를 지원하지 않고 빠르다. Map을 구현한 Hashtable : 동기화를 지원하고 느리다. Collection은 배열의 확장판으로 길이에 상관없이 데이터를 넣고 빼고 할수 있다. Vector public class Test5 { public static void main(Stri..
내부클래스 내부 클래스는 클래스 안에 또 클래스를 만드는것을 말한다. 내부클래스를 만드는 방법은 4가지가 있다고 배웠는데, 1~3번째 방법은 많이 사용하지 않고 4번째 방법은 사용한다고 얘기해 주셨다. 첫번째 방법 (Inner) class Outer1 { static int a = 10; int b = 20; // Outer1이 객체생성이 안되면 Inner1도 생성이 안된다. // Outer1이 생성 됐다고 해서 Inner1이 생성이 되는것은 아니다. public class Inner1 { int c = 30; public void write() { System.out.println(a); System.out.println(b); System.out.println(c); } } public void pr..