[JAVA] 변수, 변수의 타입, 입출력, 형변환

1. 변수(variable)


변수란, 단 하나의 값을 저장할 수 있는 메모리 공간

 

  • 변수 선언
변수타입 변수이름;

 

 

  • 변수 초기화
변수타입 변수이름 = 값;  // 오른쪽 값이 왼쪽의 변수에 대입

 

 

  • 변수 화면에 출력
System.out.println(변수);

 

 

두 변수의 값 교환(swap)

public class Swap {

	public static void main(String[] args) {
		
		int x = 10, y = 20, tmp;
		
		System.out.println("x:" + x + " y:" + y); // x:10 y:20
		
		tmp = x;
		x = y;
		y = tmp;
		
		System.out.println("x:" +x + " y:" + y); // x:20 y:10
	}

}

※ 덧셈연산자(+)는 두 값을 더하기도 하지만, 문자열과 숫자를 하나로 결합하기도 함

 

 

  • 변수의 명명 규칙

  ① 대소문자 구분

  ② 예약어 사용 x (예약어 ex. true, class, new, if . . .)

  ③ 숫자로 시작 x

  ④ 특수문자는 '_' 와 '$' 만 가능

 

 

 

2. 변수의 타입


  • 기본형

: 실제 값 저장

: 모두 소문자로 시작

: 일정한 크기의 메모리를 가지고, 그 메모리 안에 값 저장

: 논리형(Boolean), 문자형(char), 정수형(byte, short, int, long), 실수형(float, double) 존재

기본형 종류. 크기는 Byte 단위

 

 

  • 논리형(boolean)

: true, false 중 하나 저장. 기본값은 false

// 논리형
boolean b = true;

 

 

  • 문자형(char)

: 단 하나의 문자만 저장. 유니코드 사용. %d로 출력하려면 변수 앞에 (int) 붙여야 함

특수문자

\t : 탭(Tab)
\b : 백스페이스
\n : 줄바꿈
\\ : 역슬래쉬
\' , \" : 작은따옴표, 큰따옴표
// 문자형
char ch = 'a';

 

 

  • 정수형(byte, short, int, long)

: 정수값 저장. 기본 자료형은 int

// 정수형
byte bt = 1;
short s = 2;
int i = 4;
long lg = 8L; // 접미사 l, L 필요

 

 

  • 오버플로우
최대값 + 1 = 최소값
최소값 - 1 = 최대값

 

 

  • 실수형(float, double)

: 실수값 저장. float 정밀도는 7자리, double 정밀도는 15자리

// 실수형
float f = 3.14f; // 접미사 f 필요
double d = 3.141592;

 

 

  • 참조형 : 기본형을 제외한 나머지. 객체의 주소 저장
Date today = new Date(); // Date 객체를 생성해서 그 주소를 today에 저장

 

 

  • 문자와 문자열

: 문자 리터럴은 '' 안에 단 하나의 문자만 저장. 빈 문자 불가능

char ch = 'J'
char ch2 = ''; // 에러
char ch3 = ' ' // 공백문자는 가능

 

: 문자열 리터럴은 "" 안에 빈 문자열 가능. 참고로 String은 클래스

String name = new String("Java"); // String 객체 생성해서 name이라는 변수 안에 "Java" 문자열 삽입
String name2 = "Python"; // 간편하게 이런 식으로 표현도 가능

 

 

  • 상수(constant)

: 한 번 값을 저장하면 다른 값으로 변경 불가능. 변수 앞에 'final' 붙이면 됨

final int MAX_SPEED = 10; // 상수 이름은 대문자로 하는 것이 암묵적인 관례
MAX_SPEED = 20; // 에러

 

 

  • 리터럴(literal)

: 수학에서 말하는 상수. 그 자체로 값을 의미

 

 

 

3. 입력(Scanner)과 출력(print)


  • 출력
System.out.println(변수); // 변수 값 그대로 출력. 문장이 끝나면 자동 줄바꿈
System.out.print(변수); // 변수 값 그대로 출력. 자동 줄바꿈 x

 

 

  • 형식화된 출력

: 지시자를 통해 같은 값을 여러 방식으로 출력 가능. 자동 줄바꿈 x

System.out.printf("age = %d%n", 20); // %d는 10진수 정수로 출력. %n은 줄바꿈
%b : 불리언(Boolean) 형식으로 출력
%d : 10진 정수의 형식으로 출력
%o : 8진 정수의 형식으로 출력
%x, %X : 16진 정수의 형식으로 출력
%f : 부동 소수점의 형식으로 출력
%e : 지수 표현식의 형식으로 출력
%c : 문자로 출력
%s : 문자열로 출력

 

 

  • 10진수를 2진수로 변환

Integer.toBinaryString(int i) : 정수를 2진수로 변환해서 문자열로 반환

public class IntToBin {

	public static void main(String[] args) {
		num = 20;
		System.out.printf("num 이진수 = %s%n", Integer.toBinaryString(num));
	}

}

 

 

  • 덧셈 연산자

   피연산자 모두 숫자 : 두 수를 더함

   피연산자 중 어느 한 쪽이 String이면 나머지 한 쪽을 String으로 변환한 다음 두 String을 결합

// 문자열 + any type -> 문자열 + 문자열 -> 문자열
System.out.printf("7" + 7); // -> "7" + "7" -> "77"
System.out.printf("" + 7 + 7); // -> "7" + 7 -> "7" + "7" -> "77"

// any type + 문자열 -> 문자열 + 문자열 -> 문자열
System.out.printf(7 + 7 + ""); // -> 14 + "" -> "14" + "" -> "14"

 

 

  • 입력 (Scanner 클래스 이용)

   1) 맨 위에 import java.util.*; 추가

   2) Scanner 클래스 객체 생성

       Scanner scanner = new Scanner(System.in);

   3) 입력받은 문자열 한 행을 input에 저장

       String input = scanner.nextline();

 

 

입력받은 문자열을 정수로 변환

 

Integer.parseInt() 메소드 사용
     String input = scanner.nextline(); // 입력받은 내용을 input에 저장
      int num = Integer.parseInt(input); // input의 내용을 int 타입의 num에 저장


nextInt() 메소드 사용
      int num = scanner.nextInt(); // 정수를 입력받아서 num에 저장
import java.util.*;

public class ScannerEx {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		
		System.out.print("두자리 정수를 하나 입력해주세요.>");
		String input = scanner.nextLine();
		int num = Integer.parseInt(input);
		
		System.out.printf("입력내용 :%s%n", input);
		System.out.printf("num=%d%n", num);
	}

}

 

 

 

4. 형변환


  • 형변환

: 변수 또는 상수의 타입을 다른 타입으로 변환

: loat 타입의 값을 int 타입으로 변환할 때 소수점 이하 값은 버림으로 처리

 

 

  • 형변환 방법

   (타입)피연산자;  // 피연산자의 값은 형변환 후에도 아무런 변환 없다.

double d = 85.4;
int i = (int)d; // double 형의 값을 int 형으로 형변환
		
System.out.println("i="+i);
System.out.println("d="+d);

 

 

  • 자동 형변환

: 변수가 저장할 수 있는 값의 범위보다 더 작은 값을 저장하려는 경우 컴파일러가 자동으로 형변환

float f = 1234; // int 형의 값이 float 형으로 자동 형변환