'Programing/"JAVA"를 잡아라'에 해당되는 글 22건

  1. 2007.07.10 기본 자료형
  2. 2007.07.10 멤버의 개념과 접근

byte : 1byte (-128~127)
short : 2byte (-32768~32767)
char : 2byte (0~65535)
int : 4byte (-2147483648~2147483647)
long : 8byte (-922경~922경)

1/ class DataStyle{
2/   public static void main(String[] args) {
3/     byte a = 127;
4/     a++;

5/     short b = -32768;
6/     int c = 2147483647;
7/     long d = 123098148390127389L;  // L을 붙여서, int형과 구분해준다.

8/     char e = 65;
9/     char f = 'a';
10/   char g = '\u0041'; // 16진수표현, '\'사용
11/   float h = 12.34f;      // f를 붙이지 않으면, double 형으로 판단
12/   double i = 12.34;
  }
}
자료형은 담을 수 있는 공간은 정해져 있다. 3번째 라인과, 4번째 라인에서 byte 는 -128~127 까지의 영역을 저장할수 있는데, 만약 이 공간의 크기가 넘어가면, 컴파일 에러가 나오며, 실행이 에러가 된다.

하지만, 4번째 라인처럼 연산자를 사용하여, 공간의 크기를 넘어갔을 경우, 자료형태의 안에서 결국 돌고 돌아, byte 범위내의 첫 숫자인 -128이 a에 저장이 되어 출력된다.

byte 는 총 8비트로 구성이 되어 있으며, 이를 2진수로 표현하면 이렇게 된다.

1/ 0000 0000 : 0
2/ 0000 0001 : 1
3/ 0000 0010 : 2
4/ ....
5/ 0111 1111 : 127
6/ 1000 0000 : 128
7/ 1000 0001 : 129
8/ ....
9/ 1111 1111 : 255

하지만, 이런 식으로 표현할 경우, 문제가 발생한다. 바로 음수를 표현할 방법이 사라지게 된다. 그래서 고안한 방법이, 최상위 비트를 부호 비트로 놔두는 방법이다. 고로, 최상위 비트가 0이면 양수, 1이면 음수로 표현함으로써, 음수를 표현하는 방법을 생각해 낸 것이다.

이를 다시 2진수로 표현하면 이렇게 된다.

1/ 0000 0000 : 0
2/ 0000 0001 : 1
3/ 0000 0010 : 2
4/ ....
5/ 0111 1111 : 127
6/ 1000 0000 : -128
7/ 1000 0001 : -127
8/ ....
9/ 1111 1111 : -1

6 번째 라인 이후부터는, 음수가 되어가는 것을 볼수가 있는데, 6번째 라인에서, 1000 0001 은 최상위 비트가 1이므로 음수를 나타내서 -128인 상태에서 최하위 비트가 1이므로, -128+1 이 되어, -127이 되어버렸다. 이런 식으로 하면, 마지막 9번째 라인에서는 -128+127이 되어 -1이 되게 된다.

이렇게 보면, 결국 자료형은 돌고 돈다는 이야기인데, 다시 코딩 부분으로 돌아가, 3번째 라인에서 127을 입력시키고, 4번째 라인에서 1을 증가시켰다. 위의 byte 의 새로운 2진수 표현 방법을 적용시키면, 127 에서 1을 더하면, 128이 아닌, 음수인 -128이 된다. 그래서 나중에 a 를 출력하면, -128이 출력된다.

코딩 부분에서 7번째 라인을 보면 long 형태의 자료형을 사용한 것을 볼수가 있는데, 만약 long 형태의 자료형을 선언하고, 큰 범위의 숫자를 입력하면, 컴퓨터는 이를 그냥 int 형으로 인식하여 컴파일 에러를 발생시킨다. 이를 위해 long 형을 사용시엔, 항상 입력한 값뒤에 대문자 L 자를 삽입하며, 소문자 l 을 사용해도 가능하나, 숫자 1과 소문자 l을 구별하기 위해, 대문자 L을 좀더 사용한다.

8번째 라인부터 10번째 라인까지는 문자형 char 에 관한 부분으로 단순히 숫자를 입력하면, 아스키 코드값 저장하여 출력시, 저장된 아스키 코드값의 해당 글자가 출력된다. 작은 따옴표를 이용한 문자를 저장할 경우엔, 오직 한문자만이 저장 가능하며, 이 역시 저장된 글자가 바로 출력이 된다. 하지만, 실제, 컴퓨터는 아스키 코드값으로 기억, 저장하고 있다.

