'Development/Java'에 해당되는 글 12건

  1. 2012.05.20 [숫자 입력받기(scanner)]
  2. 2012.04.28 [아스키코드표]
  3. 2012.04.28 [String형 문장을 이을때는...]
  4. 2012.04.27 [아스키코드 출력]
  5. 2012.04.27 [String에서 한 글자씩 읽기/추출하는 방법]
  6. 2012.04.19 [StringBuffer]
  7. 2012.04.19 [static]
  8. 2012.04.09 [배열 복사]
  9. 2012.04.08 [시간 측정]
  10. 2012.04.08 [랜덤함수 사용법]

import java.util.*;
class  inputtest{
    public static void main(String[] args)
    {

Scanner sc=new Scanner(System.in);
     int d;
        System.out.printf("숫자 입력하시오..!  ");
        d = sc.nextInt();
        System.out.printf("입력한 숫자는 %d \n",d);

 }
}

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

[아스키코드표]  (0) 2012.04.28
[String형 문장을 이을때는...]  (0) 2012.04.28
[아스키코드 출력]  (0) 2012.04.27
[String에서 한 글자씩 읽기/추출하는 방법]  (0) 2012.04.27
[StringBuffer]  (0) 2012.04.19
Posted by cyj4369
,

[아스키코드표]

참고로 스페이스는 32번...

백스페이스는 8...

 뉴라인(Line Feed)은 10...


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

[숫자 입력받기(scanner)]  (0) 2012.05.20
[String형 문장을 이을때는...]  (0) 2012.04.28
[아스키코드 출력]  (0) 2012.04.27
[String에서 한 글자씩 읽기/추출하는 방법]  (0) 2012.04.27
[StringBuffer]  (0) 2012.04.19
Posted by cyj4369
,

본인이 가장 자주 쓰는녀석은 이런 형식이다
String buf = "str";
String plus = buf + "plus";
System.out.println(plus);

근데 포퍼먼스 책에 보니 StringBuffer 를 사용하여
.append(""); 를 사용하라고한다

책에 내용을 보면 문자열 붙이기에서 StringBuffer 는 String보다 수백배 빠르다고한다
느끼지못하는 수백배이겠지만 쌓이다보면 느려진다는것을 느낄지도...

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

[숫자 입력받기(scanner)]  (0) 2012.05.20
[아스키코드표]  (0) 2012.04.28
[아스키코드 출력]  (0) 2012.04.27
[String에서 한 글자씩 읽기/추출하는 방법]  (0) 2012.04.27
[StringBuffer]  (0) 2012.04.19
Posted by cyj4369
,

자바로 아스키 코드 (ASCII Code)를 화면에 출력하는 프로그램입니다.

아스키 7번 코드는 삑하는 비프음(Beep)코드이기에, 이 프로그램을 실행하면 삑하는 소리가 나는데, 놀랄 필요 없습니다.

파일명: Foo.java

public class Foo {
  public static void main(String args[]) {

    for (char c = 0; c <= 255; c++)
      System.out.format("%c = 0x%02X (%3d)%n", c, (int) c, (int) c);

  }
}


어떤 문자의 아스키 코드를 얻기 위해서는, 그 문자를 (int) 로 캐스팅한 후, System.out.format()으로 출력하면 됩니다.



실행 결과:


웹에 표현하기 힘든 특수문자들이 많이 나옵니다. 그래서 다음의 코드표는, 키보드로 입력할 수 있는 문자만 표시했습니다.
0x20 등으로 된 것은 16진수이고, 괄호() 안에 든 숫자는 10진수입니다.
참고로, 0x20 은 공백문자 즉 스페이스(Space)의 아스키 코드입니다.
... 생략

  = 0x20 ( 32)
