본문 바로가기
공부방/자바프로그래밍

자바의 자료형과 변수에 대하여

by 오후 네시 2020. 4. 10.

1. 변수 


 – 변하는 값


 - 상수 : 변하지 않는 값. final int NUM=100; 으로 표현.


2. 변수의 type(Data Type)


1) char : 문자형, 2byte, 모든 유니문자

2) byte : 정수형, 1byte, -128 ~ 127

3) short: 정수형, 2byte, -32,768 ~ 32,768

4) int  : 정수형, 4byte, -2,147,483,648 ~ 2,147,483,648

5) long : 정수형, 8byte, -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,808

6) float: 실수형, 4byte, 1.4E-45 ~ 3.4028235E38

7) double: 실수형, 8byte, 4.9E-324 ~ 1.7976931348623157E308

8) Boolean: 논리형, 1byte, 참 / 거짓


3. 변수의 선언


1) 변수는 사용하기 전에 미리 선언해야 한다.

int i = 10; (선언과 변수 초기화를 동시에 한 사례임)


2) 지역변수는 초기화하여 사용하지만, 전역변수(메소드 외부에 선언된 변수)는 초기화 하지 않아도 된다.

static int c;

System.out.println(c);

이렇게 해도 에러가 나지 않고 0이 출력된다.


4. 예제


1) 커서가 입력을 기다려서 입력 내용을 출력하는 코딩.


Scanner 클래스를 import 해야 함.


//System.in : 표준입력장치(키보드)

Scanner scan = new Scanner(System.in);

System.out.print (“이름을 입력하세요 : “); //줄바꿈 안함


//사용자가 입력한 내용을 변수에 저장

String name =  scan.next();

System.out.println(“당신의 이름은 “ + name +”입니다. “); //줄바꿈 함


scan.nextLine();  //입력문자에 공백이 있더라도 한 줄 전체를 다 입력받는다.

scan.next() ; // 입력문자에 공백이 있으면 공백 앞까지 입력받는다.

  공백 뒤의 글자는 메모리 버퍼에 담겨 있다가, 다음 변수에 무조건 저장시키기 때문에 에러를 종종 일으키는 원인이 된다.

scan.nextInt() ; // 숫자를 입력받는다


2) 자료형 변환(Cast) 예제


public class Ex04_char {

public static void main(String[] args) {

//문자형 변수 선언

char ch='A'; //문자형은 작은 따옴표로 묶음

System.out.println(ch);


//cast 연산자(자료형 변환)

//문자값을 숫자값으로 변환

System.out.println((int)ch); //65출력

System.out.println(65); //65출력

System.out.println((char)65); //A출력


for (int i=0; i<=255; i++) {

System.out.println(i+"==>"+(char)i); //ascii 코드값 출력

}


//한글도 코드값이 전부 할당되어 있음

for (int i='가'; i<='하'; i++) {

System.out.println(i+"==>"+(char)i);

}

} //end of main

} //end of Ex04_char class


3) 논리 자료형 예제

public class Ex05_bool {

public static void main(String[] args) {

boolean b = true;

System.out.println(b); //true 출력

// ! -> 논리부정. not.

System.out.println(!b); //false 출력

System.out.println(10>5);//true 출력

System.out.println(10<5);//false 출력

System.out.println(b == false);//false 출력

System.out.println(b != true);//false 출력

} //end of main

} //end of class


4) 숫자 자료형 예제


long 형은 숫자 뒷에 소문자 혹은 대문자 L을 붙여야 에러가 안난다.

예) long num2 = 2147483648L;


자료형은 기본자료형과 참조자료형이 있다.

기본자료형은 값 자체를 저장하고

참조자료형은 위치값(주소값)을 저장한다.

int : 기본자료형

Integer : 참조자료형(대문자로 시작하므로 클래스임)

long : 기본자료형

Long : 참조자료형

byte : 기본자료형

Byte : 참조자료형


자료형 범위를 벗어나면 overflow(오버플로우)가 되어 에러처리된다.


