2013. 7. 25. 16:52
1
2
3
4
5
6
7
8
9
10
11
12
public static void main(String[] args) {
    String s = "대한민국";
 
    byte[] b = s.getBytes(); // 문자열을 바이트배열에 할당
 
    for (byte bb : b) {
        System.out.println(bb);
    }
 
    String ss = new String(b); // 바이트배열을 다시 문자열로..
    System.out.println(ss);
}


'java' 카테고리의 다른 글

Date, SimpleDateFormat  (0) 2013.07.25
Calendar, GregorianCalendar  (0) 2013.07.25
byte  (0) 2013.07.25
AWT 예제  (0) 2013.07.25
String  (0) 2013.07.25
Posted by 1+1은?
2013. 7. 25. 16:52

Class Byte

java.lang.Object

java.lang.Number

java.lang.Byte

 

 

Byte 타입 자료형을 지원하는 클래스

byte 타입은 일반적으로 입출력, 전송 시에 사용한다.

 

변수에 Byte 혹은 byte 타입을 선언할 경우 할당할 수 있는 범위는 -127 ~ 127이다. 


다음은 Byte클래스의 메서드는 아니지만 바이트배열과 문자열 사이의 형변환 예제다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
public static void main(String[] args) {
    String s = "대한민국";
 
    byte[] b = s.getBytes(); // 문자열을 바이트배열에 할당
 
    for (byte bb : b) {
        System.out.println(bb);
    }
 
    String ss = new String(b); // 바이트배열을 다시 문자열로..
    System.out.println(ss);
}


'java' 카테고리의 다른 글

Calendar, GregorianCalendar  (0) 2013.07.25
byte[] ↔ String  (0) 2013.07.25
AWT 예제  (0) 2013.07.25
String  (0) 2013.07.25
Nested, 중첩클래스  (0) 2013.07.25
Posted by 1+1은?
2013. 7. 25. 16:52
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class ChatCS extends Frame {
    private static final long serialVersionUID = 1L;
     
    public ChatCS() {
        addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent arg0) {
                System.exit(0); //windowClosing : x버튼으로 종료 시 실행됨
            }
        });
    }
     
    public static void main(String[] args) {
        new ChatCS();
    }
}?
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
32
33
34
35
36
37
38
39
40
41
42
public class ChatCS extends Frame implements ActionListener {
    private static final long serialVersionUID = 1L;
    private TextField tf;
    private TextArea ta;
     
    public ChatCS() {
        tf = new TextField();
        add(tf, BorderLayout.SOUTH);
        ta = new TextArea();
        add(ta, BorderLayout.CENTER);
        tf.addActionListener(this);
         
        addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }      
        });
         
        setTitle("UDP프로그램");
        setSize(500, 450);
        setVisible(true);
    }
     
    public static void main(String[] args) {
        new ChatCS();
    }
 
    @Override
    public void actionPerformed(ActionEvent e) {
        Component ob = (Component)e.getSource();
 
        if(ob instanceof TextField) {
            try {
                String s = tf.getText().trim();
                if(s.length() ==0)
                    return;
 
            } catch (Exception e2){}
        }
    }
}

 

'java' 카테고리의 다른 글

byte[] ↔ String  (0) 2013.07.25
byte  (0) 2013.07.25
String  (0) 2013.07.25
Nested, 중첩클래스  (0) 2013.07.25
FileStream, 파일스트림  (0) 2013.07.25
Posted by 1+1은?
2013. 7. 25. 16:51

Class String

java.lang.Object

java.lang.String

 

 

※ 문자열 연산이 필요한 경우 StringBuffer나 StringBuilder를 사용한다.

Link - String 클래스를 함부로 사용하면 안되는 이유

 

 

● String[] split(String regex[, int limit]) : regex 를 기준, 문자열을 분할하여 배열에 할당

 

 

1
2
3
String txt = "가, 나, 다, 라, 마, 바";
String strs[] = text.split(", ");
int arrayLength = "1/2/3/4/5".split(",").length();

 

 

● int length() : 문자열의 길이를 리턴. Returns the length of this string.

 

 

1
boolean result = (@.length() >= 4 && @.length() <= 12) ? true : false; // @=변수명

 

 

● char charAt(int index) : 지정한 인덱스의 문자를 리턴. Returns the char value at the specified index.

 

 

1
2
3
4
String s3 = "안녕하세요";
char c3 = s3.charAt(3);
System.out.println("s3의 3번째 문자 : "+c3); //3이 아닌 4번째 문자가 출력된다. → '세'
//자바는 zerobase로 0부터 인덱스가 시작됨

 

 

● int indexOf(int ch[, int fromIndex]) : 문자열에서 인자값을 찾은뒤 안자값의 위치를 반환

 

 

