Java 1일차 : 자바의 자료형과 입출력
자바언어는 컴파일 언어이면서 인터프리터 언어이다
(java파일을 컴파일해서 class 파일이 생성되면 인터프리터 방식으로 실행됨)
자바의 기본 자료형
- 문자 char(2byte) : 한글자 저장할 크기(영문이든 한글이든)
- 숫자
정수 : byte(1byte), short(2), int(4), long(8)
실수 : float(4), double(8)
=> float 으로 선언하려면 초기값을 줄 때 뒤에 f를 붙여야함
(기본 소숫점이 찍힌 숫자는 무조건 double로 인식함) - Boolean : true / false
- 문자열 : String = “문자열을 적는다”;
예시
package test.day0403;
class Test3
{
public static void main (String []arr)
{
//문자 타입을 선언해보자
char a1 = 'A';
char a2 = '가';
String s1 = "Happy";
String s2 = new String("Nice");
System.out.println(a1);
System.out.println(a2);
System.out.println(s1);
System.out.println(s2);
//정수 타입을 선언해보자
byte b1 = 127;
byte b2 = (byte)220; //강제 형변환(cast연산자)
System.out.println(b1);
System.out.println(b2);
int b3 =(int)3.5; //강제 형변환 시 소숫점 아래 절삭
System.out.println(b3);
}
}
Scanner
- jdp 5.0에서 추가된 클래스
- 패키지 : java.util
선언하는 방법
Scanner 변수명 = new Scanner(System.in);
- 숫자입력받기
int [변수명] 1;
변수1 = 변수명.nextInt();
- 문자열 입력받기
String 변수2;
변수2 = 변수명.nextLine(); //한줄 통채로 읽음
예시
package test.day0403;
import java.util.Scanner;
public class ScannerTest04 {
public static void main(String[] args) {
//변수선언
Scanner sc = new Scanner(System.in);
String msg = "";
int age = 0;
System.out.println("문자열을 입력하세요.");
msg = sc.nextLine(); //한줄 읽기
System.out.println("메세지출력: " + msg);
System.out.println("나이를 입력하세요.");
age = sc.nextInt(); //정수 입력받기
System.out.println("내 나이는" + age +"입니다."); //묵시적 형변환 (int->String)
System.out.println("내 나이는" + (age-2) +"입니다.");
//괄호를 주면 int로 처리 후 String으로..
}
}
묵시적 형 변환
- String + int = String
- int + int = int
- double + int = double
- int + long = long
- short + int = int
예)
5/2 = 2
5/2.0 = 2.5
변수인 경우엔 정수 ->실수 하고 싶으면 강제 형변환을 줘야함
(double)a / b 또는a / (double)b 요로케
강제 형변환은 임시적이므로 실제 변수의 유형까지 바꾸진않음
예시
package test.day0403;
public class DataType5 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int a = 5;
int b = 2;
int s1 = 0;
double s2 = 0;
double s3 = 0;
s1 = a/b;
s2 = a/b; //정수끼리의 계산은 정수가 된 후 실수형으로 바뀔뿐임.
s3 = (double)a/b; //강제형변환 후 제대로 실수계산이 된다.
System.out.println("s1 = " + s1);
System.out.println("s2 = " + s2);
System.out.println("s3 = " + s3);
}
}
콘솔 출력 메서드
반드시 package 행 밑에 importjava.util.Scanner; 를 넣어줘야한다
- system.out.println() : 출력후 라인 넘김
- system.out.print() : 출력후 커서가 그대로 있음
- system.out.printf() : 변환기호를 이용해서 출력하는 메서드
- %d 정수, %f 실수, %s 문자열, %c 문자
- %05d전체5자리인데남는자리를 좌측에0으로채워지게
- %5d전체5자리인데남는자리가 좌측에공백으로채워지게
- %5.1f전체5자리, 소숫점이하 1자리
예시
package test.day0403;
public class PrintTest6 {
public static void main(String[] args) {
System.out.print("print method");
System.out.print(" test");
System.out.println("");
int a = 12;
double b = 23.5;
System.out.printf("%d\n", a);
System.out.printf("%f\n", b);
System.out.printf("%5d\n", a); //전체 5자리 + 좌측에 공백
System.out.printf("%05d\n", a); //전체 5자리 + 좌측에 0으로 공백
System.out.printf("%5.1f\n", b); //전체 5자리 + 좌측공백 + 소수1자리
System.out.printf("%05.1f\n", b); //전체5자리 + 좌측0으로공백 + 소수1자리
System.out.printf("%-5d*\n", a); //-를 주면 뒤에 공백이 붙음
String s = "Happy Day";
System.out.printf("%s\n", s);
System.out.printf("%30s\n", s);
System.out.printf("%-30s\n", s);
System.out.printf("%s, %d, %5.1f\n", s, a, b);
System.out.printf("%c, %c, %c\n", 'A', 'B', 'C');
}
}
실습문제
콘솔로 이름, 나이, 키 입력받은 뒤 예쁘게 출력하기 (키는 printf 로 출력)
package test.day0403;
import java.util.Scanner;
public class Exam0403 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String userName = "";
int userAge = 0;
double userHeight = 0.0;
System.out.println("이름을 입력하세요.");
userName = sc.nextLine();
System.out.println("나이를 입력하세요.");
userAge = sc.nextInt();
System.out.println("키를 입력하세요.");
userHeight = sc.nextDouble();
System.out.println("이름: " + userName);
System.out.println("나이: " + userAge + "세");
System.out.printf("키: %5.1f Cm", userHeight);
}
}
Comments