[변수]기본자료형, 형변환, 출력메소드, Scanner

EUNJI LEE·2023년 4월 10일
0

JAVA

목록 보기
1/12

[변수]자료형, 형변환, 출력메소드, Scanner

변수

변수란 데이터를 저장하는 공간이라고 보면 된다.

RAM에 데이터를 저장하기 위해서 변수를 선언하고 리터럴(데이터)를 집어넣는다.

코딩을 하면서 반복되는 수나 고정하기 위한 값(에러 코드 등…)을 매번 입력하는 건 코드의 양의 많아지면서 비효율적이기 때문에 가독성 증가, 코드양 감소 등 효율을 위해서 변수를 사용한다.

그리고 메모리에 값을 기록하기 위해서는 변수부터 만들어 주어야 한다. 그래야 ”특정 위치에 저장되어있는 특정 값“을 불러와서 사용할 수 있기 때문이다.

변수는 선언과 동시에 초기화를 꼭 시켜줘야한다. 선언하면서 리터럴을 대입해도 된다. 변수를 선언한다는 건 지정된 장소에 지정된 값을 주는 것이라고 기억하면 된다.

변수 변수자료타입 변수명; 으로 선언한다.

  • 변수 선언 규칙 보기
    • 예약어를 변수명으로 사용할 수 없다.
      char public; //오류 발생
    • 변수명은 대소문자를 구분, 명칭 길이에 제한 없다.
      int testNum;
      int testnum; //위,아래 둘은 다른 변수다.
      int testtesttest; //길어져도 오류 발생하지 않는다.
    • 변수명의 첫글자를 숫자로 사용할 수 없다.
       boolean 1flag; //오류발생
       boolean flag1;
    • 특수 기호는 언더바(_)와 달러($)만 가능하다.
        byte _test;
        byte $test;
        byte #test; //오류 발생
    • 동일 영역 안에 변수명은 중복될 수 없다. (동일한 중괄호 안)
      public static void main(String[] args) {
         int a;
         int a; //중복될 수 없다.
      }//main 닫음
      int a; //main 안에 선언했던 것과 다른 것으로 분류

변수의 자료형

변수는 아무렇게나 선언하는 것은 아니고 저장할 값에 맞는 자료형을 맞춰 선언 해주어야 한다.

  • 논리형 : boolean
  • 문자
    • 문자 : char
    • 문자열 : String
  • 숫자
    • 정수 : byte, short, int, long
    • 실수 : float, double
  • 숫자 자료형은 자료형의 크기가 작은 순서대로 적었다.

*노란색은 기본 자료형.

*String은 클래스지만 문자열은 자주 쓰이기 때문에 java에서 하나의 자료형으로 만들어 놨다.

저장 공간은 무한대가 아니기 때문에 저장 공간 활용을 위해 데이터 크기와 형식에 맞는 자료형을 선언해주어야 한다.

형변환

컴퓨터에서 값을 처리할 때는 같은 종류의 자료형끼리 대입, 계산이 되기 때문에 형변환이 필요하다.

  • 자동 형변환 컴파일러가 자동으로 값의 범위가 작은 자료형을 큰 자료형으로 변환한다. 작은 자료형이 큰 자료형으로 변환되는 것이기 때문에 데이터 손실이 없다.
    //int 자료형을 long 자료형에 대입하려고 할 때
    int num=100;
    long lnum=num; //long 자료형이 int자료형을 포함하기 때문에 자동 형변환이 된다.
    
    //int 자료형과 double 자료형의 연산
    System.out.println(10+10.5); //20.5 출력
    //int 자료형이 double 자료형으로 자동 형변환이 된다.
    //10.0+10.5 계산이 이루어진다.
  • 강제 형변환 범위가 큰 자료형을 강제로 작은 자료형으로 변환한다. 때문에 데이터 손실이 발생할 수 있다. 데이터의 변형, 손실을 감수하고 변환한다. 변환할 자료형을 괄호 안에 입력해서 사용한다.
    int num=(int)10.5;
    //int형으로 선언된 변수 안에 10.5 값을 대입하기 위해 강제 형변환을 사용했다.
    //소수점 아래 부분은 날라간 상태로 num에 저장한다. ->데이터 손실
    System.out.println(num); //10 출력

