Java

Java_자료형과 변수

히예네 2023. 1. 24. 22:55
728x90
반응형

자료형과 변수

자바의 자료형은 크게 2종류

기본형은 소문자로 시작, 참조형은 대문자로 시작한다.

 

(1)기본형 자료형 (primitive) 프리미티브형 

Data를 저장한다. 일반변수.

자료형   메모리  
boolean 논리값 T or F 1 byte 가장 작은 사이즈
byte 정수형 1 byte 용도 : 데이터 덩어리(이미지,오디오 등을 위해 )
char 한문자 2 byte 자바에서는 유니코드(2바이트씩)
short 정수형 2 byte  
int 정수형 4 byte  
long 정수형 8 byte  
float 실수형 4 byte  
double 실수형 8 byte  
  • 양수로 0~127, 음수로 -1~-128까지 저장가능 2^8=256개
  • 바이트는 이미지등 데이터 덩어리 때문에 만들어짐. 미디어용으로 ! int나 더블은 안 어울림
  • 기본형은 포인터가 못된다. 포인터변수를 만들지 못함.

 

(2)참조형 자료형(Referance) 레퍼런스형

class로 만든 자료형

주소를 저장한다. 포인터 변수 - 주소를 저장하므로 모두다 8바이트이다.

자바에서는 포인터말고 레퍼런스라고 한다.

기본형이외는 다 포인터이다.Double, Float 등 기본형과 스펠이 같지만 대소문자로 구별해야한다.

new는 heap메모리에 쓴다는뜻이다.

String,Scanner,System,Ramdom, Double … 등 2천여개 (이 2천여개는 new와 쓴다)

 

객체는 변수와 함수를 같이 갖고있다. 

 

※주의사항

  public class Ex01Print {
	
	public static void main(String[] args){

		//변수를 만드는 문법 - 자료형 변수명;
		int a=10;
		//출력기능을 가진 객체에게 출력을 요청 
		System.out.println(a);
		
		//c언어와 다른점! 값을 대입할때 주의점.
		int b;
		//자료형이 큰것을 작은변수에 대입불가능 b=3.14는 에러이다.
		//반대로 작은변수는 큰것에 넣을수있다. 크기 순서를 참고하자! 

	
		//자료형별로 담을 수 있는 값의 크기가 제한된다. 메모리의 사이즈를 다르게 먹기때문에
		byte c=127;// -128부터 ~127까지만 넣을수있다. 
		System.out.println(c);
		
		//c=128; 에러! C에서는 에러가 나지 않는다. 범위를 넘어감 byte는 -128~127까지만 써야해
		
		short d=32767; //양수 음수 합쳐서 65000개까지 각 32767개
		System.out.println(d);
		
		int e=2100000000; //인트는 양수/음수 각21억개까지 쓸수있다.
		System.out.println(e);
		
		long f; //양수와 음수 각 900경! 
		// f=2500000000; 대입이라는것 오른쪽에서 왼쪽으로 대입, 
    //25억은 하늘에서 떨어진게 아님 메모리에서 얻는다
    // 메모리에서 상수로 불러옴 상수임! 4바이트가 25억을 담을수없으니까!  
		f=2500000000000L; //L은 대문자로 쓴다. 정수형 상수를 Long으로 만드는 L 키워드가 접미어로 있어야함.  
		System.out.println(f);
		
		float g; //4바이트
		//g=3.14; 실수형 상수는 기본적으로 double로 메모리에 불러온다.
		g=3.14f; //실수형 상수를 float으로 만드는 f 키워드가 접미어로 있어야함. 
		System.out.println(g);
		
		
		double h=2.74;
		System.out.println(h);

		char i='G';
		System.out.println(i);
		
		i=65;
		System.out.println(i); //정수가 아니라 유니코드로 읽는다 A로 읽는다
		
		boolean j=true;
		System.out.println(j);
		
		j=5<3;
		System.out.println(j);
		
		//작은 값은 큰 변수에 대입이 가능함. [자동 형변환]이 이뤄진다.
		
		double k=10;
		System.out.println(k);

		//long m=3.14f; 더블은 롱보다 크다. 무조건 실수가 정수보다 큰 값이다.
    //f를 붙인다고 해도 대입이 불가능! 
		
		//long+float  연산하면.. 정수를 실수에 대입! 
    //long을 float으로 변환한다 long(8바이트) float(4바이트)  실수 크기로 따지지마라 
		System.out.println(100L+3.14f); // 플롯으로 바뀜 
		
		
		//byte와 short은 별도의접미어 없이도 int형 상수값을 대입가능함. 
		byte n=10; //127까지만 된다. 
		short r=100;  
		
		//byte나 short변수끼리의 연산은 자동 int로 변환되어 계산된다. 
		short x=10;
		short y=50;
		short t;
		
		//t=x+y;  에러!!  램에서 가져올때 연결선이 2바이트로 갖고오는걸 안좋아하느다 4바이트로 바꿔버림.
		//System.out.println(t);
		
		t=(short)(x+y);
		System.out.println(t);
		
		
		System.out.println();
		System.out.println();
		
		//변수의 반대 - 자바의 상수 총 2개의 종류 
		//1) literal 상수 - 값 자체를 의미 [10, 3.14, 'G', "aaa", true ] 
//정수형상수, 실수형상수, 한문자상수(유니코드에서 2바이트 실제는4이다 한문자상수이므로) ,
//문자열상수 "aaa" 공간에서 6바이트이다 (끝문자는 c에서만) ,
//논리형상수(실제로1비트 나머지7비트는  유효공간) 1바이트    
		//2) final 상수 - 상수화된 변수
		
		final int z=10; //파이널 상수라고함 [상수의 이름은 대문자로만 쓴다. snake표기법을 권장]
		//z=20; 에러 - 상수는 값 변경이 불가해서! java는 쓰레기값을 넣지 않는다. 
    //허지만 그렇게 하지마. 처음부터 초기화 시켜! 
		
		final int USER_MAX=3; //상수는 언더바로 엮는 스네이크법
		//상수는 ?  클래스는? 함수는? 
		
		//참조형에 대한 맛보기 
		String s; //자바에 존재하는 모든 메모리는 heap에 저장된다.
    // new로 만든다 class person에서 person은 자료형이다.  
		s= new String("Hello");
		
		System.out.println(s.toString()); //야 s야 너가 가르키는 s를 출력해
		
		System.out.println(s); //원래 주소나와야하는데 워낙 자주쓰니까 투스트링으로 바뀜
		
		s= new String("nicr");
		s="android"; //자동 new String("android"); , 보기에는 그냥 문자열 넣은거같이 생김
		System.out.println(s);
			
    char u;
		u='한'; //한글은 한글자이다. 유니코드에서는 한글이 인식된다.
	}

}
728x90
반응형