1
2
3
4
5
6
String s4 = "안녕하세요~ 홍길동님~";
int n4 = s4.indexOf("홍");
//여기서 "홍길동"으로 바꿔도 첫번째 문자를 기준으로 찾기 때문에 결과는 같다.
//indexOf는 무조건 문자열의 처음부터 검색을 시작해 가장 처음 만난 검색어의 위치를 반환 후 종료됨.
 
if(uri.indexOf("created_ok.kh") != -1){} //해당 문자열이 있을 때

 

 

● int lastIndexOf(int ch[, int fromIndex]) : 역방향검색

● int lastIndexOf(String word, int startIndex) : 검색할 문자열과 시작값 지정

indexOf 좌 -> 우로 검색

lastIndexOf 우 -> 좌로 검색

※ 주의

역방향으로 검색한다고 해서 index값이 바뀌진 않는다. 

즉, 우측에서 두번째에 있는 값을 찾았다고 해도 리턴값이 2가 되는것은 아니라는 말

 

● String toLowerCase() : 문자열을 모두 소문자로 반환

● String toUpperCase() : 문자열을 모두 대문자로 반환

 

1
2
println((wholeText.toLowerCase().indexOf(search.toLowerCase()) >= 0) ? "발견" : "없음"); 
//대소문자 구분 없이 검색하기

 

 

● boolean startsWith(String word) : 매개변수의 문자열로 시작하는지

● boolean endsWith(String word) : 매개변수의 문자열로 끝나는지를 논리값으로 반환한다.

 

1
boolean b2 = "안녕하세요".startsWith("안녕");  //true

 

 

● String substring(int beginIndex[, int endIndex]) : 지정한 위치의 문자열을 잘라낸다.

※ index의 위치에 주의할 것

 

1
System.out.println(("abcdefg".substring(0, 2))); //→ ab, 3번째 위치인 c까지가 아닌 b까지만 자름

 

 

● String replaceAll(String regex, String replacement) : 특정 문자열을 찾아 다른 문자열로 바꾼다.

 

 

1
2
bigo = bigo.replaceAll("\n", "<br/>"); //엔터 -> 태그
bigo = bigo.replaceAll(" ", " "); //공백 -> 태그

 

 

● String trim() : 문자열의 좌우 공백을 제거

 

1
2
System.out.printf("     하이\t*".trim()); //하이      *
// 탭(\t)은 공백이 아닌 문자에 속하기 때문에 공백으로 인식하지 않는다.

 

 

 

● boolean equalsIgnoreCase(String anotherString) : 대소문자 구분 없이 문자열 비교

 

1
2
String a = "ABC", b = "abc";
boolean result = a.equalsIgnoreCase(b); //true

 

 

● boolean startsWith(String prefix[, int toffset]) : 특정 문자열로 시작하는지를 검색한다. 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<%  
    Cookie[] cc = request.getCookies();
     
    if(cc != null)  {
        for(Cookie c : cc) {
            String name = c.getName();
            String value = URLDecoder.decode(c.getValue(), "utf-8");
 
            if(name.startsWith("name")) {
                out.print(value + "<br/>");
            }
        }
    }
%> //Cookie의 이름이 "name"으로 시작하면 모두 출력

 

 

● public static String format([Locale l,] String format, Object... args) 

 

※ 형식문자열을 지원하는 메서드. 다른 페이지에서 다시 다루기로 한다.

 

%04d 의 의미

 % -  명령의시작

 0 - 채워질 문자

 4 - 총 자리수

 d - 십진정수

 

%10d, %-10d : 고정출력폭, 여백, -의 경우 오른쪽여백

%.5f, %.1f : 지정한 길이를 초과한 소숫점의 값을 반올림

%6.1f : 6칸의 여백을 확보한 뒤 소숫점 1자리까지 출력

%,d : 1000자리마다 쉼표 출력 

%,2.1f : 응용

 

 

% [인자 번호] [플래그] [너비] [.정밀도] 유형

%d 십진정수, %f 부동소수점, %x 16진수, %c 문자

 

%tc 날짜와 시간 전부 표시

%tr 시간만 표시할때

%A %B %C 요일,월,일 표시

 

String s = String.format("%, d", 1000000000);

System.out.println(s);

String fo = String.format("I have %.2f bugs to fix.", 44444.444);

System.out.println(fo);

String fo1 = String.format("I have %,.2f bugs to fix ", 2231323.23132);

System.out.println(fo1);

String fo2 = String.format("%,6.1f", 1323131123.133123213);

System.out.println(fo2);

String fo3 = String.format("%tc", new Date() );

System.out.println(fo3);

String fo4 = String.format("%tr", new Date() );

System.out.println(fo4);

String fo5 = String.format("%tA %tB %tC", new Date(), new Date(), new Date() );

System.out.println(fo5); // 인자 하나로 

String fo6 = String.format("%tA %<tB %<tC", new Date() );

System.out.println(fo6);

 

