eajni IT 초보사전 💦💦

[JAVA] 자료형

2022-11-01

자료형

  • 변수의 유형
  • 변수 앞에서 반드시 선언, 변수에 어떤 값을 넣을지 지정

기본형(Primitive Type)

  • 논리 - boolean
  • 문자 - char
  • 숫자
    • 정수 - byte, short, int, long
    • 실수 - float, double
  • 메모리의 Stack공간에 저장 (변수명 : 값)
Byte 1 2 4 8
논리형 boolean      
문자형   char    
정수형 byte short int long
실수형     float double

참조형(Reference Type)

  • String, 배열, 객체 … 무한대로 생성 가능
  • 메모리의 Heap 공간에 변수의 값이 저장됨
  • Stack 공간에는 변수명 Heap

변수 선언 예시

		boolean aBcD; //논리형, true/false에 넣을 수 있다. default는 false
		aBcD = true ;
		aBcD = false ;
	  //aBcD = 10 //오류발생
		byte 가나다라 ; //1byte의 데이터만 저장
		short $_abcd ; // 특수문자 _, $만 사용가능
	 //boolean %abcd ; 오류발생
	 //char 3abcd ; 오류발생
		char a3cd ;
		long abcd3 ;
	 // double private ; 오류발생 (자바에서 사용하는 예약어)
	 //	int my work ; 변수명에 공백 사용 불가
		String myClassName ; //이어서 여러 단어 적용할 때 단어 앞 대문자 적용(권장)
	
		// 상수 : 값을 넣으면 그 값을 변화하지 못하도록 설정
		// 변수 자료형 앞에 final 키가 붙으면 상수
		// 상수명은 전체를 대문자 지정 (권장)
		double PI = 3.141592 ; //변수 : PI값 변화 가능
		System.out.println(PI); //3.141592
		PI = 123.456 ; 
		System.out.println(PI); //123.456
		
		final double PI2 = 3.141592 ; // 상수 : 값을 넣으면 수정할 수 없다.
		System.out.println(PI2);
	 // PI2 = 123.456 ; 상수이므로 다른 값 대입 불가
		final int MY_DATA = 10 ;
		final float my_data ; //권고사항 위배 : 상수명은 전체를 대문자로 지정해야함.

논리형(boolean) : T/F

		boolean bool1 = true; //선언과 동시에 변수 값 할당
		boolean bool2; 
		bool2 = false ;// 선언 후 값 할당
		System.out.println(bool1); //true
		System.out.println(bool2); //false

문자형(char)

  • 영문, 한글, 일본어, 숫자, 특수문자… 한 글자
  • 변수의 값을 할당할 리터럴에 ‘ ‘
//1. char 자료형 변수에 직접 문자로 저장하는 방법 
				char value10 = 'A';
				char value11 = 'a';
				char value12 = '가';
				char value13 = '3';
				char value14 = '#';
				
				System.out.println(value10); //A
	//2. 정수 값으로 문자를 저장하는 방법 : 아스키코드 값으로 문자를 저장 
				char value15 = 65 ;
				char value16 = 0xac00 ; //0x : 16진수, 0 : 8진수, 0b : 2진수
				char value17 = 51 ;
				System.out.println(value15); //A
				System.out.println(value16); //가 
				System.out.println(value17); //3
	//3. 유니코드로 저장하는 방법 : 전 세계의 모든 글자를 3byte로 저장
				char value18 = '\\u0041' ; 
				char value19 = '\\uac00' ;
				char value20 = '\\u0033' ;
				System.out.println(value18); //A
				System.out.println(value19); //가
				System.out.println(value20); //3
// 1. 자바 코드를 사용해서 진법 변환 (10진수, 16진수, 8진수, 2진수)
		int data = 13 ;
		System.out.println(Integer.toBinaryString(data)); //2진수로 변환
		System.out.println(Integer.toOctalString(data));  //8진수로 변환
		System.out.println(Integer.toHexString(data));	  //16진수로 변환
		
		// 2. 2진수, 8진수, 16진수 => 10진수로 변환
		System.out.println(Integer.parseInt("1101", 2)); //13,  2진수
		System.out.println(Integer.parseInt("15", 8)); 	 //13,  8진수
		System.out.println(Integer.parseInt("d", 16));	 //13, 16진수
		
		// 3. 다양한 진법 표현 (0b : 2진수, 0 : 8진수, 0x : 16진수)
		System.out.println(0b1101); //13
		System.out.println(015);	//13
		System.out.println(0xd);	//13
		
		// 4. 비트 연산자 : 모두 2진법으로 변환해서 각 비트를 연산
			//4-1. and (&)
				//0&0 = 0, 0&1 = 0, 1&0 = 0, 1&1=1
			System.out.println(3 & 10); //2
			System.out.println(0b0011 & 0b1010); //2
			System.out.println(0x03 & 0x0A); //2
			//4-2. or (|)
				//0|0 = 0, 0|1 = 1, 1|0 = 1, 1|1 =1 
			System.out.println(3|10); //11
			//4-3. xor (^)
			System.out.println(3^10); //9
			//4-4. not (~)
				//음수는 0을 기준으로 처리 +1
			System.out.println(~10); //-11

숫자형

정수

  • byte : 1byte
  • short : 2byte
  • int : 4byte
  • long : 8byte
//byte : (1byte = 8bit) -2^7 ~ 2^7-1 : -128 ~ 127
				byte value1 = -128 ;
				System.out.println(value1);
//short : (2byte = 16bit) -2^15 ~ 2^15-1 : -32,768 ~ 32,767
				short value3 = 32767 ;
				System.out.println(value3);
//int : (4byte = 32bit) -2^31 ~ 2^31-1 : -2,147,483,648 ~ 2,147,483,647
				int value5 = -2147483648 ;
				System.out.println(value5);
//long : (8byte = 64bit) -2^63 ~ 2^63-1
		//long의 변수에 값을 할당할 때는 l, L을 붙여줘야 한다.
		//or not 기본적으로 int형으로 값이 저장됨
				long value7 = -100L ;
				System.out.println(value7);

실수

  • float : 정밀도 7자리(4byte)
  • double : 정밀도 15자리 (8byte)
//float : float으로 지정된 변수의 값을 할당할 때 리터럴에 f, F를 명시해야 한다.
				float value8 = 1.123456789F; 
				System.out.println(value8); //1.1234568 :7자리  출력
				
				double value9 = 1.12345678910112345 ;
				System.out.println(value9); //1.123456789101123 : 15자리만큼 출력

문자열(String)

  • 참조 자료형(객체), 글자수 무관
  • 변수의 값을 할당할 리터럴에 “ “
				String value21 = "안녕하세요. 오늘의 날씨는 매우 맑습니다"
				System.out.println(value21) // 안녕하세요. 오늘의 날씨는 매우 맑습니다

Comments

Content