1. 형변환 Casting
· 변수 또는 상수의 타입을 다른 타입으로 변환하는 것
· 형변환 방법 ; (타입)피연산자
· float 타입의 값을 int 타입으로 변환할 때 소수점 이하의 값은 버림으로 처리됨
⚡️ 자동 형변환 : 값의 범위가 작은 타입에서 큰 타입으로의 형변환은 생략가능
⚡️ 명시적 형변환 : 변수의 자료형을 강제로 바꾸는 것 ▶️ 숫자크기 상관없이 앞에 형변환 해줘야 함
public class Etc0208 {
public static void main(String[] args) {
byte b = 10;
int i = b;
System.out.println("i=" + i); // 10
System.out.println("b=" + b); // 10
int i2 = 10;
byte b2 = (byte)i2;
System.out.println("i2=" + i2); // 10
System.out.println("b2=" + b2); // 10
}
}
public class Exma001 {
public static void main(String[] args) {
byte a = 127; // byte가 가질 수 있는 최대값
int b = a; // 자동 형변환 (byte -> int)
System.out.println(b); // 127
float c = b; // 자동형변환 (int -> float) 값손실이 없기 때문.
System.out.println(c); // 127.0
//int d = c; // float 자료형을 int 변수에 대입하면 자동형변환이 안됨.
}
}
문자열을 기본 타입으로 강제 타입 변환
📌 String은 int나 char처럼 기본 자료 타입이 아닌 클래스의 객체 형태라서 일반적인 형변환과 다름
public class MyVar_09 {
public static void main(String[] args) {
String str = "1a";
//int value = Integer.parseInt(str); // 문자열에 숫자외의 문자가 있으면 변환이 되지 않음
// String -> byte
String str1 = "10";
byte value1 = Byte.parseByte(str1);
System.out.println(value1); // 10
// String -> short
String str2 = "200";
short value2 = Short.parseShort(str2);
System.out.println(value2); // 200
// String -> int
String str3 = "300000";
int value3 = Integer.parseInt(str3);
System.out.println(value3); // 300000
// String -> long
String str4 = "400000000";
long value4 = Long.parseLong(str4);
System.out.println(value4); // 400000000
// String -> float
String str5 = "12.345";
float value5 = Float.parseFloat(str5);
System.out.println(value5); // 12.345
// String -> double
String str6 = "12.345";
double value6 = Double.parseDouble(str6);
System.out.println(value6); // 12.345
// String -> boolean
String str7 = "true";
boolean value7 = Boolean.parseBoolean(str7);
System.out.println(value7); // true
}
}
기본 타입과 문자열 간의 변환
📌 기본 타입의 값을 문자열로 변경하는 경우에는 String.valueOf() 메소드를 이용
String str = String.valueOf(기본타입값);
public class MyVar_10 {
public static void main(String[] args) {
// 문자열을 기본 타입으로 변환
int value1 = Integer.parseInt("10");
double value2 = Double.parseDouble("3.14");
boolean value3 = Boolean.parseBoolean("true");
System.out.println("value1 : " + value1); // value1 : 10
System.out.println("value2 : " + value2); // value2 : 3.14
System.out.println("value3 : " + value3); // value3 : true
// 기본 타입을 문자열로 변환
String str1 = String.valueOf(10);
String str2 = String.valueOf(3.14);
String str3 = String.valueOf(false);
System.out.println("str1 : " + str1); // str1 : 10
System.out.println("str2 : " + str2); // str2 : 3.14
System.out.println("str3 : " + str3); // str3 : false
}
}
연습 문제
📌 'int result = '에 1) 변수 4개를 모두 사용하고 2) 사칙연산중 + 연산만 사용해서 9가 나오도록 코드를 완성
public class Ex_01 {
public static void main(String[] args) {
long var1 = 2L;
float var2 = 1.8f;
double var3 = 2.5;
String var4 = "3.9";
int result = (int)var1 + (int)(var2 + var3) + (int)Double.parseDouble(var4);
// 이 부분만 수정. 0대신 코드 입력.
System.out.println(result); // 9
}
}
2. 연산자 Operator
· 연산자 : 연산을 수행하는 기호
· 피연산자(operand) : 연산자의 작업 대상 (변수, 상수, 리터럴, 수식)
· 단항 연산자의 우선순위가 이항 연산자보다 높다.
· 단항 연산자와 대입 연산자를 제외한 모든 연산의 진행방향은 왼쪽에서 오른쪽
(1) 산술 연산자
a) 사칙 연산자 : +(덧셈), -(뺄셈), *(곱셈), /(나눗셈)
b) 나머지 연산자 : % ▶️ a를 b로 나눈 후 나머지를 반환, 주로 짝수 홀수 구분에 사용
public class Exam004 {
public static void main(String[] args) {
int num1 = 10; // 10을 대입
int num2 = 3; // 3을 대입
System.out.println(num1 + num2); // 13
System.out.println(num1 - num2); // 7
System.out.println(num1 * num2); // 30
System.out.println(num1 / num2); // 3
System.out.println(num1 % num2); // 1
System.out.println(num1 % 2); // 0
System.out.println(num2 % 2); // 1
}
}
(2) 논리부정 연산자 : !
- 피연산자가 true이면 false를, false면 true를 결과로 반환
public class Exam006 {
public static void main(String[] args) {
boolean a = true;
boolean b = false;
boolean c = !b; // b의 값을 반대로 바꾸어 입력
System.out.println(a); // true
System.out.println(!a); // false
System.out.println(b); // false
System.out.println(c); // true
}
}
(3) 정수와 실수 연산
- 정수와 정수의 연산의 결과 값은 정수. 정수와 실수 연산의 결과 값은 실수
public class MyVar_11 {
public static void main(String[] args) {
byte kor, math, eng;
kor = 55;
math = 99;
eng = 87;
int sum = kor + math + eng;
System.out.println("총점 : " + sum); // 총점 : 241
int avg_01 = sum /3;
System.out.println("평균 : " + avg_01); // 평균 : 80
double avg_02 = sum /3; // 정수 / 정수
System.out.println("평균 : " + avg_02); // 평균 : 80.0 -> 정수 연산으로 정수 값이 나온 후에 실수에 저장.
double avg_03 = (double)sum / 3; // 실수 / 정수
System.out.println("평균 : " + avg_03); // 평균 : 80.33333333333333
double avg_04 = sum / 3.0; // 정수 / 실수
System.out.println("평균 : " + avg_04); // 평균 : 80.33333333333333
double avg_05 = (double)sum / 3.0; // 실수 / 실수
System.out.println("평균 : " + avg_05); // 평균 : 80.33333333333333
}
}
[ 내용 참고 : IT 학원 강의 및 자바의 정석 3rd ]
'Programming Language > JAVA' 카테고리의 다른 글
[Java] while 문 · break문 · continue 문 (0) | 2024.08.09 |
---|---|
[Java] Switch문 · for문 (0) | 2024.05.22 |
[Java] 비트 연산자 · if 문 (0) | 2024.05.21 |
[JAVA] 연산자 [단항/복합/대입/비교/논리/삼항] 및 우선순위 (0) | 2024.04.05 |
[JAVA] 변수와 변수 기본형, 상수와 리터럴, 문자열 연산 (1) | 2024.04.01 |