------------------------------------------------------------------------

 

I have 44444.44 bugs to fix. //s

I have 2,231,323.23 bugs to fix //fo

1,323,131,123.1  //fo1

금 9월 05 10:55:14 KST 2008 //fo2

10:55:14 오전 //fo3

금요일 9월 20 //fo4

금요일 9월 20 // fo5

 

'java' 카테고리의 다른 글

byte  (0) 2013.07.25
AWT 예제  (0) 2013.07.25
Nested, 중첩클래스  (0) 2013.07.25
FileStream, 파일스트림  (0) 2013.07.25
콘솔입력  (0) 2013.07.25
Posted by 1+1은?
2013. 7. 25. 16:51

Nested, 중첩클래스

 : 클래스 선언안에 또 다른 클래스를 선언

 : 프로그램 구조를 간략화

 : 클래스를 클래스의 멤버처럼 취급

 : 제한적인 지역에서만 사용하려 할 때

  (같은 패키지의 A, B, C 클래스 중 A클래스에서만 필요한 클래스가 있다고 가정할 때)

 

■ static nested class

 : 외부와 내부의 멤버가 private일 경우에도 서로간 모두 접근 가능하다.

 : 중첩 클래스는 경로만 지정해주면 단독으로도 직접 사용가능하다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Outer {
    private static int outerMember;
     
    public static class Nested {
        private static int innerMember;
         
        public static void nestedM() {
            System.out.println(outerMember + innerMember);
        }
    }
     
    public static void outerMethod() {
        System.out.println(outerMember + Nested.innerMember);
              //외부메서드에서도 내부클래스의 멤버에 접근할 수 있다.
           //같은 클래스로 간주하기 때문에 private은 무시된다.
    }
}

 


외부에서 접근하는 방법은 다음과 같다.

 

1
2
Outer.Nested.nestedM();
Outer.Nested.innerMember; //private이기 때문에 접근불가

 

 

 

 



■ nested class

 : static 중첩 클래스에서 static 속성을 뺀 클래스

 : 정적멤버를 선언할 수 없다.

  (static이 없는 중첩클래스를 의미하며 외부에서는 객체를 통한 접근방식을 쓴다)

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Outer {
    private static int a = 10;
    private int b = 20;
     
    public class Inner { //non-static
        private int c = 40;
        public void innerMethod() {
     ...
        }
    }
     
    public void outerMethod() {
        ...
    }
}

 

 

 

위와 같은 경우 Inner 클래스에서 Outer 클래스의 멤버변수 a와 b 에 접근하는 방법은 다음과 같다.

 

1
2
3
4
5
6
7
8
public void innerMethod() {
    System.out.println(Outer2.a); //스태틱 외부 멤버
 
    Outer out = new Outer();
    System.out.println(out.b); //인스턴스 외부 멤버
 
    System.out.println(this.c); //인스턴스 내부 멤버
}

 

 

이것은 외부클래스의 멤버에도 똑같이 적용된다.

 

1
2
3
4
5
6
7
8
public void outerMethod() {
    System.out.println(a); //스태틱 외부 멤버
    System.out.println(this.b); //인스턴스 외부 멤버
 
    Inner inner = new Inner();
    System.out.println(inner.c); //인스턴스 내부 멤버
    inner.innerM();
}

 

 

즉, 같은 클래스로 인식하지는 않지만 접근제어는 무시한다.

 



■ local class, 로컬클래스

 : 메서드 안에서 선언한 클래스

 : 선언한 메서드에서만 사용하기 위한 클래스

 

1
2
3
4
5
6
7
8
9
10
11
12
13
class Outer {
    public void outerM() {
        int localMember = 30;
 
        class Local {
            private int d = 40; //static 생성불가
             
            public void localM() {
                 
            }
        }
    }
}

 

 

로컬클래스는 선언한 메서드에서만, 

위와 같은 경우엔 outerM() 메서드 안에서만 사용할 수 있다. (외부에서 인스턴스 생성 불가)

또한 static 키워드를 사용할 수 없다.

 




■ anonymous class, 익명 클래스

 : 1회용 클래스

 : 객체를 한 번만 만들기 위해 선언

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Outer {
    public Object outerM() {
 
        return new Object() {
            //익명클래스 영역 -> 멤버선언가능
            //단, 오버라이딩만 가능하다.
             
            @Override
            public String toString() {
                return "익명 클래스 오버라이딩";
            }
        }  
    }
}
 
Outer o = new Outer();
System.out.print(o.outerM());
 
→ 익명 클래스 오버라이딩

 

 

 

'java' 카테고리의 다른 글

AWT 예제  (0) 2013.07.25
String  (0) 2013.07.25
FileStream, 파일스트림  (0) 2013.07.25
콘솔입력  (0) 2013.07.25
Exception, 예외  (0) 2013.07.25
Posted by 1+1은?