byte형은 범위가 작기 때문에 파일간 데이터 처리시에 많이 쓴다.


public class Ex06_int {

public static void main(String[] args) {

int num1=100;

System.out.println(num1);

System.out.println(Integer.MIN_VALUE); //int형의 최소값

System.out.println(Integer.MAX_VALUE); //int형의 최대값

System.out.println(Integer.SIZE); //비트수(나누기 4 하면 바이트수 나옴)

}//end of main

}//end of Ex06_int


5) 실수형 예제


자바에서는 short형과 float형은 잘 쓰지 않는다. float 대신 double을 많이 씀


실수값을 float형으로 저장하려면 끝에 F 또는 f 를 추가해서 적어야 함


public class Ex07_double {


public static void main(String[] args) {

//int num=0.7;

//double num1=0.7;

//math -> 수학계산을 위한 명령어들을 제공하는 클래스. 

//PI-> 파이 값 저장한 변수

double num1=Math.PI; 

System.out.println(num1);

System.out.println(Double.MIN_VALUE);

System.out.println(Double.MAX_VALUE);

System.out.println(Double.SIZE);


float num2=3.14F;

System.out.println(num2);

System.out.println(Float.MIN_VALUE);

System.out.println(Float.MAX_VALUE);

System.out.println(Float.SIZE);

} //end of main

}//end of Ex07_double class


5. 실수 자료형의 계산


실수 자료형을 계산하면 약간의 오차가 있다.

오차를 발생시키지 않기 위해서는 BigDecimal을 사용해야 한다.


public class Ex08_big {


public static void main(String[] args) {

double a=1.6;

double b=0.1;

System.out.println(a+b);

System.out.println(a*b);

} //end of main

}//end of Ex08_big class


출력 결과는 다음과 같다.

1.7000000000000002

0.16000000000000003


1.7과 0.16이 나와야 함에도 계산결과 틀린 계산이 나옴.


이를 해결하려면 BigDecimal 클래스를 써야 한다.


먼저 import java.math.BigDecimal; 하고

(코딩 다하면 BigDecimal 글자 밑에 빨간 줄이 그어진다.

 그러면 BigDecimal 글자에 마우스를 갖다대면 리스트박스 뜨고 

거기서 선택하면 된다.

또는

Ctl + shift + O 를 해도 된다.)


BigDecimal c = new BigDecimal("1.6"); //따옴표 쳐서 String 넣어야 함

BigDecimal d = new BigDecimal("0.1");

System.out.println(c.add(d));

System.out.println(c.multiply(d));


Tip :


 . 클래스 이름을 바꾸고 싶으면 Package Explorer에서 해당 클래스를 클릭한 뒤 F2를 누르면 된다.

 . 메인 메소드 작성법

- main을 치고 ctl + space를 누르면 도움말이 뜬다.  

엔터 치면 메인 메소드가 자동으로 작성된다.

 . System.out.println(“프린트하자”); 작성법

- sysout이라고 쓰고 ctl + space 누르면 자동으로 작성된다.

 . 실행은 ctl + F11

 . 클래스명은 첫글자를 대문자로 쓴다.

 . import 시킬 패키지가 있으면 자료형 선언시 빨간 밑줄이 그어진 자료형에 마우스를 올리면 리스트 박스가 나타난다. 거기서 해당 클래스를 선택하여 import 하면 된다.

혹은

ctl + shift + O(영문자) 눌러서 선택해도 된다.

 . 클래스의 내용을 알고 싶으면 클래스명에 커서를 갖다대고 F3를 누르면 된다.

 (이때 만약 파일을 선택하라는 메시지가 나오면 JDK 설치 폴더 > lib > scr.zip 을 선택하면 된다)

 . 클래스명이 혹은 변수명과 점을 찍고 ctl + space 를 치면 도움말이 나온다.

 . 여러 줄을 주석처리 할 때는 여러 줄을 드래그한 뒤 ctl + 슬러시’/’ 하면 된다. 한번 더하면 해제됨.



댓글