# 복습


#자료형 (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