[IT국비지원교육_코딩_비전공자] 변수와 상수/ 리터럴 / 기본형&참조형 변수타입 / printf( ) / 화면에서 입력받기Scanner
지난 시간에 자바개발환경 구축(운영서버/개발도구 세팅)을 완료하고
eclipse를 사용하여 "Helloworld"라는 간단한 문장 출력 프로그램을 작성해봤다.
이를 기반으로 변수와 상수라는 새로운 개념에 대해 알아보자.
변수 : 하나의 값을 저장할 수 있는 메모리 공간
메모리공간 => 램
메모리 주소 => 각각의 저장공간에 연속적인 번호를 붙인 것
변수 => 특정 메모리 영역에 이름을 붙이고 주소를 대신해 이름을 이용해서 메모리에 값을 저장하고 읽을 수 있게 한 것
*변수를 사용하는 이유
: 메모리에 값을 저장하거나 읽을 때 우리는 메모리 주소를 이용해야 하는데 메모리 주소는 숫자라서 기억하기 힘들다
예를들어 사람의 나이를 저장할 공간에 age라는 사람이 이해하기 쉬운 이름을 붙이면 값을 읽고 쓰는데 더욱 편리함.
변수는 단 하나의 값만 저장할 수 있기 때문에 변수에 새로운 값을 저장하면 기존에 저장되어 있던 값은 지워지고 새로 저장한 값만 남게 된다
메모리에 값을 저장하기 위해서는 먼저 '변수를 선언해야 한다'
변수 선언이란 => 어떤 값을 저장할 공간을 마련하는 것
변수 선언 방법 => 변수타입 변수이름 ;
변수의 초기화 : 선언된 변수에 처음으로 값을 저장하는 것
변수의 종류 => 클래스변수, 인스턴스변수, 지역변수
*변수의 값 읽어오는 방법
: 변수의 값이 필요한 곳에 변수의 이름을 적는다
상수 : 값을 한번만 저장할 수 있는 변수 (한번 저장한 값은 변경할 수 없음)
*변수와 선언/초기화 방법 모두 동일하나 변수명 앞에 final 키워드가 붙는다
*값의 타입에 맞는 변수 타입으로 변수를 선언/초기화 해야 함
값의 타입 => 문자 char, 문자열 String
정수(숫자) byte, short, int, long, 실수(소수점) float, double
논리 boolean
변수 타입 => 기본형 Primitive type & 참조형 Reference type
기본형 8개 고정 기본형을 제외한 나머지 String, System 등 마음대로 추가 가능
실제 값을 저장함 메모리 주소를 저장함
참조변수는 객체의 주소를 저장하기 위한 것
1) 객체를 생성하고(객체의 주소가 생김)
2) 객체의 주소를 참조변수에 저장
3) 객체의 주소가 저장된 참조변수를 이용해서 객체를 사용함
println( ) 메서드 : 출력형식 지정 불가 (10진수로만 출력됨) / 출력 후 항상 줄바꿈함
printf( ) 메서드 : 출력형식 지정 가능 / 출력 후 줄바꿈 하지 않아서 %n 개행문자 필요
Scanner 클래스 : 화면으로부터 데이터를 입력받는 기능을 제공하는 클래스
*클래스란, 어떠한 특정 기능을 제공하는 것 (필요한 기능이 있을 때 어떤 클래스를 사용하는지만 알아두자)
Scanner 클래스를 사용하려면
1) import문을 추가해야 한다 (클래스마다 필요 여부가 다름)
*사용하려는 클래스가 어떤 패키지에 속했는지 알려주기 위한 것
import java.util.* 단축키 Ctrl + Shift + O
2) Scanner 클래스의 객체를 생성한다 (클래스마다 객체 생성 필요 여부가 다름)
3) 생성한 Scanner 클래스의 객체를 사용한다
String input = scanner.nextLine(); // 화면에서 입력받은 내용을 input에 저장
참조변수 타입 String + 변수명 input // 화면에서 한 행(nextLine)의 라인단위로 입력받는 방법
int num = Integer.parseInt(input); // 문자열(input)을 숫자(num)으로 변환
int num = scanner.nextInt(); // 추천하지 않음 (위의 두 문장으로 작성하는 방법 추천)
// 실수의 경우 nextFloat로 쓴다
문자열 -> 숫자 ('Interger.parseInt()'라는 메서드 사용)
숫자 -> 문자열 (숫자 + "")
Scanner scanner = new Scanner();
String input = scanner.nextLine();
int num = Ineteger.pareseInt(input);