Back-End/Java

[Java] 변수(Variable), 자료형(Data Type), 자료형 변환(Casting)

nanee_ 2021. 6. 11. 00:54
728x90
반응형
SMALL

변수 (Variable)

: 컴퓨터가 명령을 처리하는 동안 발생하는 값을 저장하기 위한 공간

: 바뀔 수 있는 어떤 값을 보관하는 곳

 

 

데이터 타입 (자료형, Data Type)

자료형 키워드 크기 기본값 표현범위
논리형 boolean 1bit = 8byte false true 또는 false
(0과 1이 아님)
문자형 char 2byte \u0000 0 ~ 65,535
정수형 byte 1byte 0 -128 ~ 127
short 2byte 0 -32,768 ~ 32,767
int 4byte 0 -2,147,483,648 ~ 2,147,483,647
long 8byte 0 -9,223,372,036,854,775,808
~ 9,223,372,036,854,775,807
실수형 float 4byte 0.0 -3.4E38 ~ +3.4E38
double 1bit = 8byte 0.0 -1.7E308 ~ +1.7E308

 

pulic static void main(String[] args) {
          char charVal1 = 'A'; // 문자
          char charVal2 = "안녕하세요"; // 문자열
          boolean booleanVal = true; // boolean
          byte byteVal = 50; //정수
          short shortVal = 190; // 정수
          int intVal = 10; // 정수
          long longVal = 100000000L; // 정수
          float floatVal = 10.5F; // 실수
          double doubleVal = 10.5; // 실수
}

 

- 문자형 char   

' ' 과 " " 의 차이점

       ' ' : 문자 하나(char)

       " " : 문자열(string)

 

문자 자료형에는 문자의 유니코드(정수)가 저장된다.

즉, 어떤 문자를 컴퓨터 내부에서 표현하기 위해서 특정 정수 값을 정의해 둔다.

이렇게 각 문자를 얼마로 표현할 것인지 코드 값을 모아둔 것을 문자세트(character set) 이라고 한다.

문자 세트에는 ASKII, euc-kr, utf-8, utf-16 등이 있다.

자바는 문자를 나타내기 위해 전세계 표준인 UNICODE를 사용한다.

(utf-16 인코딩을 사용해서 모든 문자를 2byte로 표시한다)

 

- 논리형 boolean

오직 truefalse의 값만 가지는 논리 자료형이다.

true or false 이외의 값을 입력하면 Type mismatch 에러가 발생된다.

 

- 정수형 int

byte, short, int, long 각 범위를 넘은 값을 입력하면 Type mismatch 에러가 발생된다.

long 형에는 숫자 마지막에 접미사 L을 붙여줘야 컴퓨터가 long으로 인식한다

 

- 실수형 double

float와 double 이 있다. 

float를 사용할 때는 실수 뒤에 접미사 F를 붙여줘야 한다.

double을 더 많이 사용한다.

 

 

 

변수를 활용해 Hello World~! 출력하기

package variable;
public class HelloWorld2 {
	public static void main(String[] args) {
    	// 변수타입 변수명 = 값 ; // 변수지정 방법
    	String helloWorld = "Hello World~!";
        System.out.println(helloWorld);
    }
}    

 

변수 선언 방법

변수타입 변수명 = 값 ;

 

** 변수 선언 시 주의사항

같은 이름의 변수로 선언할 수 없다.

초기화를 해준다. (값을 부여해주는 것)  ex) int a = 0;

가독성을 위해 되도록 선언부(class안의 상단부)에 한꺼번에 선언한다. 

 

 

변수 명 

package variable;
public class VariableWarning {
	public static void main (String[] args) {
    	int a, A; // a, A는 다른 변수!
        int 1hi; // (오류) 숫자는 변수명의 제일 앞에 위치할 수 없다
        int hi123; // (가능) 숫자가 변수명의 제일 앞이 아니면 선언 가능하다
        int 한글; // (가능)
        int space bar; // (오류)
        int space_bar; // (가능)
        int long, double, int; // (오류) JAVA의 예약어
    }
}

 

숫자는 맨 앞에 쓸 수 없다.

띄어쓰기를 할 수 없다. → 언더바(_)는 사용가능

특수 문자(_ 제외)를 쓸 수 없다.

되도록 소문자만 사용한다. → 카멜표현법 (String goodBoy)

되도록 한글은 사용하지 않는다.

명사로 사용한다.

뜻이 있는 단어를 선택한다. ex) a, b (x) / data, num, height (o)

java의 예약어는 사용할 수 없다. ex) int, double, new, final 등

 

 

변수의 형변환

- 자동 (자료)형 변환

int iNum = 100;

// 자동 형변환
double dNum = iNum; // int -> double
System.out.println(dNum);

 

위의 예시 코드는 int형에서 double형으로 자동 형 변환을 한 것이다.

int는 4byte이고, double은 8byte 이므로 크기가 큰 것에 작은 것이 잘 담아진 것이다.

int(4byte) -> double(8byte)

 

 

- 강제 (자료)형 변환 (Casting)

double dNum = 1.1234;

// double -> int
// 자동 형 변환 오류
int iNum = dNum; // Type mismatch: cannot convert from double to int

// 강제 형 변환 (Casting)
int iNum = (int)dNum; // 컴퓨터에게 int형이라고 강제로 명령
System.out.println(iNum); // 1 -> 데이터 손실

 

double -> int 로 변환을 하려고 한다.

위에서 언급했듯이 int는 4byte이고, double은 8byte이다.

double 에서 int로 변경하려니 작은 크기에 큰 크기가 담기지 않는다.

그래서 자동 형 변환을 하면, Type mismatch: cannot convert from double to int 라는 오류 메시지가 뜨게 된다.

괄호( ) 안에 형 변환을 하고 싶은 자료형을 입력해준 뒤에 double형의 변수명을 써 준다면, 컴퓨터에게 강제로 int 형으로 변경시키라고 명령을 할 수 있다. 

 

이때, double형의 소수점 뒤의 값은 없어지고 앞의 정수만 출력되게 되는데 데이터의 손실이 일어나게 된다.

 

 

                - 문자열 형변환

String num1 = "1";
String num2 = "2";
String num3 = "3";

// 문자열 형변환
System.out.println(num1 + num2); // 12
System.out.println((int)num1 + (int)num2); // 불가
System.out.println(Integer.parseInt(num1)+Integer.parseInt(num2)); // 3
	// 문자열 -> 정수
System.out.println(""+num3+9); // 39

 

문자열 + 문자열 문자열끼리 연결이 이뤄진다.

 

문자열 → 정수 은 불가능하다.

                    ⟹ Integer.parseInt( ) 은  괄호 안의 값을 정수형으로 형변환을 해준다.

 

" "(문자열) + 정수  와 같이 문자열과의 연산을 출력하는 함수에서 함께 쓰면 문자열 뒤의 다른 자료형들은 문자열로 형변환이 이뤄진다.

 

 

 

 

 

728x90
반응형
LIST