Java 1일차 : 자바의 자료형과 입출력

자바언어는 컴파일 언어이면서 인터프리터 언어이다
(java파일을 컴파일해서 class 파일이 생성되면 인터프리터 방식으로 실행됨)

자바의 기본 자료형

  1. 문자 char(2byte) : 한글자 저장할 크기(영문이든 한글이든)
  2. 숫자
    정수 : byte(1byte), short(2), int(4), long(8)
    실수 : float(4), double(8)
    => float 으로 선언하려면 초기값을 줄 때 뒤에 f를 붙여야함
    (기본 소숫점이 찍힌 숫자는 무조건 double로 인식함)
  3. Boolean : true / false
  4. 문자열 : 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);
  1. 숫자입력받기
int [변수명] 1;
변수1 = 변수명.nextInt(); 
  1. 문자열 입력받기
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);

  }
}

Categories:

Updated:

Comments