Java

자바 데이터들의 형 변환 3.27

조충희 2025. 3. 27. 16:48

변수들의 형 변환 방법을 배웠다.

이클립스의 유용한 사용법을 배웠다.

sysout ctrl space

 

(강제형변환)

2바이트에서 4바이트로, 4바이트로 8바이트 형태로 변환할때는 문제가 없지만

반대일때는 오류가 발생하기에 강제로 형변환을 해준다.

이 경우 데이터 손실이 발생할 수 있다.

package ch02;

/**

* 형 변환이란?(자료형에 형태를 변경하는 것)

* 데이터 타입을 다른 데이터 타입으로 변경 하는것

* 두 가지 종류

* 자동(암시작) 형 변환, 강제(명시적)형 변환

*/

public class TypeConversion {

public static void main(String[] args) {

 

int intDataBox = 100;

double doubleDataBox;

doubleDataBox = intDataBox;

System.out.println("intDataBox : " + intDataBox);

System.out.println( "doubleDataBox : " + doubleDataBox);

// int 상자에서 double 상자로 값을 넣었더니 값에 형태가 변했다.

// 중요! -> 작은 상자에서 큰 상자로 값을 넣는ㄴ 것은 자연스럽게 이동이 된다.

// 자동 형변환

System.out.println("======================");

 

// 강제 형 변환

final double PI = 3.14159;

// 문법적인 오류를 알려 주는 녀석을 컴파일러(컴파일 시점 오류)

// int intBox = PI; <-- 오류 발생

// 컴파일러야 괜찮아 강제로 그냥 넣어!!!

int intBox = (int)PI;

System.out.println("PI : " + PI);

System.out.println("intBox:" + intBox);

System.out.println("======================");

 

//정리

//자동형변환은 작은 상자에서 큰 상자로 자연스럽게 들어가진다.

//강제형변환은 큰 상자에서 작은 상자로 들어갈때 강제로 집어넣는다.

// 단 데이터 손실이 발생할 수 있다.

 

} // end of main

} // end of class

 

서로 다른 자료형 사이의 형변환 규칙을 이해했다.

char(문자, 2바이트)

int(정수, 4바이트)

double(실수, 8바이트)

package ch02;

/**

* 형 변환이란?(자료형에 형태를 변경하는 것)

* 데이터 타입을 다른 데이터 타입으로 변경 하는ㄱ ㅓㅅ

* 두 가지 종류

* 자동(암시작) 형 변환, 강제(명시적)형 변환

*/

public class TypeConversion2 {

public static void main(String[] args) {

 

//1. 자동형변환

int apple = 5;

double bigApple = apple; // 형변환중에 자동형변환이다.

System.out.println("사과 개수 (double)" + bigApple); //출력 : 5.0

 

//2. 강제 형 변환

double height = 170.5;

//컴파일러가 오류라고 알려주고 있다

//강제형변환

int shortHeight = (int)height;

System.out.println("정수 키"+shortHeight); // 출력 : 170

//데이터 손실이 발생하고 소수점을 버린다

 

//3. 문자에서 숫자로 형변환하고 싶을때

char myLetter = 'B';

int myNumber = myLetter; // 자동형변환이라고 할 수 있다

System.out.println("myNumber : "+myNumber);//출력:66

System.out.println("myLetter : "+myLetter);//char타입이기 때문에 문자형으로 출력된다

 

//정리 : 강제 형변환시 데이터 손실이 발생할 수 있다 즉 안할수도 있다

// byte : 1byte(8bit) --> [][][][][][][][] --> 표현할 수 있는 정수의 범위는 127까지 표현 가능

 

//4. 숫자에서 문자로 형변환

int myNum = 67;

char myChar = (char)myNum; //강제형변환을 했다

System.out.println("myChar : "+myChar);

System.out.println("=================");

//데이터검증

System.out.println((char)67);

 

} // end of main

} // end of class

 

각 데이터형별 변환

package ch02;

public class TypeConversion3 {

public static void main(String[] args) {

// 직접 형변환 코드 작성해보기

 

//1. 숫자에서 문자형

int myNum = 67;

char myChar = (char)myNum;

System.out.println("myChar : " + myChar);

 

//2. 문자에서 숫자형

char myChar2 = 'B';

int myNum2 = (int)myChar2;

System.out.println("myNum2 : " + myNum2);

 

//3. 정수형에서 실수형

int myNum3 = 3;

double myDouble3 = myNum3;

System.out.println("myDouble3 : " + myDouble3);

 

//4. 실수형에서 정수형

double myDouble4 = 3.14;

int myNum4 = (int)myDouble4;

System.out.println("myNum4 : " + myNum4);

 

} // end of main

} // end of class

 

