gi_dor

[Java] CH2 변수(variable) 본문

First/Java

[Java] CH2 변수(variable)

기돌 2022. 12. 27. 23:02


1. 변수(variable) 란?
 수학에서는 '변하는수'라고한다
하나의 값을 저장하기 위한 메모리 공간

2. 변수의 선언
1) 변수 선언 이유 : 값을 저장할 공간을 마련하기 위해 
2) 변수의 선언 방법  :  변수타입   변수 이름;        int  age; //  정수(int) 타입의 변수 age를 선언                                             

3. 변수의 저장 : 변수에 처음으로 값을 저장하는 것 

int age ;   // 정수 (ing) 타입의 변수 age를 선언
age = 25;   // 변수 age에 25를 저장

한줄 표현 : int age = 25;

 

int  x = 0;  // 변수 x를 선언 후 0 으로 초기화
int  y = 5;  // 변수 y를 선언 후 5로 초기화

한줄 표현  int x = 0  , int y =5;

 


4. 변수의 타입 
▶ 변수의 타입은 저장할 값의 타입에 의해 결정된다
▶ 저장할 값의 타입과 일치하는 타입으로 변수를 선언

값의 타입
'문자,숫자' 2개로 나뉘어지며, 숫자는 '실수 , 정수'로 나눌수있다


4-1 기본형 Primitive type
▶ 오직 8 개 boolean , char , byte , short , int ,long , float , double
▶ 실제 값을 저장 

▪ 논리형 : true  , false (1byte) 중 하나의 값으로 갖으며 , 조건식 , 논리적 계산에 사용
▪ 문자형 : 문자를 저장하는데 쓰이며 변수당  하나의 문자만 저장   // 여러 문자는 String 사용
▪ 정수형 : 정수 값을 저장하는데 쓰이며 주로 int (4byte) 와 long(8byte) 을 사용한다  
              byte(1byte) 는 이진데이터(이미지파일, 실행파일 같은)를 다루는데 쓰임
              short(2byte) 은 c언어와의 호환성을 위해 추가되었는데 잘 안쓰임.
▪ 실수형 : 실수 값( 소숫 점 )을 저장하는데 쓰이며 float(4byte) 와 double(8byte) 이 있다.

+ ) 1byte =  8bit  , 1bit = 2진수 1자리 

 

4-2 참조형 Reference type
▶ 기본형을 제외한 나머지 (String , System 등등)
▶ 메모리 주소를 저장 - 4byte 또는 8byte
 ▪ Date today ; // 참조형 변수 today 를 선언 , 변수의 type은 Date - 참조형
 ▪ today = new Date (); // today에  객체의 주소를 저장  [new Date() 객체생성]


5. 변수 , 상수 , 리터럴
▪ 변수 (variable) - 하나의 값을 저장하기 위한 공간
▪ 상수 (constant) - 변수처럼 '값을 저장하는 공간' , 그러나 한 번만 값을 저장 가능해 변경이 불가능 하다

int score = 100;
    score = 200;
    
final int MAX = 100; // MAX는  상수 , 값 변경 불가
          MAX = 200;  //에러


▪ 리터럴  - 그 자체로 값을 의미 (기존의 상수) 
                 상수를 '변경할수 없는 저장공간'으로 하기 때문에 이를 구분하기위해 상수를 '리터럴' 이라고한다

int score = 100;
   
final int MAX = 100; // MAX는  상수 , 100 은 리터럴

 

6. 문자와 문자열

char ch =  'J'; String s1 = "Java";
char ch = 'AB';  // 에러 String s2 = new String("Java");
String s = "ABC" ;  // 문자열 연속된 문자  

 

String s = "A";
String s = " " ; // 빈 공백 문자열
char ch = ' ' ;  // 빈 공백 문자
char ch = '';  // ' ' 안에 하나의 문자 필요

 

String s1 = "A" + "B";   // "AB"   
" " + 7    -->  " " + " 7 " 

 

" " +7 +7  --> "7" + 7 --> "7" + "7" --> "77"
7+7+ " "  --> 14 + " " --> "14"+ " "  --> "14"
문자열 + any type   ---> 문자열
any type + 문자열  ---> 문자열

 


 

1. 두 변수 교환하기

x의 값 20 y의 값 10으로 바꾸기 
int x = 10 , y = 20 ; 
int tmp ;  

tmp = x;  x의  값을 tmp 에 저장
x = y;    x의 값을 y에 저장
y = tmp;  tmp의 값을 y에 저장

 


2. printf () 출력

2-1  printf()의 단점 - 출력형식 지정 불가