11번째 라인과 12번째 라인은 실수형을 담고 있는데, float 자료형을 사용시, 저장 값에 f를 사용안하면, double 자료형으로 인식, 에러를 일으키게 된다.


p.s 위의 글들은, 김승현 강사님열혈강의 Java Programming 의 Round 3-4, 동영상 강좌에 기초한 내용입다다.
:
1. Package의 Member
Package는 일종의 폴더로서, 자바는 전체가 Folder의 형태로 이루어져 있으며, 그러한 Folder속의 Data Member들로 구성되어 있다.

먼저, JAVA 를 설치한 폴더(본인의 경우 "C:\j2sdk1.4.2_13")로 가보면 "src.zip"라는 파일을 찾을수 있게 될것이다.

사용자 삽입 이미지

< src.zip 파일 >


이 파일의 안을 한번 들여다 보면, 총 6가지의 폴더를 확인할수가 있다.

사용자 삽입 이미지

< src.zip 파일 내부에 있는 Package 들 >


이중, "java", "javax", "org" 라는 폴더는, 일종의 매뉴얼이라 할수 있는 document 문서에서 확인해 볼수가 있는 폴더들이며, "com""launcher", "sunw"라는 폴더는 document 문서에서는 드러나있지 않은 폴더이다. 이러한 폴더들을 JAVA에서는 Package 라는 이름으로 부르게 된다.

이중 "java" 라는 Package 안으로 들어가 보자.

사용자 삽입 이미지

< java 라는 Package 안에 있는 여러 요소들 >


그 안에 역시, 여러 폴더가 존재하는 데, 그중 "lang" 이라는 폴더안으로 다시 들어가보면 여러 java 파일들이 존재하고 있음을 알수가 있다. 사실은, java 파일이 아닌 컴파일된 class 라는 파일이 이 안에 존재하는데, 이러한 class 파일들이 Package 에서의 Member 라고 이야기를 한다.


2. Java File의 Member
실제 Java 파일 안에는 Package, Import, Class 라는 영역이 존재하며, 이 영역들이 Java 파일에서의 Member 이다.

Java 를 코딩시

package rys.util; // 이 부분은 단순히 예시입니다.

import java.lang.System; // import 영역
import java.lang.*;
import java.io.*;

class A {}                   // class 영역
class B {}
public class Exam_01 {          
          public static void main(String[] args) {}
}                              

// import 영역 다음에 class 영역이 와야지, class 이후에 import 가 등장할수는 없다.
// public은 아예 없을 수는 있지만, 있게된다면, 항상 한개만 있어야 한다.
// public class 이름은 항상 파일 이름과 동일해야 하며, 대문자 소문자까지 다 일치해야 한다.

위에 나온 3가지 영역이 Java 파일에서의 Member 이다.


3. Class의 Member
위의 Java File 에서의 Member 는 Class 밖에서의 Member 들이고, 여기 Class 의 Member는 Class 안에서의 멤버들로, 필드, 생성자, 메소드, 이너클래스로 나뉘게 된다.

class Exam_02 {                     // 클래스 안에서의 멤버들
 private String str = "멤버필드"; // 멤버필드, ()가 없는 어떠한 선언부나 형식
 public Exam_03() {}              // 생성자로서, 클래스 이름과 똑같지만, () 가 존재하는 부분
 public void display() {}         // 메소드로서, 클래스 이름과 다른 형태의 () 가 존재하는 부분
 class a {                            // 이너클래스로서, 클래스 안에 들어가는 또다른 클래스
                                         // 이 클래스 안에 또한, 위처럼 다른 Member 들이 있을수가 있다.
  }
          public static void main(String[] args) {
    }                                    // 메소드이다.
}
위에 나온 4가지 요소가 Class 에서의 Member 이다.


p.s 위의 글들은, 김승현 강사님열혈강의 Java Programming 의 Round 3-2, 동영상 강좌에 기초한 내용입다다.
:

BLOG main image
아무거나 공부하자!!! by Young79

공지사항

카테고리

분류 전체보기 (79)
Programing (29)
"JAVA"를 잡아라 (22)
달이 차오른다, "LUA" (4)
"WIPI"를 피해라 (3)
English (31)
Graphic (4)
Saying on T"We"tter (15)

최근에 올라온 글

최근에 달린 댓글

글 보관함

달력

«   2025/02   »
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
Total :
Today : Yesterday :