본문 바로가기
Java

Java_자료형과 변수

by 히예네 2023. 1. 24.
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
반응형

'Java' 카테고리의 다른 글

Java_배열  (0) 2023.01.26
Java_String  (2) 2023.01.26
Java_키보드 입력 Scanner  (0) 2023.01.26
Java_화면 출력 객체 System.out  (0) 2023.01.24
Java의 시작  (0) 2023.01.24