! = 0x21 ( 33)
" = 0x22 ( 34)
# = 0x23 ( 35)
$ = 0x24 ( 36)
% = 0x25 ( 37)
& = 0x26 ( 38)
' = 0x27 ( 39)
( = 0x28 ( 40)
) = 0x29 ( 41)
* = 0x2A ( 42)
+ = 0x2B ( 43)
, = 0x2C ( 44)
- = 0x2D ( 45)
. = 0x2E ( 46)
/ = 0x2F ( 47)
0 = 0x30 ( 48)
1 = 0x31 ( 49)
2 = 0x32 ( 50)
3 = 0x33 ( 51)
4 = 0x34 ( 52)
5 = 0x35 ( 53)
6 = 0x36 ( 54)
7 = 0x37 ( 55)
8 = 0x38 ( 56)
9 = 0x39 ( 57)
: = 0x3A ( 58)
; = 0x3B ( 59)
< = 0x3C ( 60)
= = 0x3D ( 61)
> = 0x3E ( 62)
? = 0x3F ( 63)
@ = 0x40 ( 64)
A = 0x41 ( 65)
B = 0x42 ( 66)
C = 0x43 ( 67)
D = 0x44 ( 68)
E = 0x45 ( 69)
F = 0x46 ( 70)
G = 0x47 ( 71)
H = 0x48 ( 72)
I = 0x49 ( 73)
J = 0x4A ( 74)
K = 0x4B ( 75)
L = 0x4C ( 76)
M = 0x4D ( 77)
N = 0x4E ( 78)
O = 0x4F ( 79)
P = 0x50 ( 80)
Q = 0x51 ( 81)
R = 0x52 ( 82)
S = 0x53 ( 83)
T = 0x54 ( 84)
U = 0x55 ( 85)
V = 0x56 ( 86)
W = 0x57 ( 87)
X = 0x58 ( 88)
Y = 0x59 ( 89)
Z = 0x5A ( 90)
[ = 0x5B ( 91)
\ = 0x5C ( 92)
] = 0x5D ( 93)
^ = 0x5E ( 94)
_ = 0x5F ( 95)
` = 0x60 ( 96)
a = 0x61 ( 97)
b = 0x62 ( 98)
c = 0x63 ( 99)
d = 0x64 (100)
e = 0x65 (101)
f = 0x66 (102)
g = 0x67 (103)
h = 0x68 (104)
i = 0x69 (105)
j = 0x6A (106)
k = 0x6B (107)
l = 0x6C (108)
m = 0x6D (109)
n = 0x6E (110)
o = 0x6F (111)
p = 0x70 (112)
q = 0x71 (113)
r = 0x72 (114)
s = 0x73 (115)
t = 0x74 (116)
u = 0x75 (117)
v = 0x76 (118)
w = 0x77 (119)
x = 0x78 (120)
y = 0x79 (121)
z = 0x7A (122)
{ = 0x7B (123)
| = 0x7C (124)
} = 0x7D (125)
~ = 0x7E (126)

... 생략




자바는 유니코드가 기본이기에, 실은 위의 코드도 유니코드입니다. 그런데 유니코드의 첫부분은 아스키 코드와 똑같기에, 0xFF (=255) 까지만 출력하면 아스키 코드가 나오는 것입니다.

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

[아스키코드표]  (0) 2012.04.28
[String형 문장을 이을때는...]  (0) 2012.04.28
[String에서 한 글자씩 읽기/추출하는 방법]  (0) 2012.04.27
[StringBuffer]  (0) 2012.04.19
[static]  (0) 2012.04.19
Posted by cyj4369
,

charAt: String에서 한 글자씩 읽기/추출하는 방법


소스 파일명: Example.java
public class Example {
  public static void main(String[] args) {

    // 문자열 정의
    String s = "MP3 플레이어";


    // 한 글자씩 화면에 출력
    for (int i = 0; i < s.length(); i++) {
      System.out.println( s.charAt(i) );
    }

/* 출력 결과:

M
P
3






*/


    // 괄호에 넣어 한 글자씩 출력
    for (int i = 0; i < s.length(); i++) {
      System.out.format("[%c] ", s.charAt(i) );
    }
    // 출력 결과: [M] [P] [3] [ ] [플] [레] [이] [어]




    System.out.println(); // 줄바꿈

  }
}

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

[String형 문장을 이을때는...]  (0) 2012.04.28
[아스키코드 출력]  (0) 2012.04.27
[StringBuffer]  (0) 2012.04.19
[static]  (0) 2012.04.19
[배열 복사]  (0) 2012.04.09
Posted by cyj4369
,

[StringBuffer]

Development/Java 2012. 4. 19. 18:13

스트링 버퍼는, 바이너리 스트링의 연결 연산자 + 를 구현하기 위해서 compiler 로 사용됩니다. 예를 들어, 다음의 코드

     x = "a" + 4 + "c"
 

(은)는, 이하의 동등한 코드로서 컴파일 됩니다.

     x = new StringBuffer(). append("a"). append(4). append("c")
                           . toString()
 
새로운 스트링 버퍼 (초기 상태에서는 하늘)를 작성해, 각 연산자의 스트링 표현을 스트링 버퍼에 차례로 추가하고 나서, 스트링 버퍼의 내용을 스트링 으로 변환합니다. 이것에 의해, 작성되는 일시적인 스트링의 전체양을 줄일 수가 있습니다.

StringBuffer 의 기본적인 오퍼레이션에는,append 메소드 및 insert 메소드가 있어, 이러한 메소드는 어떤 종류의 데이터도 받는 것이 할 수 있도록 overload 되어 있습니다. 메소드는 각각 주어진 데이터를 효율적으로 스트링 으로 변환해, 스트링중의 문자를 스트링 버퍼에 추가 또는 삽입합니다. append 메소드는 항상, 버퍼의 말미에게 줄 수 있던 문자를 추가해,insert 메소드는 지정된 위치에 문자를 추가합니다.

예를 들어,z 를, 현재 "start" 를 포함한 스트링 버퍼 오브젝트라고 보는 경우,z.append("le") 는 스트링 버퍼의 내용이 "startle" 가 되도록(듯이) 변경하는데 대해,z.insert(4, "le") 라고 하는 메소드 호출은 스트링 버퍼의 내용이 "starlet" 가 되도록(듯이) 작용합니다.

일반적으로, sb 가 StringBuffer 의 인스턴스를 참조하고 있는 경우,sb.append(x) 는 sb.insert(sb.length(),  x) 와 같은 결과가 됩니다.

각 스트링 버퍼에는 capacity가 있습니다. 스트링 버퍼에 포함되는 스트링의 길이가 capacity를 초과 하지 않는 한, 새로운 내부 버퍼 배열을 할당할 필요는 없습니다. 내부 버퍼가 오버플로우 하는 경우, 자동적으로 capacity가 증가합니다.




append (boolean b) 
          boolean 인수의 스트링 표현을 이 스트링 버퍼에 추가합니다.
append (char c) 
          char 인수의 스트링 표현을 이 스트링 버퍼에 추가합니다.
 append (char[] str) 
          char 배열 인수의 스트링 표현을 이 스트링 버퍼에 추가합니다.
 append (char[] str, int offset, int len) 
          char 배열 인수의 부분 배열의 스트링 표현을 이 스트링 버퍼에 추가합니다.
 append (double d) 
          double 인수의 스트링 표현을 이 스트링 버퍼에 추가합니다.
 append (float f) 
          float 인수의 스트링 표현을 이 스트링 버퍼에 추가합니다.
 append (int i) 
          int 인수의 스트링 표현을 이 스트링 버퍼에 추가합니다.
 append (long l) 
          long 인수의 스트링 표현을 이 스트링 버퍼에 추가합니다.
 append (Object  obj) 
          인수 Object 의 스트링 표현을 이 스트링 버퍼에 추가합니다.
 append (String  str) 
          이 스트링 버퍼에 스트링을 추가합니다.
delete (int start, int end) 
          이 StringBuffer 의 부분 스트링내의 문자를 모두 삭제합니다.

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

[아스키코드 출력]  (0) 2012.04.27
[String에서 한 글자씩 읽기/추출하는 방법]  (0) 2012.04.27
[static]  (0) 2012.04.19
[배열 복사]  (0) 2012.04.09
[시간 측정]  (0) 2012.04.08
Posted by cyj4369
,

[static]

Development/Java 2012. 4. 19. 14:36

함수안에 선언된 변수는 그 함수를 빠져 나가면 사라진다. 할당되었던 메모리는 해제되고 저장되어 있던 값도 사라진다. 이러한 특성 때문에 자동변수(auto variable) 이라고 부르기도 한다. 그 함수 내에서만 유효하다고 해서 지역변수라고 부르기도 한다. 따라서 그 함수로 들어올 때 마다 변수가 다시 메모리 할당된다. 

그래서 함수간 또는 파일간에 변수 값을 공유하고자 할 때는 전역변수(global variable) 또는 정적변수(static variable)를 사용하는데 이 두 변수간의 차이를 정확히 이해를 하고 사용해야 한다. 

전역변수와 정적변수는 lifetime은 동일하다. 즉, 해당 프로그램이 죽을 때까지 한번 할당된 변수 메모리와 값은 유지된다는 점이다. 반면에 scope는 서로 다르다.  전역변수는 해당 프로그램(실행파일 기준)의 어느 함수, 어느 파일에서도 접근이 가능한 반면 정적변수는 변수가 선언된 파일이나 함수내에서만 접근이 가능하다. 

scope에 대한 예를 들면  a 파일에 선언되어 있는 static 변수는 a파일에서는 어느곳에서나 접근이 가능하지만 b파일 에서는 읽을 수가 없다. (file scope) 동일 파일 속에서도  a() 함수 속에서 선언된 static 변수는 a()의 어느곳에서도 접근할 수 있지만 b() 함수 에서는 접근할 수 없는 것이다. (function scope)  반면에 global 변수는 프로그램내의  어느 파일, 어느 함수에서도 읽을 수 있다. 

lifetime 에 대하여 고찰해 보면 한번 선언된 전역변수와 정적변수의 값은 프로그램(프로세스)가 죽을 때까지 계속 유지된다. 따라서 미들웨어에 의해 프로세스가 통제되는 프로젝트의 경우 프로세스가 죽지 않고 항상 살아있기 때문에 매번 거래가 시작될 때 반드시 변수를 초기화 해 주어야 한다. 초기화를 빼먹을 경우 이전 거래에서 사용했던 변수 값들이 그대로 보존되어 있기 때문에 잘못된 결과를 초래할 수 있기 때문이다.

특히 국방, 금융권, 원자력과 같은 크리티컬한 사이트의 프로젝트에서는 예기치 않은 대형사고가 발생될 수 있기 때문에 각별히 신경써서 사용해야 할 것이다.  

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

이러한 개념은 extern 함수와 static 함수에도 똑같이 적용된다. static 함수는 해당 파일 내에서만 호출될 수 있다. 그러나 extern 함수는 다른 파일 속에서도 호출될 수 있는 것이다. 보통 extern 함수 앞에는 extern 이란 말을 생략하기도 한다. 따라서 static 이 붙지 않은 것은 extern 함수라고 간주하면 될 것이다.  





---예제---

static 변수: 해당 클래스의 모든 인스턴스들에 의해 공유되는 변수

class Thing {

  static int count;     // static 변수 이 변수는 각 객체들 사이에서 공유된다.

  String name;

  Thing(String name) {

    this.name = name;

    ++count;  }

}

class StaticVariable {

  public static void main(String args[]) {

    Thing t1 = new Thing("Bowling Ball");

    System.out.println(t1.name + " " + t1.count);

    Thing t2 = new Thing("Ping Pong Ball");

    System.out.println(t2.name + " " + t2.count);

    Thing t3 = new Thing("Football");

     System.out.println(t3.name + " " + t3.count);  }

}



static 변수를 사용시 객체를 생성하지 않고 클래스명과 직접 사용 가능(전역 변수 기능)

class StaticBag {

  static boolean flag;

  static int i, j = 2, k = 3, l, m;

  static double array[] = { -3.4, 8.8e100, -9.2e-100 };

  static String s1, s2 = new String("Hello");}

class StaticBagTest {

  public static void main(String args[]) {

    System.out.println(StaticBag.flag);

    System.out.println(StaticBag.i);

    System.out.println(StaticBag.j);

    System.out.println(StaticBag.k);

    for(int i = 0; i < StaticBag.array.length; i++)

      System.out.println(StaticBag.array[i]);

    System.out.println(StaticBag.s1);

    System.out.println(StaticBag.s2);  }

}



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

[String에서 한 글자씩 읽기/추출하는 방법]  (0) 2012.04.27
[StringBuffer]  (0) 2012.04.19
[배열 복사]  (0) 2012.04.09
[시간 측정]  (0) 2012.04.08
[랜덤함수 사용법]  (0) 2012.04.08
Posted by cyj4369
,

[배열 복사]

Development/Java 2012. 4. 9. 01:55

package doTest;
public class IDLCTest_new {
        public static void main(String[] args) {
                char [] test1 = {'g','o','o','d'};
                char [] test = new char[16];
                
                test=(char[]) test1.clone();

                System.out.println("length:"+test.length);
                
                System.out.println(test);
                System.out.println("/"+test+"/"); // 멀티플... 형태로 표현하는곳에선 char[] 배열이 아닌 String 타입을 써야한다.
                
                System.out.print("/");
                System.out.print(test);
                System.out.println("/");                
        }
}

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

[StringBuffer]  (0) 2012.04.19
[static]  (0) 2012.04.19
[시간 측정]  (0) 2012.04.08
[랜덤함수 사용법]  (0) 2012.04.08
[자바에서 sleep]  (0) 2011.12.27
Posted by cyj4369
,

[시간 측정]

Development/Java 2012. 4. 8. 21:04

// 시작 부분에 아래처럼 현재 시간을 계산하고

long start = System.currentTimeMillis();


// 프로그램 본문


// 끝에 아래와 같이 삽입

long end = System.currentTimeMillis();

System.out.println( "실행 시간 : " + ( end - start )/1000.0 +"초");

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

[static]  (0) 2012.04.19
[배열 복사]  (0) 2012.04.09
[랜덤함수 사용법]  (0) 2012.04.08
[자바에서 sleep]  (0) 2011.12.27
[한 소켓에 여러 인풋/아웃풋 스트림]  (0) 2011.12.27
Posted by cyj4369
,

public class Foo {
  public static void main(String[] args) {


    // 0.0 ~ 1.0 사이의 실수 난수 구하기
    for (int i = 1; i <= 20; i++)
      System.out.println(Math.random());

/* 출력 결과:
0.8835488755737285
0.7442235907969202
0.04143887519495115
0.7752670113987891
0.525644276817284
0.9810655979902362
0.9857864655525691
0.5176456441171947
0.9534154184106848
0.5711598917262706
0.9167881479510426
0.9683895991289863
0.5570482364156645
0.640266931881892
0.7521635329694171
0.37944742406283405
0.1930044225804538
0.6713601888567906
0.28656122448550325
0.9697966362643208
*/




    // 1 ~ 10 까지의 정수 난수 구하기
    for (int i = 1; i <= 20; i++) {
      int n = (int) (Math.random() * 10) + 1;
      System.out.println(n);
    }

/* 출력 결과:
8
4
2
2
7
1
3
7
10
3
7
2
10
8
3
5
4
10
4
1
*/


  }
}

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

[static]  (0) 2012.04.19
[배열 복사]  (0) 2012.04.09
[시간 측정]  (0) 2012.04.08
[자바에서 sleep]  (0) 2011.12.27
[한 소켓에 여러 인풋/아웃풋 스트림]  (0) 2011.12.27
Posted by cyj4369
,