출력 메소드

  • System.out.print() () 안에 입력한 값을 모니터에 출력해주는 메소드이다.
    System.out.print("Hello, World"); //Hello, World 출력
    System.out.print(2023); //2023 출력
    int num = 10;
    System.out.print(num); //10 출력
    위처럼 세 개의 출력 메소드를 연달아 입력했을 때 콘솔 화면에는 Hello, World202310 ←이렇게 출력이 된다. 줄바꾸는 방법을 컴퓨터에게 따로 입력해주지 않았기 때문에 출력값만 그대로 쭉 나열하게 된다.
  • System.out.println() () 안에 입력한 값을 모니터에 출력하고 자동으로 줄바꿈을 실행해주는 메소드이다.
    System.out.println("Hello, World"); //Hello, World 출력
    System.out.println(2023); //2023 출력
    int num = 10;
    System.out.println(num); //10 출력
    위와 똑같이 출력했지만 콘솔 화면에는
    Hello, World
    2023
    10

    이렇게 출력이 된다.
  • System.out.printf() (”출력할 형식”, 데이터1, 데이터2, …) 같은 방식으로 입력한다. 줄바꿈은 없다. %d : 정수형
    %c : 문자
    %s : 문자열. 앞에 숫자를 붙여 원하는 공간을 확보해서 표현할 수 있다. 양수는 오른쪽 정렬, 음수는 왼쪽 정렬.
    %f : 실수. 소수점 아래 6자리까지 기본으로 나타낸다. f앞에 숫자를 붙여 원하는 소수점 아래 자릿수를 지정할 수 있다.
    int num = 20;
    String name = "LEEJI";
    System.out.printf("내 출석 번호는 %d이고 이름은 %s입니다.",num,name);
    //내 출석 번호는 20이고 이름은 LEEJI입니다. 출력
    
    //%f의 소수점 아래 표시
    System.out.printf("내 키는 %f",165.5); //165.500000 출력
    System.out.printf("내 키는 %1f",165.5); //165.5 출력
  • 문자열에 escape 문자 활용 하기 \t : 정해진 공간만큼 띄어쓴다. 일반 띄어쓰기보다는 더 넓은 공간을 띄어쓴다. \n : 줄 바꿈 \, \’, \” : 문자열 사이에 특수 문자를 넣어야 할 때 사용한다. \u : 유니코드를 표시할 때 사용한다.
    String msg = "그가 \"소리쳐\"라고 말했다";
    System.out.println(msg); //그가 "소리쳐"라고 말했다 출력
    String path = "c:\\user\\java";
    System.out.println(path); //c:\user\java 출력

Scanner

사용자로부터 입력되는 정수, 실수, 문자열을 처리하는 클래스이다. 사용자로부터 키보드로 입력되는 값을 받아올 때 사용한다.

Scanner를 사용하기 위해 import를 작성해준다. 패키지 선언부와 클래스 선언부 사이에 입력한다.
import java.util.Scanner;

new 생성자를 사용해 Scanner 생성을 해준다.
Scanner sc = new Scanner(System.in);


scanner 사용하면 프로그램이 문제 없이 실행되더라도 이런 메시지 창이 뜨는데 scanner를 안 닫아줘서 뜨는 메시지 창이다. 프로그램 실행 자체에 영향을 미치지는 않지만 거슬리면 **sc.close();** 를 작성해서 닫아주면 사라진다.

  • 정수 값 입력 받기 : sc.nextInt();
    System.out.println("나이 : ");
    //사용자가 어떤 데이터를 입력해야하는지 알 수 있게 화면에 먼저 출력해준다.
    int age=sc.nextInt(); //정수 데이터를 받을 변수 선언
    System.out.println("입력한 나이는 : "+age);
    //저장된 값을 확인하기 위해 화면에 변수 출력
  • 실수 값 입력 받기 : sc.nextFloat(); 또는 sc.nextDouble();
    System.out.println("키 : ");
    //사용자가 어떤 데이터를 입력해야하는지 알 수 있게 화면에 먼저 출력해준다.
    double height=sc.nextDouble(); //소수점까지 받을 수 있는 double 자료형 변수 선언
    System.out.println("입력한 키는 : "+height);
    //저장된 값을 확인하기 위해 화면에 변수 출력
  • 문자열 입력 받기 : sc.next(); 또는 sc.nextLine(); sc.next(); 는 공백을 기준으로 데이터를 받는다. 따라서 사용자가 변수 name에 이름을 입력하기 위해 LEE JI 를 입력했을 때 공백 뒤에 값은 날아가고 name에는 LEE만 저장된다. 한글 이름은 띄어쓰기 없이 쓰는 경우가 보통이지만, 영어 이름 같은 경우 성과 이름을 띄어서 쓰는 경우가 있으니 sc.nextLine(); 으로 받으면 좋다.
    System.out.println("이름 : ");
    //사용자가 어떤 데이터를 입력해야하는지 알 수 있게 화면에 출력해준다
    String name=sc.next(); //문자열 데이터를 받을 수 있는 변수 선언
    System.out.println("입력한 이름은 : "+name);
    //입력한 값을 확인하기 위해 화면에 저장된 변수를 출력
    
    sc.nextLine();
    //sc.nextLine() 사용 전에 버퍼를 비워준다.
    
    System.out.println("주소 : ");
    String address = sc.nextLine();
    //공백을 포함하는 데이터를 받을 수 있게 개행 기준으로 데이터를 받을 수 있게 한다.
    System.out.println("입력한 주소는 : "+address);
  • 문자 입력 해보기 : char 변수명 = sc.next().charAt(n);

💡sc.nextLine(); 사용 시 버퍼 비우기를 주의해야 한다. 다른 스캐너 메소드의 경우 값 입력 후 엔터를 쳤을 때 버퍼 안에 개행한 데이터가 남아있기 때문에 다른 스캐너 메소드를 실행 후 바로 nextLine()을 실행하면 값을 입력하지 않아도 버퍼 안에 남아있던 데이터 때문에 바로 실행이 끝나게 된다.

profile
천천히 기록해보는 비비로그

0개의 댓글