부호 연산자의 활용법을 이해했다.

package ch03;

public class MainTest1 {

 

//메인 함수

public static void main(String[] args) {

 

// 대입 연산자 ( = )

int number = 10;

// 연산의 방향은 오른쪽에서 왼쪽으로 된다.

 

// 변수에 변수를 대입할 수도 있다.

int number2 = number;

System.out.println("-------------");

 

// 부호 연산자 +, -

// 부호를 변경하는 연산자이다.

// 주의! : 단, 변수에 들어있는 실제 값을 변경하지는 않는다. !!!

System.out.println(+10);

System.out.println(-5);

 

int num3 = 100;

// 얘는 화면에 출력하라는 명령어다.

// 어떤...

// num3 공간에 있는 값을 출력

// 그 부호를 변경해

System.out.println(-num3);

// 고민... 실제 num3이라는 메모리 공간에 값도 변경이 됐을까?

System.out.println(num3); //그대로 100이 출력

 

// 응용(어려움) 실제 변수에 접근해서 100을 -100으로 변경하려면 어찌해야 하나

// 단 값을 사용하지 말고 변수만 활용해보자

num3 = -num3;

 

//실제 값을 변경하려면 대입연산자와 함께 사용해야 한다.

System.out.println(num3);

 

} // end of main

} // end of class

 

항과 연산자를 포함한 변수를 만들어봤다.

괄호와 대입연산자의 작동 순서를 이해했다.

package ch03;

public class MainTest2 {

public static void main(String[] args) {

 

// 산술 연산자 연습

int number1 = 5 + 3;

int number2 = 5 - 2;

int number3 = 5 * 3;

// int number4 = 5 / 4;

// double number4 = 5 / 4.0;

double number4 = 5 / (double)4;

int number5 = 5 % 3;

// 괄호는 우선하고 대입 연산자는 꼴지

 

System.out.println("number1 : " + number1);

System.out.println("number2 : " + number2);

System.out.println("number3 : " + number3);

System.out.println("number4 : " + number4);

System.out.println("number5 : " + number5);

// 결과 값을 실수로 나타내야 한다면 실수 + 정수로 해야 정상적으로 결과값을 확인할 수 있다.

 

// 문제1.

// (12 + 3) / 3 값을 화면에 출력하시오

// 단 변수의 값을 저장

 

int numbert1 = 12 + 3;

int numbert2 = numbert1 / 3;

System.out.println("(12 + 3) / 3 : " + numbert2);

 

int numbert3 = (12 + 3) / 3;

System.out.println(numbert3);

 

// 문제2. (25 % 2) 결과값을 변수를 사용하지 말고 출력하시오

System.out.println(25 % 2);

 

} // end of main

} // end of class

 

 

이밖에..

 

java파일과 구문은 인간이 이해할 수 있는 언어로 돼 있다.

컴퓨터가 이해할 수 있는 class파일로 변환하는 과정이 필요하며 이를 컴파일이라고 한다.

이 과정을 빠르게 할 수 있도록 도와주는 것이 이클립스와 같은 프로그램이다.

 

명령프롬프트를 이용하면 마치 윈도우탐색기를 사용하듯 파일을 열고 실행하는 것이 가능하다.

"dr" 폴더를 보여준다

"cd.."상위폴더로이동

java HelloWorld2.java

자바 명령어와 파일명을 입력해서 명령프롬프트 상에서 파일을 실행했다.

package ch02;

public class HelloWorld2 {

public static void main(String[] args) {

System.out.println("Hello World~~~");

// 컴파일이란

// 개발자가 작성한 .java 파일을 --> .class 파일을 생성하는 과정을 말한다

// 컴파일러는 통역가다

// 프랑스사람 -->  (통역가)  <--한국사람

 

// 자바 코드를 작성할 때 문법에 오류가 있다면 .class 파일을 새롭게 못 만들어낸다

 

// 컴파일 시점 VS 런타임 시점이 있다

}

}