◎ 자동 타입 변환
▷ 데이터 타입을 다른 타입으로 변환하는 것
▷ 값의 허용 범위가 작은 타입이 허용 범위가 큰 타입으로 대입될 때 발생
▷ 정수 타입이 실수 타입으로 대입되면 무조건 자동 타입 변환 됩니다.
▷ 예외 : char 타입보다 허용 범위가 작은 byte 타입은 char 타입으로 자동 변환될 수 없습니다.
byte < short, char < int < long < float < double
정수 / 실수
◎ 자동 타입 변환 예제
public class TypeChangExample2 { public static void main(String[] args) { byte byteValue = 10; int intValue = byteValue; //자동 타입 변환 long longValue = 5000000000L; float floatValue = longValue; // 5.0E9f double doubleValue = longValue; // 5.0E9 char charValue = 'A'; int inValue = charValue; // 65 byteValue = 65; // 1byte byte형은 char형에 대입 불가 자동 형변환X // char charValue = byteValue; // 에러 } }
public class PromotionExample { public static void main(String[] args) { byte byteValue = 10; int intValue = byteValue; System.out.println("intValue : " + intValue); char charValue = '가'; intValue = charValue; System.out.println("intValue : " + intValue); intValue = 50; long longValue = intValue; System.out.println("longValue : " + longValue); longValue = 100; float floatValue = longValue; System.out.println("floatValue : " + floatValue); floatValue = 100.5F; double doubleValue = floatValue; System.out.println("doubleValue : " + doubleValue); } } // 출력 : // intValue : 10 // intValue : 44032 // longValue : 50 // floatValue : 100.0 // doubleValue : 100.5
◎ 강제 타입 변환
▷ 큰 허용 범위 타입을 작은 허용 범위 타입으로 쪼개서 저장하는 것
▷ 캐스팅 연산자로 괄호()를 사용하며, 괄호 안에 들어가는 타입은 쪼개는 단위
작은 허용 범위 타입 = (작은 허용 범위 타입) 큰 허용 범위 타입
예)
int → byte 강제 타입 변환
byte의 범위 안에 있는 값까지만 변환 가능합니다.
◎ 연산식에서 자동 타입 변환
▷ 정수 타입 변수가 산술 연산식에서 피연산자로 사용되면 int 타입보다 작은 byte, short 타입 변수는 int 타입으로 자동 변환되어 연산을 수행합니다.
▷ byte 변수가 피연산자로 사용되면 변수 값은 int 값으로 연산되며, 결과 역시 byte 변수가 아닌 int 변수에 저장해야 합니다.
int result = (byte 타입, char 타입, short 타입, int 타입) + 연산자 + (byte 타입, char 타입, short 타입, int 타입)
◎ String 타입 변환하기
▷ 기본 타입의 값을 문자열로 변경할 때는 String.valueOf()메소드를 이용합니다.
NO | 변환 타입 | 사용 예 |
1 | String → byte | byte value = Byte.parseByte(str); |
2 | String → short | short value = Short.parseShort(str); |
3 | String → int | int value = Integer.parseInt(str); |
4 | String → long | long value = Long.parseLong(str); |
5 | String → float | float value = Float.parseFloat(str); |
6 | String → double | double value = Double.parseDouble(str); |
7 | String → boolean | boolean value = Boolean.parseBoolean(str); |
◎ 변수 범위를 나타내는 중괄호 {} 블록
▷ 조건문과 반복문의 중괄호 {} 블록 내에 선언된 변수는 해당 중괄호 {} 블록 내에서만 사용 가능합니다.
▷ 전역변수 : var1(main 내부에서 해당 변수를 다 사용할 수 있습니다.)
▷ 지역변수 : var2, var3 (if문, for문 내에서만 사용 가능합니다.)
◎ println() 메소드로 변수 값 출력하기
▷ 모니터에 값을 출력하기 위해 System.out.println() 이용
▷ 출력 방법에 따라 print(), printf()도 사용할 수 있습니다.
NO | 메소드 | 의미 |
1 | println(내용); | 괄호 안의 내용을 출력하고 행을 바꿔라. |
2 | print(내용); | 괄호 안의 내용을 출력하고 행은 바꾸지 마라. |
3 | printf("형식문자열", 값1, 값2, ...); | 형식 문자열에 맞춰 뒤의 값을 출력하라. |
▷ printf()의 형식 문자열에서는 %와 conversation(변환 문자)를 필수로 작성하고 나머지는 생략 가능합니다.
public class printfExample { public static void main(String[] args) { int value = 123; System.out.printf("상품의 가격 : %d원\n", value); // %d : 정수형 System.out.printf("상품의 가격 : %6d원\n", value); // %6d : 정수형 6자리 뒤에서부터 입력 System.out.printf("상품의 가격 : %-6d원\n", value); // %-6d : 정수형 6자리 앞에서부터 입력 System.out.printf("상품의 가격 : %06d원\n", value); // %06d : 빈칸은 0으로 채움 double area = 3.14159 * 10 * 10; System.out.printf("반지름이 %d인 원의 넓이 : %10.2f\n", 10, area); // %10.2f : 실수형 소숫점 2째 자리까지 출력하시오, 소숫점 포함 10자리를 출력하시오. String name = "홍길동"; String job = "도적"; System.out.printf("%6d | %-10s | %10s\n", 1, name, job); // %s는 문자형 출력 } } // 출력 // 상품의 가격 : 123원 // 상품의 가격 : 123원 // 상품의 가격 : 123 원 // 상품의 가격 : 000123원 // 반지름이 10인 원의 넓이 : 314.16 // 1 | 홍길동 | 도적
◎ Scanner 타입 변수 활용하기
▷ class 바깥쪽에서 'import java.util.Scanner;'로 Scanner 함수를 가져옵니다.
Scanner sc = new Scanner(System.in);
sc는 다른 변수로 바꿔도 상관 없습니다.
◎ Scanner 활용 예시
import java.util.Scanner; public class ScannerExample { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); //Scanner 객체 생성 System.out.print("x 값 입력 : "); String strX = scanner.nextLine(); int x = Integer.parseInt(strX); System.out.print("y 값 입력 : "); String strY = scanner.nextLine(); int y = Integer.parseInt(strY); int result = x + y; System.out.println("x + y: " + result); System.out.println(); while(true) { System.out.print("입력 문자열 : "); String data = scanner.nextLine(); if(data.equals("q")) { break; } System.out.println("출력 문자열: " + data); System.out.println(); } System.out.println("종료"); } } // 출력 : // x 값 입력 : 5 // y 값 입력 : 11 // x + y: 16 // 입력 문자열 : e // 출력 문자열: e // 입력 문자열 : q // 종료
strX, strY에 문자를 넣으면 x, y 값에 정수형으로 변환시켜서 넣을 수 없기 때문에 오류가 나타납니다.
아래의 while문은 q라는 문자가 입력될 때까지 while 내부의 코드를 반복해서 수행합니다.
변수를 자동 변환시켜보는 함수에 대해 알아봤습니다.
어떻게하면 변수의 형태를 변환 시킬 수 있는지에 대해서 조금은 더 이해가 되는 것 같네요!!
많은 분들의 피드백은 언제나 환영합니다! 많은 댓글 부탁드려요~~
'BackEnd > Java' 카테고리의 다른 글
[java] 이것이 자바다 ch4 조건문과 반복문 (0) | 2023.01.07 |
---|---|
[java] 이것이 자바다 ch2 변수 확인 문제 풀이 (0) | 2023.01.05 |
[java] 이것이 자바다 ch2 변수와 타입 (0) | 2023.01.05 |
[java] 자바의 정석 ch6 연습문제 풀이 (0) | 2022.12.20 |
[java] 자바의 정석 ch5 연습문제 풀이 (0) | 2022.12.19 |