본문 바로가기

자바의 정석/변수

2

변수와 상수 그리고 리터럴

변수 = 단 하나의 값을 저장할 수 있는 공간

상수= 단 하나의 값을 저장할 수 있는 공간이지만 변경 불가  / 반드시  final을 붙여야함 

리터럴= 데이터 값

 

int age; = age라는 이름의 변수를 선언하는 것

int = 변수 타입

age= 변수 이름

 

 

두 변수의 값 교환하기

-> int x= 10;

    int y= 20;

    int tmp;  -> x 값을 임시로 저장할 변수를 선언해야함

 

 

변수의 타입

 

값(data) - 기본형   -논리형(boolean)

                              -문자형(char)

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

                              -실수형(float, double)

 

 

 

                -참조형(클래스의 이름이 참조 변수의 타입이 됨)

 

                                                          8bit                           16bit                          32bit                        64bit

정수형은 표현범위가 -2^n-1 ~ 2^n-1 -1 임.

예를 들어 byte = 1byte(8bit) 이기 떄문에 -2^7 ~ 2^7-1 -> -128~127임

 

 

리터럴의 타입과 접미사 

 

정수형          =  long 타입에만 l 붙임  없을경우 int 타입

실수형(소수) =  리터럴에 소수점 or 10의 제곱(E,e) , f, F, d, D가 있으면 실수형 리터럴임 (d, D는 생략 가능)

 

 

접두사

2진수  -> int binNum = 0b10;     -> 2진수 10 / 10진수로는 2

8진수  -> int octNum=  010;       -> 8진수 10 / 10진수로는 8

16진수 ->int hexNum= 0x10;     -> 16진수 10/ 10진수로는 16

 

'A' = 문자 리터럴  ->char

"A" = 문자열 리터럴  -> 변수의 타입이 String 이어야 저장 가능 -> ""; 빈 문자열도 가능

 

 

문자열 + any type = 문자열

 

문자열은 왼쪽부터 진행됨

""+7+7 -> "7"+7 -> "7"+"7" -> "77"

7+7+"" -> 14+"" -> "14"+"" -> "14"

 

 

 

형식화된 출력 - print(f)

 

println()의 단점 - 출력형식 지정 불가 / 10진수로만 출력가능

 

printf() = 출력형식 지정가능

System.out.printf("%.2f" , 10.0/3);    =  3.33  (소숫점 둘째자리까지 출력)

System.out.printf("%d", 0x1A); = 26  (10진수로 출력)

System.out.printf("%X", 0x1A); = 1A (16진수로 출력)

 

지시자 설명
%b 불리언(boolean) 형식으로 출력
%d 10진(decimal) 정수의 형식으로 출력
%o 8진(octal) 정수의 형식으로 출력
%x, %X 16진(hexa_decimal) 정수의 형식으로 출력
%f 부동 소수점의 실수 형식으로 출력
%e, %E 지수 표현식의 실수 형식으로 출력
%c 문자로 출력
%s 문자열로 출력 

이외 =  javaAPI -> Formatter 참고

 

예시

System.out.printf("age:%d year : %d\n" , 14 , 2017);   -> "age:14 year:2017\n" 으로 출력 

                                                          \n = printf는 줄바꿈을 자동으로 하지 않기떄문에 넣는 줄바꿈 문자(개행문자)임. 

 

System.out.printf("%d", 15) ;                                //15          10진수

System.out.printf("%o", 15);                                 //17           8진수

System.out.printf("%x", 15);                                 // f            16진수 

System.out.printf("%s", Integer.toBinaryString(15));   // 1111         

                                                  이진 문자열을 표현(중요X)

 

 8진수와 16진수에 접두사 붙이는 방법   (#추가)

 

System.out.printf("%#o", 15) ;                             // 017 

System.out.printf("%#x", 15);                              // 0xf

System.out.printf("%#X", 15);                              // 0XF

 

                                                                   12345

System.out.printf("[5d]%n", 10);              //[     10]         5자리 출력

 

System.out.printf("[%-5d]%n", 10);           // [10   ]       -는 왼쪽정렬 해줌

 

System.out.printf("[%05d]%n',  10);          //[00010]        빈자리에 0 채워줌

 

System.out.printf("[5d]%n", 123456);        // [123456]     5자리 출력이지만, 입력이 123456 7자리 라서 그대로 7자리 [123456] 출력

 

- 실수 출력을 위한 지시자 %f 

 

System.out.printf("%14.10f%n", d);      = 전체 14자리 중 소수점 아래 10자리 까지 표현하라는 뜻

1 2 3 4 5 6 7 8 9 10 11 12 13 14


1 . 2 3 4 5 6 7 8 9 0 0

소수점 앞자리에 빈자리는 공백, 소수점 뒷자리 빈자리는 0 으로 표기

 

 

 

2.4 화면에서 입력받기 -Scanner

 

Scanner -> 화면으로부터 데이터를 입력받는 기능을 제공하는 클래스 

 

Scanner 클래스를 사용하기위한 순서

1. import 문 추가 

import java.util.*;

2. Scanner 객체의 생성

Scanner scanner = new Scanner(System.in); 

  -> System.in 은 화면 입력

3. Scanner 객체 사용

int num = scanner.nextInt();

 -> 화면에서 입력받은 정수를 num에 저장 / nextInt는 정수를 뜻함 

String input = scanner.nextLine() ; 

int num = Integer.parseInt(input); 

 ->int num = scanner.nextInt(); 를 위와 같이 두줄로 쓸 수 있음 

  -> nextLine()은 하나의 행 

 

숫자를 문자열로 바꿀 때 = 숫자 + " " 

 

문자열을 숫자로 바꿀 떄 = Integer.parseInt() 메소드 사용