'Programming/Java'에 해당되는 글 62건

  1. 2014.03.21 Java Input/OutputStream 관련
  2. 2014.03.20 java 8을 윈XP에 설치하자? 2
  3. 2014.03.20 java 8 released!!
  4. 2014.03.20 java assert
  5. 2014.03.19 java thread
  6. 2014.03.19 java 날짜 관련 패키지
  7. 2014.03.18 java collection
  8. 2014.03.18 java generic
  9. 2014.03.17 java static import
  10. 2014.03.17 java inner class / anonymous class
Programming/Java2014. 3. 21. 23:56
Buffered- 의 경우에는
버퍼되지 않는 스트림을 감싸서 사용한다.

 BufferedInputStream(new FileInputStream()) 

[링크 : http://docs.oracle.com/javase/7/docs/api/java/io/FileInputStream.html]
[링크 : http://docs.oracle.com/javase/7/docs/api/java/io/FileOutputStream.html]
[링크 : http://docs.oracle.com/javase/8/docs/api/java/io/BufferedInputStream.html]
[링크 : http://docs.oracle.com/javase/8/docs/api/java/io/BufferedOutputStream.html]


또한, Reader/Writer는 2byte unicode를 기본 지원하나
다른 스트림은 기본적으로 1byte ascii 이기 때문에 한글 입출력에 문제가 발생할 수 있다.

[링크 : http://docs.oracle.com/javase/tutorial/essential/io/buffers.html]
  [링크 : http://docs.oracle.com/javase/8/docs/api/java/io/BufferedReader.html]
  [링크 : http://docs.oracle.com/javase/8/docs/api/java/io/BufferedWriter.html

  [링크 : http://docs.oracle.com/javase/8/docs/api/java/io/InputStreamReader.html]
  [링크 : http://docs.oracle.com/javase/8/docs/api/java/io/OutputStreamWriter.html]

---
2014.03.24 추가

바이트 스트림(1byte) 는 InputStramOutputStream이 최상위 객체이며
[링크 : http://docs.oracle.com/javase/tutorial/essential/io/bytestreams.html
    [링크 : http://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html]
    [링크 : http://docs.oracle.com/javase/8/docs/api/java/io/OutputStream.html]

캐릭터 스트림(2byte / unicode)는 ReaderWrtier가 최상위 객체이다.
[링크 : http://docs.oracle.com/javase/tutorial/essential/io/charstreams.html]
    [링크 : http://docs.oracle.com/javase/8/docs/api/java/io/Reader.html]
    [링크 : http://docs.oracle.com/javase/8/docs/api/java/io/Writer.html

'Programming > Java' 카테고리의 다른 글

java TCP/UCP socket  (0) 2014.03.25
java object serializable / ObjectInputStream + ObjectOutputStream  (0) 2014.03.24
java 8을 윈XP에 설치하자?  (2) 2014.03.20
java 8 released!!  (0) 2014.03.20
java assert  (0) 2014.03.20
Posted by 구차니
Programming/Java2014. 3. 20. 17:14
한줄요약 : 7zip으로 압축풀고 수동설치 하면 됨(인스톨러 문제)



이제 윈 xp도 공식수명이 한달이 채 남지 않았는데
있는 노트북이 xp라 ㅠㅠ 사형선고 하기 싫어서 깔아보려는데
RegDeleteKeyExA() 라는 프로시저를 advapi32.dll 에서 찾을 수 없다고 에러가 발생한다.



그래서 스택느님의 검색결과에 따라
7zip을 설치하고 exe 파일에 대해 arhive open을 하니 ㄷㄷㄷ


tools.zip이 또 있으니 그거 풀어서 알아서 설치? ㅋㅋ


[링크 : http://stackoverflow.com/questions/20965564/installing-jdk8-on-windows-xp-advapi32-dll-error
[링크 : http://msdn.microsoft.com/en-us/library/ms724847%28VS.85%29.aspx]

'Programming > Java' 카테고리의 다른 글

java object serializable / ObjectInputStream + ObjectOutputStream  (0) 2014.03.24
Java Input/OutputStream 관련  (0) 2014.03.21
java 8 released!!  (0) 2014.03.20
java assert  (0) 2014.03.20
java thread  (0) 2014.03.19
Posted by 구차니
Programming/Java2014. 3. 20. 16:28
여전히 감이 안오는 람다이긴 하지만.
JDK1.8 부터 지원을 한다는데..

1.5 처럼의 대격변은 아니라서 다행인지도?

Java Programming Language

Lambda Expressions, a new language feature, has been introduced in this release. They enable you to treat functionality as a method argument, or code as data. Lambda expressions let you express instances of single-method interfaces (referred to as functional interfaces) more compactly.

Method references provide easy-to-read lambda expressions for methods that already have a name.

Default methods enable new functionality to be added to the interfaces of libraries and ensure binary compatibility with code written for older versions of those interfaces.

Repeating Annotations provide the ability to apply the same annotation type more than once to the same declaration or type use.

Type Annotations provide the ability to apply an annotation anywhere a type is used, not just on a declaration. Used with a pluggable type system, this feature enables improved type checking of your code.

Improved type inference.

Method parameter reflection.

Collections

Classes in the new java.util.stream package provide a Stream API to support functional-style operations on streams of elements. The Stream API is integrated into the Collections API, which enables bulk operations on collections, such as sequential or parallel map-reduce transformations.

Performance Improvement for HashMaps with Key Collisions


[링크 : http://www.oracle.com/technetwork/java/javase/8-whats-new-2157071.html] 

'Programming > Java' 카테고리의 다른 글

Java Input/OutputStream 관련  (0) 2014.03.21
java 8을 윈XP에 설치하자?  (2) 2014.03.20
java assert  (0) 2014.03.20
java thread  (0) 2014.03.19
java 날짜 관련 패키지  (0) 2014.03.19
Posted by 구차니
Programming/Java2014. 3. 20. 13:40
c에서의 assert 문 처럼
특정 조건에 대해서 참/거짓 시에 강제로 종료하는 역활을 한다.

[링크 : http://docs.oracle.com/javase/7/docs/technotes/guides/language/assert.html]

assert는 디버깅 용도이기 때문에
assertion mode가 꺼져있어
-ea 옵션(Enable Assertion)을 통해 디버깅 모드로 작동하도록 설정해야 한다.


[링크 : http://javacan.tistory.com/70]
[링크 : http://stackoverflow.com/questions/5509082/eclipse-enable-assertions]

'Programming > Java' 카테고리의 다른 글

java 8을 윈XP에 설치하자?  (2) 2014.03.20
java 8 released!!  (0) 2014.03.20
java thread  (0) 2014.03.19
java 날짜 관련 패키지  (0) 2014.03.19
java collection  (0) 2014.03.18
Posted by 구차니
Programming/Java2014. 3. 19. 21:09
Thread는 Runnable interface를 구현한 클래스이다.
Runnable에는 run() 메소드 하나가 있으며
thread에서 오버라이딩한 run() 을 통해 쓰레드를 실행하게 된다.

 public class Thread extends Object implements Runnable 

[링크 : http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.html]
[링크 : http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html]
 
Thread에는 쓰레드 제어관련 명령어들이 있으나
thread-safe 하지 않아서 인지 deprecated method가 많이 있다.
(이것들이 모두 deprecated되면 쓰레드는 실행하고 양보하는 것 외에는 제어가능한 게 없다?)

run() - 태스크에서 실행할 내용 구현
join() - 호출한 태스크만 실행함(해당 태스크 종료시 까지 싱글 태스크로 전환, 나머지는 sleep)
sleep() - 지정한 시간 만큼 태스크를 실행하지 않음
start() - 멀티태스크를 시작함
yield() - ?

'Programming > Java' 카테고리의 다른 글

java 8 released!!  (0) 2014.03.20
java assert  (0) 2014.03.20
java 날짜 관련 패키지  (0) 2014.03.19
java collection  (0) 2014.03.18
java generic  (0) 2014.03.18
Posted by 구차니
Programming/Java2014. 3. 19. 20:21
Date는 1.0부터
Calendar는 1.1부터 JDK에 추가되었으나
하위호환성으로 인해 Date를 주로 사용한다.

import java.util.Calendar; // 1.1 이후
import java.util.Date; // 1.0  + 호환성으로 인해 주로 사용

[링크 : http://docs.oracle.com/javase/7/docs/api/java/util/Date.html]
[링크 : http://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html]

'Programming > Java' 카테고리의 다른 글

java assert  (0) 2014.03.20
java thread  (0) 2014.03.19
java collection  (0) 2014.03.18
java generic  (0) 2014.03.18
java static import  (0) 2014.03.17
Posted by 구차니
Programming/Java2014. 3. 18. 18:17
collection은 cpp로 치면.. STL?
제너릭스(generics)를 이용해서 만든 자료구조이다.

Set  / List / Queue / Map이 주로 사용되며,
4개는 interface로 implement 되어 각각에 대해 패키지를 제공하게 된다.
Set - HashSet / TreeSet
List - Stack / Vector / ArrayList
Queue - LinkedList
Map - HasMap

[링크 : http://docs.oracle.com/javase/7/docs/api/java/util/Set.html]
    [링크 : http://docs.oracle.com/javase/7/docs/api/java/util/HashSet.html]
[링크 : http://docs.oracle.com/javase/7/docs/api/java/util/List.html]
    [링크 : http://docs.oracle.com/javase/7/docs/api/java/util/Stack.html]
    [링크 : http://docs.oracle.com/javase/7/docs/api/java/util/Vector.html]
    [링크 : http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html]
[링크 : http://docs.oracle.com/javase/7/docs/api/java/util/Queue.html]
    [링크 : http://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.html]
[링크 : http://docs.oracle.com/javase/7/docs/api/java/util/Map.html]
    [링크 : http://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html]

[링크 : http://docs.oracle.com/javase/tutorial/collections/interfaces/index.html]
[링크 : http://docs.oracle.com/javase/tutorial/collections/implementations/index.html]


>>>>
set(interface)
-> HashSet / TreeSet(implements)
set - 정렬되지 않음 / 중복 허용하지 않음 (대소문자 구별함)

>>>>
 List(가장 많이 씀 / array와 유사함)
- Stack / Vector / ArrayList (stack은 별로 사용하지 않음)

Stack - push / pop

Vector
 new Vector<String>(2,5) // 초기 2개, 확장 시 5개씩 확장
contains() remove() cacacity() size()
trimToSize() // 메모리 공간 줄이기

>>>>
Queue
- LinkedList 
offer() // push() 개념
poll() // pop() + 삭제

collection - interface
collections - class

>>>>>>
Map
-  HashMap
put()// 저장
get() // 꺼내기

ArrayList / HashMap을 많이 씀

Iterator(반복자)
- hasNext() remove()

---
2014.03.21 추가
결국에 Collection 하위는 Collection과 Iterable의 상속관계이며
toArray를 통하거나 Iterator를 통해서 상호 변환이 가능하다.

public interface Collection<E> extends Iterable<E>
- Object[] toArray()
- <T> T[] toArray(T[] a)
Iterator<E> iterator()
=======================================================
public interface Iterator<E>
- boolean hasNext()
- E next()
- void remove()
=======================================================


public interface Set<E> extends Collection<E>
public interface List<E> extends Collection<E>
public interface Queue<E> extends Collection<E>
public interface Deque<E> extends Queue<E>
public interface Map<K,V>
=======================================================
>> public interface Set<E> extends Collection<E>
public abstract class AbstractSet<E> extends AbstractCollection<E> implements Set<E>
public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, Serializable
public class TreeSet<E> extends AbstractSet<E> implements NavigableSet<E>, Cloneable, Serializable
public class LinkedHashSet<E> extends HashSet<E> implements Set<E>, Cloneable, Serializable

>> public interface List<E> extends Collection<E>
public class Vector<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, Serializable
public class Stack<E> extends Vector<E>
public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, Serializable
public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, Serializable 


 

'Programming > Java' 카테고리의 다른 글

java thread  (0) 2014.03.19
java 날짜 관련 패키지  (0) 2014.03.19
java generic  (0) 2014.03.18
java static import  (0) 2014.03.17
java inner class / anonymous class  (0) 2014.03.17
Posted by 구차니
Programming/Java2014. 3. 18. 18:05
collection - c/cpp의 자료구조
generic은 jdk 1.5.0 부터 지원됨

해당 패키지를 사용하기 위해서는 java.util을 포함해야 함.
import java.util.*;  

제너릭스 (Generics)
API문서에 4개의 식별자가 존재한다. <T,E,K,V>
Type
Element
Key
Value

사용방법은 다음과 같으며, cpp의 template와 거의 유사하다.
class className <T>
{
    T[] v;
}

className<String> t = new className<String>(); 

[링크 : http://docs.oracle.com/javase/7/docs/api/java/util/package-summary.html]


자바는 타입을 강하게 확인하지만 유연성을 위해 몇가지 확장 키워드를 제공한다.

<?> // 클래스 타입 상관없음
<? super class> 해당 클래스의 상위 클래스까지 허용 (본인 클래스는 포함되지 않음)
<? extends class> 해당 클래스의 하위 클래스만 적용 (본인 클래스는 포함되지 않음) 


'Programming > Java' 카테고리의 다른 글

java 날짜 관련 패키지  (0) 2014.03.19
java collection  (0) 2014.03.18
java static import  (0) 2014.03.17
java inner class / anonymous class  (0) 2014.03.17
java private constructor  (0) 2014.03.14
Posted by 구차니
Programming/Java2014. 3. 17. 20:11
JDK 1.5.0부터 추가된 import static은
c++의 using namespace와 같은 역할을 한다.

아래의 문장이
double r = Math.cos(Math.PI * theta); 
 
이렇게 축약될 수 있다.
import static java.lang.Math.PI;
import static java.lang.Math.*;
double r = cos(PI * theta); 


타이핑이 줄어서 편할수도 있지만 
물론 이렇게 name space를 파괴하면서 다른 패키지와의 충돌이나
가독성(System.out.println이 워낙 익숙한데 out.println이라고 쳐놓으면.. )의 문제로
그리 많이 쓰이진 않는 듯 하다. 

[링크 : http://docs.oracle.com/javase/1.5.0/docs/guide/language/static-import.html]

'Programming > Java' 카테고리의 다른 글

java collection  (0) 2014.03.18
java generic  (0) 2014.03.18
java inner class / anonymous class  (0) 2014.03.17
java private constructor  (0) 2014.03.14
java abstract / interface & cpp virtual  (0) 2014.03.14
Posted by 구차니
Programming/Java2014. 3. 17. 19:49
inner class는
class 안에 class를 생성하여
클래스 안에서만 사용하도록 하는 일종의 임시 객체이다. 

inner class
  - staic inner class
method class
anonymous class

inner Class의 제약사항
변수 중에 static이 하나라도 있으면 static class가 되어야 함

method 안에서 선언할 경우 Local Class라 하며,
static 멤버 변수가 선언될 수 없으며 또한, static Local Class가 될 수 없다.

outer.this.var 식으로 inner 클래스의 외부 클래스 변수에 접속할 수 있다.

inner class에서 static 변수에는 (외부 클래스의) static 변수만이 할당가능하다.

public class InnerEx2 {

class InstanceInner {
}

static class StaticInner {
}

InstanceInner iv = new InstanceInner();
static StaticInner cv = new StaticInner();

static void staticMethod()
{
StaticInner obj2 = new StaticInner();

// InstanceInner obj1 = new InstanceInner();
InnerEx2 outer = new InnerEx2();
InstanceInner obj1 = outer.new InstanceInner();
}
} 
내부 클래스에서 다른 내부 클래스를 선언시
외부 클래스.new 내부 클래스(); 식으로 선언할 수 있다.

void myMethod()
{
int lv = 0;
final int LV = 0;

class LocalInner {
int liv = outerIv;
int liv2 = outerCv;
// int liv3 = lv; <<
int liv4 = LV;
}
}
method내의 Local Class에서는 메소드 내의 변수를 사용할 수 없다.
(메소드가 메모리에 올라가서 구획이 생성되기 전이기에)

Object iv = new Object() {void method() {}};
anonymous class 에서의 메소드 정의

public static void main(String[] args)
{
// TODO Auto-generated method stub
Button b = new Button("Start");
b.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.out.println("ActionEvent occurred!!!");
}
});
} 

instanceof
객체 instanceof class 식으로 사용하며, 상속관계에 있을 경우
해당 객체가 상위 객체를 포함하므로 instanceof에서 true가 되지만
상위 객체를 하위 객체로instanceof 할 경우 false가 된다.

'Programming > Java' 카테고리의 다른 글

java generic  (0) 2014.03.18
java static import  (0) 2014.03.17
java private constructor  (0) 2014.03.14
java abstract / interface & cpp virtual  (0) 2014.03.14
Java / cpp - 다형성(polymorphism) 차이점 (동적 바인딩?)  (0) 2014.03.13
Posted by 구차니