※우선 지난번에 했던 변수 사용법에 관해 예제를 풀어보면서 다시 한번 개념 정리를 해보도록 할 것입니다.
그리고 오늘 수업했던걸 차례대로 복습을 할 예정입니다.
※변수 사용법 예제
//실수형
int i = 10;
float f = 10.0f;
double d = 10.0;
System.out.println("f : " + f); // 10.0
System.out.println("d : " + d); // 10.0
System.out.println("d+f : " + (d+f)); // 20.0
System.out.println("d+i : " + (d+i)); // 20.0
1) System.out.println("d+f : " + (d+f));
-> 앞에 출력문이 문자면 뒤에 꺼도 문자로 보게 된다. 그래서 뒤에 d+f 부분이 숫자로 결괏값이 나오게 하려면 () 안에 명시해줘야 한다.
2) System.out.println("d+i : " + (d+i));
-> 실수 d와 정수 i를 더하게 되면 더 큰 값의 자료형을 따라가게 돼있다. 즉, 정수보단 실수가 더 세므로 실수 d의 자료형을 따라가게 된다. 그래서 실수로 결괏값이 나타나게 된다.
char c = 'A';
String s = "홍길동";
System.out.println("c : " + c); // A
System.out.println("s : " + s); //홍길동
System.out.println("c+s : " + (c+s)); // A홍길동
System.out.println("c+s : " + c+s);// A홍길동
-> 문자형을 더하면 괄호를 치던 안치던 앞에 출력문이 있는 경우에는 똑같은 결괏값이 나오는 걸 볼 수 있다.
※Java-Scanner
1. 기본적인 데이터 타입들을 Scanner의 메서드를 사용해 입력받을 수 있다.
-> String(문자열)로 입력받고 싶으면 스캐너 변수에 next() 나 nextLine()을 입력하고, int(정수)로 입력받고 싶다면 nextInt()를 사용하여 입력하면 해당 타입으로 입력이 됩니다.
2.Scanner을 사용할 시 util 패키지를 경로의 Scanner 클래스를 호출해야 한다.
-> 자바에서 쓰이는 대부분의 클래스는 lang 패키지가 아니라면 import을 통해 호출해야 줘야 한다.
스캐너의 경우는 java.util 패키지에 있다. (alt-enter) 키를 활용해 import 할 수 있다.
※ Java-Scanner 예제
import java.util.Scanner;
-> 이렇게 스캐너를 쓰기 전에 메인클래스인(public 클래스) 위에다가 import 선언을 먼저 해야 된다.
' 남이 만들어놓은 scanner라는 클래스 갖고 와 쓴다는 뜻'이다.
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("이름을 입력하시오");
String name = sc.nextLine();
System.out.println("출력 : " + name);
System.out.println("나이 입력하시오");
int age = sc.nextInt();
System.out.println("나이 : " + age);
System.out.println(name+ "님의 입력한 나이는 " + age + "살 입니다.");
}
1) Scanner sc = new Scanner(System.in);
-> 스캐너라는 객체 (인스턴스) 생성해야지 사용 가능합니다. (system.in(입력) 은 system.out(출력)에 반대말로 생각하면 될 것이다.)
-> 스캐너는 자바스크립트의 prompt의 개념과 같다고 보면 된다. 한번 위와 같이 선언하면 나중에 쓸 때는 변수명과 자료타입을 다르게 하여 여러 번 입력받을 수 있다.
2) System.out.println("이름을 입력하시오");
-> 어떤 것을 입력받을 것인지 알려주는 역할을 한다.
3) String name = sc.nextLine();
-> 스캐너로 입력받는 것은 nextLIne() 즉, String 타입 문자값으로 입력받는다는 뜻이다.
-> sc(스캐너 변수에) nextline() 문자값을 입력받는 것을 name이라는 변수에다가 저장한다는 뜻입니다.
3-1) int age = sc.nextInt();
-> nextlnt(), 즉 int 타입 정수값으로 입력받는다는 뜻입니다.
System.out.println(age>=19?"입장가능":"입장불가");
4) 이렇게 삼항조건식으로 스캐너로 입력받은 나이가 19살 이상이면' 입장가능', 19살 미만이면 '입장불가' 조건식을 나타낼 수 있다.
※Java-형변환(casting)
1.boolean 형을 제외한 모든 자료는 형변환 가능. (다만 숫자를 문자열로 변환하는 건 조금 다르게 해야 됨)
1) '자동 형변환'
2) '캐스팅' 작업을 해야 하는 형변환
2. 변환 방법
1) 숫자 -> 다른 숫자형
(변환할 타입) 값
ex) double d = 3.14;
int i = (int) d; <= 이렇게 하면 3만 저장됨
2) 숫자 -> 문자
String 클래스를 이용해야 함.
ex) String.valueof(숫자)
3. 자료형 확인
기본형은 타입 확인이 안 되고
참조형만 확인 가능하다
자바스크립트의 typeof처럼 '자료형은 뭐다'이런 건 없다.
이 데이터가 이거냐??처럼 물어보면 true 나 false로 대답해 주는 정도임.
ex) 데이터(변수) instanceof 자료형
a instanceof String
*true 일 때만 인식이 되고 false일 때는 아예 프로그램이 되지 않고 오류가 뜬다.
*instanceof는 부모자식(참조) 관계에서만 사용가능함.
※Java-형변환 예제
double d = 3.14;
int i = (int)d; // 3.14 더블값을 int 로 형변환 해서 정수형으로 바꾸고 소수점 이하는 없어지게된다.
System.out.println("i: " + i); // 3
System.out.println("== 자동 형변환 =="); // (문자 + 숫자= 문자)
System.out.println("홍길동 " + 10); //10 도 문자형으로 변형
//앞에 홀길동 이라는 출력문이 있으니 뒤에 10도 문자형으로 자동으로 변형이된다.
System.out.println("== 수동 형변환 ==");
//정수 -> 문자
int num =65; //아스키 코드
char ch = (char)num; // 65는 아스키코드로 문자로 변형하면 대문자 A를 뜻한다.
System.out.println(ch);
System.out.println((int)'A');
//문자 -> 정수
char ch2 = 'A';
System.out.println((int)ch2);
//실수 -> 정수
double d2 = 3.14;
int i2 = (int)d2; // 소수점 뒤를 날려버림 3.14 ->3
System.out.println(i2);
※Java-형변환 예제 2 (중요)
=> 숫자형 -> 문자형, 문자형->숫자형
* String , Integer는 클래스를 뜻하고. 뒤에 거는 정의된 메서드를 뜻한다.
1) String.valueof(숫자) -> 숫자를 문자로 바꿔줌
2) Integer.toString(숫자) -> 숫자를 문자로 바꿔줌
3) Integer.valueOf(문자열) -> 문자열을 정수숫자로 바꿔줌(정수만가능)
4) Integer.parseInt(문자열) -> 문자열을 숫자로 바꿔줌
5) Double.valueOf("20.2") -> 문자열을 실수 더블로 바꿔줌
String s = String.valueOf(10.1);// 숫자형을 문자로바꿔줌
System.out.println("s: " + s);
System.out.println(s instanceof String);
Integer i1 = Integer.valueOf("20"); //문자형을 정수로 바꿔줌
System.out.println("i1:" + i1);
System.out.println(i1 instanceof Integer);
Double d1 = Double.valueOf("20.2"); //문자형을 실수로 바꿔줌
System.out.println("d1:" + d1);
System.out.println(d1 instanceof Double);
String s1 = Integer.toString(100); //정수만 가능.
String s2 = Double.toString(100.01);
System.out.println(s1 + ", " + s2);
System.out.println(s1 instanceof String); //문자형 true
System.out.println(s2 instanceof String); //문자형 true
// 문자열 -> 숫자
Integer num3 = Integer.parseInt("100");
System.out.println("num3: " + num3);
System.out.println("num3은 정수냐? " + (num3 instanceof Integer));
Double num4 = Double.parseDouble("100.1");
System.out.println("num4: " + num4);
System.out.println("num4은 실수냐? " + (num4 instanceof Double));
// ///////////////////////////////////////////////////
Number num10 = Integer.parseInt("100");
System.out.println("num10은 정수냐? : " + (num10 instanceof Integer)); // true
Number num20 = Double.parseDouble("100.1");
System.out.println("num20은 실수냐? : " + (num20 instanceof Integer)); // false
'국비교육' 카테고리의 다른 글
국비지원 55일차 (JAVA - 배열) (0) | 2023.10.12 |
---|---|
국비지원 54일차 (JAVA - 연산자, 문자열,조건문(if,switch공식)) (0) | 2023.10.11 |
국비지원 52일차 (JAVA - 출력문) (1) | 2023.10.09 |
국비지원 51일차 (JAVA 자료형 및 변수) (1) | 2023.10.09 |
국비지원 50일차 (JAVA 단축키 및 문법) (1) | 2023.10.08 |