본문 바로가기
  • think normal
새로워지기/서른의 생활코딩

3일차) 변수에 대해 알기2(논리,문자,정수,실수,문자열,형변환) _20180530 am

by 청춘만화 2018. 5. 30.

package a_variable;

/**

 * 변수 타입에 대하여

 * @author BCS

 *

 */

public class VariableOther {

public static void main(String[] args){

/*

5. 논리형 - boolean(기본값 false)

boolean형 변수에는 true, false하나의 값을 저장할 수 있다. 

boolean형 변수에는 대답(yes, no), 스위치(on/off)

    boolean 자체는 1 bit만 사용하지만,

데이터를 다루는 최소단위가 1 byte 임으로 1byte형을 가지게 된다 

문제

false의 값을 저장할 수 있는 변수  abc룰 선언 및 초기화 하시오

*/

boolean abc= false;

System.out.println(abc);

/*

6.문자형 - char(' \u0000 ')

- 2 byte(16진수) 체계를 이용한다

- JAVA는 Unicode 문자체계를 이용한다. 

- ' A ' = 65(10진수 = DEC = int 타입) = 41(16진수 = HEX)

*/

char a = 'A' ;  //= 65(10 DEC)

char b = '\u0041' ;   //= 65(10 DEC)

char c = 65 ;   //= 65(10 DEC)

System.out.println(a);

System.out.println(b);

System.out.println(c);

/*

7. 정수형 - byte, short, int, long

- 기본 자료형은 int

- 변수의 값을 저장하려면 정수값의 범위에 따라서 4개의 정수 중에 하나를 선택해야한다

- byte , short 형의 경우 크기가 작어서 범위를 넘는 잘못된 결과를 얻을 수 있다

그래서 int 형을 사용하는 것이 좋다

- JVM의 피연산자 스택이 피연산자들을 4byte 단위로 저장되기 때문에 

      4byte형보다 작은 자료형의 연산 시 4byte형으로 변환하여 연산된다

  - long type으로 선언하는 경우에도 숫자가 큰 경우 맨 뒤에 'L' 를 붙인다

   float type으로 선언하는 경우에도 숫자가 큰 경우 맨 뒤에 'f' 또는 'F' 를 붙인다

  - overflow : 정수형에서

  변수가 자신이 저장할 수 있는 범위를 넘었을때 최소값부터 다시 표현하는 현상

  변수의 범위를 넘는 값으로 초기화는 허용하지 않는다

문제

  50의 값을 저장할 수 있는 변수를 변수명 'b2'로 선언 및 초기화하세요 

*/

int b2 = 50;  //int를 자주 사용한다. 

//short b2 = 50;  //도 가능

System.out.println(b2);


//long long2 = 982323423432324423; 

long long2 = 982323423432324423L;  

//long 으로 선언하지만 숫자가 큰 경우 맨 뒤에 'L' 를 붙인다


//byte b3 = 128;  //범위를 넘어선다

byte b3 = 126;

System.out.println(b3);   //126

b3++; //1단계 증가

System.out.println(b3);   //127


b3++; //1단계 증가

System.out.println(b3);   //-128 (자신의 범위를 넘어서면 가장 작은 수로 나온다)

// = 오버플로어 (단, 정수형에만 있다)

b3++; //1단계 증가

System.out.println(b3);   //-127 (자신의 범위를 넘어서면 가장 작은 수로 나온다)

/*

8. 실수형 : float double - 실수형 값을 저장한다

     bit 구성

float : 1+8+23

double : 1+11+52

    실수 형 중 사용할 자료형을 선택할때는 값의 범위 뿐만아니라 정밀도도 중요한 요소가 된다

            (소수점 몇째자리 까지 표현할 것인가가 중요해진다)

기본 자료형은 double 이다. '2의 n승으로 표현'할 수 있어서

*/

double d2 = 1.2345689876543213456786543; //숫자가 길지만 기본형이기 때문에 뒤에 L 을 안 붙인다

System.out.println(d2); //-> 16자리

//float d2 = 1.2345689876543213456786543;  //에러, float는 기본형이 아니므로 f 또는 F 를 붙인다

float f2 = 1.2345689876543213456786543f; 

System.out.println(f2); //-> 7자리

double d3 = 0.1;

float f3 = 0.1f;

System.out.println(d3 == f3); 

double d4 = 0.5;

float f4 = 0.5f;

System.out.println(d4 == f4); //2의 n승으로 나뉘는 경우 double과 float은 동일간 값을 갖는다.


/*

 9. String  - '문자열'을 다루는 Class

' \ ' 만 못쓴다

' \t ' 은 쓴다 = tab 처럼 띄우기

' \n ' 은 쓴다 = new line 처럼 띄우기

*/

//char cc = '  ' ;   //에러, 싱글쿼테이션 사이에 값이 없으면 애러

//기본형은 값을 저장한다. 범위가 존재한다.

String str1 =null ; //기본값은 null(아파트를 짓기 전)

String str2 =" " ;      //정상

// 참조형은 주소를 저장한다.(주소 = 아파트를 짓는다)

// 범위가 존재하지 않는다

System.out.println(5+"sdf");  // 타입이 다르다. 

// 정수형, 문자열 -> 센쪽 타입으로 변형

// "5" + "sdf"

System.out.println("6"+"7");

System.out.println(true+"1234");

System.out.println("=======-----------");

System.out.println("=======\t-----------");

System.out.println("=======\n-----------");

/*

10. 형 변환(casting )

변수 또는 리터럴의 타입을 다른 타입으로 변환하는 것이다

기본형 끼리만 가능

*/

int i3 =65;

byte b6 = (byte)i3; //센놈을 약한놈에게, 오버플로우 방지, cast연산자 ()사용

System.out.println(b6);


char c6 = (char)i3; //센놈을 약한놈에게, 오버플로우 방지, cast연산자 ()사용

System.out.println(c6);

//float f6 = 3.141592; //에러

float f6 = 3.141592f;

int i4 = (int)f6; //센놈을 약한놈에게, 오버플로우 방지, cast연산자 ()사용

System.out.println(i4);

int i5 = b6; // 약한놈을 센놈에게, cast연산자 ()생략 

}

}



댓글