# 복습
#자료형 (data type)
1. 기본형
1) 정수: byte, short, int, long
2) 실수: float, double
3) 문자: char
4) 논리: boolean
2. 참조형
1) 문자열: String
1. JOptionPane
1) JOptionPane으로 받은 데이터값들은 모두 문자열이다.
따라서 사용하고자 하는 변수형으로 변환하여 사용해야한다.
2) import javax.swing.JOptionPane;
'JOptionPane' 있는 클래스와 이에 있는 메소드들을 참조하기 위해 사용
3) 종류
- JOptionPane.showInputDialog(message); > 사용자로부터 데이터값을 받고자 할 때 사용
- JOptionPane.showMesaageDialog(null, message); > 받은 데이터값을 출력하고자 할 때 사용
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | package dialoginputex; import javax.swing.JOptionPane; public class JoptionTest01 { public static void main(String[] args) { // JOptionPane으로 받은 데이터는 문자열! // 사용자로부터 name 값을 받아 옴 String name = JOptionPane.showInputDialog("이름을 입력해주세요."); System.out.println("입력한 이름은: " + name); // jop + ctrl + space // 받은 name 값을 출력 JOptionPane.showMessageDialog(null, name); } } | cs |
4) 문자열 > 원하는 변수형
- int: Integer.parseInt(String);
- double: Double.parseDouble(String);
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | package dialoginputex; import javax.swing.JOptionPane; public class JoptionTest02 { public static void main(String[] args) { String korScore = JOptionPane.showInputDialog("국어점수 입력하세요."); String engScore = JOptionPane.showInputDialog("영어점수 입력하세요."); // kor + ctrl + space = korScore System.out.println(korScore + engScore); // String > int int kor = Integer.parseInt(korScore); int eng = Integer.parseInt(engScore); System.out.println(kor + eng); String height = JOptionPane.showInputDialog("키를 입력하세요"); double heightD = Double.parseDouble(height); // String > double System.out.println(heightD + 5); } } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 | package dialoginputex; import javax.swing.JOptionPane; public class JoptionTest03 { public static void main(String[] args) { // '변수 선언 + 문자열 데이터 값 > int형 변환' 을 동시에 함 int age = Integer.parseInt(JOptionPane.showInputDialog("나이 입력")); JOptionPane.showMessageDialog(null, "1년 뒤에는 " + (age + 1) + "세 이군요!"); } } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | package dialoginputex; import javax.swing.JOptionPane; public class JoptionVariableTest09 { public static void main(String[] args) { String title = JOptionPane.showInputDialog("책 이름"); String writer = JOptionPane.showInputDialog("저자"); int price = Integer.parseInt(JOptionPane.showInputDialog("가격")); double width = Double.parseDouble(JOptionPane.showInputDialog("가로 크기")); double height = Double.parseDouble(JOptionPane.showInputDialog("세로 크기")); String company = JOptionPane.showInputDialog("출판사"); // 길게 쓰는 것보다 String message에 추가하는 게 더 편함! // JOptionPane.showMessageDialog(null, // "책 이름: " + title + "\n저자: " + writer + "\n가격: " + price // + "원\n크기: " + width + " X " + height + "\n출판사: " + company); String message = "*** 책 정보 ***\n"; message += "제목: " + title + "\n"; message += "저자: " + writer + "\n"; message += "가격: " + price + "원\n"; // width, height의 실수값을 소수점 이하 한 자리로 표현하고자 할 때, // String.format("%.1f", width) 을 사용한다. message += "크기: " + width + " X " + height + "\n"; message += "출판사: " + company; JOptionPane.showMessageDialog(null, message); } } | cs |
2. 데이터 형변환 (type conversion, casting)
int num = 10;
double num2 = 3.14;
num2 = num1; // 자동 형변환
num1 = (int)num2; // 강제 형변환
1) 자동 형변환 (implicit conversion, upcasting, promotion, 묵시적 형변환)
- 표현 범위가 좁은 타입에서 넓은 타입으로 형변환하는 경우
- 생략하지 않는 것을 추천!
2) 강제 형변환 (explicit conversion, downcasting, demotion, 명시적 형변환)
- 표현 범위가 넓은 타입에서 좁은 타입으로 형변환하는 경우
- 형변환을 '명시적'으로 표기해야 한다.
- (타입) 변수;
- 값의 손실이 있다.
3) 크기 비교
<---- 작은 타입 큰 타입 ---->
byte short/char int long float double
# 실수형은 기본적으로 정수형보다 표현 범위가 넓다!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | package castingex; public class CastTest01 { public static void main(String[] args) { int num1 = 10; int num2 = 20; int result1 = num1 + num2; System.out.println(result1); int num3 = 30; double num4 = 10.5; double result2 = num3 + num4; // 30.0 + 10.5 = 40.5 // 자동 형변환에서 생략해도 알아서 되지만 생략하지 않는 것을 추천! // 긴 코드 내에서 선언부를 볼 수 없을 때 변수형을 추측하기 위함 // double result2 = (double)num3 + num4; System.out.println(result2); // double값을 int형을 넣으면 정수부분만 살아남는다. // int result3 = num3 + (int)num4; int result3 = (int)(num3 + num4); System.out.println(result3); // int형끼리의 나눗셈은 몫의 값만 나오고 나머지값은 나오지 않음! // 나머지값까지 나오게 하려면 실수형으로 형변환을 해주어야 한다. int num5 = 15; int num6 = 2; System.out.println(num5 / num6); // 7 System.out.println(num5 / (double)num6); // 7.5 System.out.println(15 / 2.0); // 7.5 } } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | package castingex; import javax.swing.JOptionPane; /* * JOptionPane 클래스를 활용해서 * 국어, 영어, 수학 3과목의 점수를 입력받아 * 총점과 평균을 구해보자! * */ public class CastTest02 { public static void main(String[] args) { int kor = Integer.parseInt(JOptionPane.showInputDialog("국어 점수")); int eng = Integer.parseInt(JOptionPane.showInputDialog("영어 점수")); int mat = Integer.parseInt(JOptionPane.showInputDialog("수학 점수")); int total = kor + eng + mat; double avg = total / 3.0; String message = "국어: " + kor + "점\n"; message += "영어: " + eng + "점\n"; message += "수학: " + mat + "점\n"; message += "총점: " + total + "점\n"; message += "평균: " + String.format("%.1f", avg) + "점\n"; JOptionPane.showMessageDialog(null, message); } } | cs |
3. 오버플로우 현상 (overflow)
형변환 또는 연산 작업 시, 해당 타입에 표현 범위를 넘었을 때 발생한다.
해당 타입의 표현 범위 내에서 값이 무한히 반복된다.
1 2 3 4 5 6 7 8 9 10 11 12 13 | package castingex; public class Overflow { public static void main(String[] args) { byte b1 = (byte)128; // -128 byte b2 = (byte)129; // -127 System.out.println(b1); System.out.println(b2); } } | cs |
'JAVA > JAVA1' 카테고리의 다른 글
JAVA1_day05 | 연산자 (0) | 2017.12.13 |
---|---|
JAVA1_day04 | 추가공부 (0) | 2017.12.12 |
JAVA1_day03 | 추가공부 (0) | 2017.12.12 |
JAVA1_day03 | 자료형 (데이터 타입) (0) | 2017.12.12 |
JAVA1_day02 | 출력문2, 변수 (0) | 2017.12.08 |