▪ 실수의 자리수 조절불가 - 소수점 n 자리만 출력한다면 ?
   System.out.println(10.0/3);   //   3.33333333......

▪ 10진수로만 출력된다 - 8진수 16진수로 출력하려면 ?
  System.out.println(0x1A);  //  26 (10진수)


2-2 printf()로 출력 형식 지정가능
 System.out.printf("%.2f" , 10.0/3);   // 3.33      %.2f  소수점 2째 자리 까지만 출력
 System.out.printf("%d" , 0x1A);  // 26             %d  10진수
 System.out.printf("%X" , 0x1A);  // 1A            %X  16진수

 

▶  \n  혹은 %n  개행문자 (= 줄바꿈)   //   문자열 "   "  안에 입력 해야함



2-3 정수를 10 진수 8진수 16진수로 출력하기

개행문자로 띄어쓰기

 2진수로 표현하기 
 2진수로 출력하는 지시자 x
System.out.printf ( "%s" , Integer.toBinaryString(15));   //  1111 (2진수) 
  toBinary = 2진 
  String = 문자열




2-4  8진수와 16진수 접두사 붙이기   -  8진수 16진수라고 강조하는 표현
System.out.printf ( " %#o" , 15);  // 017
System.out.printf ( "%#x" , 15 );  // 0xf
System.out.printf ( "%#X" , 15);  //0X

 


2-5  실수 출력을 위한 지시자 %f  - 지수형식 %e  간략한 형식  %g
float f = 123.4567890f;
System.out.printf ("%f", f );  // 123.456787    - 소수점 아래 6자리까지 출력
▪ 123.456789 마지막 9 가아닌 7이 나온이유 ?
float type은 정밀도가 7자리이기 때문에  123.4567까지는 정확하게, 뒤에 87은 정확하지않아 의미없는 숫자가됨

double f = 123.456789;
System.out.printf ("%f", f );  // 123.456789
정밀도 높은 f보다 15자리 double을 주로씀


System.out.printf ("%e", f );  // 123.4568e+02    e+02 = 10의 제곱
System.out.printf ("%g", f );  //123.457   
지시자 g는  소수점 포함 7자리를 간략히 표현 마지막자리 6은 반올림해서 출력




2-6  
System.out.printf ("[%5d]%n" , 10);  // 오른쪽 정렬
System.out.printf("[%-5d]%n" , 10)  // 왼쪽 정렬
System.out.printf("[%05d]%n" , 10)  // 빈자리 0 으로 채움



2-7
%전체자리 . 소수점아래자리 f   - 전체 소수점포함 14자리 . 소수점아래 10자리 

정수앞은 공백 소수점 아래 공백은 0으로 채움 

System.out.printf("%14.10f%n", d);   // 소수점포함 14 자리 소수점아래 10자리
System.out.printf("%14.6f%n", d);    // 소수점 포함 14자리 소수점아래 6자리
System.out.printf("%.6f%n", d);      // 소수점아래 6자리 



2-8
System.out.printf("[%s]%n, "www.codechobo.com");
System.out.printf("[%20s]%n ,"www.codechobo.com");  오른쪽 정렬 소수점포함 20자 
System.out.printf("[%-20s]%n , "www.codechobo.com");   왼쪽 정렬 소수점포함 20자리
System.out.printf("[.10s]%n ,"www.codechobo.com"); 오른쪽 정렬 소수점 아래 8자리


3. 화면에서 입력받기 - Scanner

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

▶ Scanner를 사용하려면
▪ import문 추가
import java.util. * ;

▪ Scanner객체의 생성
Scanner scanner = new Scanner (System.in);   // (System.in) = 화면 입력

▪ Scanner 객체를 사용
int num = scanner.nextInt();  // 화면에서 입력받은 정수를 num에 저장   nextInt() 정수 ,nextFloat()실수

 

String input = scanner.nextLine();  // 화면에서 입력받은 내용을 input에 저장    , nextLine  한행을 뜻함
int num = Integer.parseInt(input); // 문자열 (input)을 숫자 (num) 로 변환

 

숫자  ->  문자열  : 숫자 + " "
숫자 <- 문자열  : Integer.parseInt()
728x90

'First > Java' 카테고리의 다른 글

[Java] CH6 객체지향 개념  (0) 2023.03.13
[Java] CH5 배열  (0) 2023.01.15
[Java] CH4 조건문과 반복문  (0) 2023.01.11
[Java] CH3 연산자 (Operator)  (0) 2023.01.05
ch1 - 자바 시작하기  (0) 2022.12.26