본문 바로가기
Backend/Java

[Java] 변수와 데이터 타입(자료형)

by sukii 2023. 11. 22.
반응형

✨변수란 ?

값을 저장하기 위한 메모리 공간

 

변수 선언 & 변수 초기화

변수 선언: 변수에 저장할 데이터 타입과 변수의 이름을 정하는 것

변수 초기화: 변수에 최초로 값을 저장하는 것(이때 최초로 저장된 값 = 초기값)

 

변수에 초기값으로 100을 설정하고, 다시 200을 대입하여 값을 변경함.

그리고나서 변수를 출력해보면 200이라고 뜸.

package basic;

public class VariableApp {
	public static void main(String[] args) {
		int su;//정수값(을 저장하기 위한 변수 선언 => 메모리에 변수 생성
			//대입연산자(=)를 이용하여 변수에 값을 저장 - 대입연산자 왼쪽에 변수를 위치하여 값을 제공받아 저장
			//자바에서 '='기호는 우리가 흔히 알고 있는 '같다'의 의미가 아니라 오른쪽의 값을 왼쪽의 변수에 '대입한다'라는 의미
		su=100;//변수 su에 100을 저장하는 명령(변수 초기화)
        
//      int su;// => 동일한 이름의 변수를 재선언할 경우 에러 발생
		
        su=200;//변수에는 기본값 대신 새로운 값 저장
		
        System.out.print("변경값 = " + su); //변경값 = 200 이라고 출력 됌
		System.out.println("==================================================");

 

 

 변수 사용 범위(feat. 지역 변수)

자바에서 모든 변수는 중괄호 { } 블록 내에서 선언되고 사용 된다.

메소드 블록 내에서 선언된 변수를 지역변수(=로컬 변수)라고 부름.

지역변수는 선언된 블럭이 종료되면 자동 소멸되므로 선언된 블럭 내부에서만 사용 가능.

package basic;

public class LocalVariableApp {
	public static void main(String[] args) {
		int num1=100;
		
		//임의블럭
		{
			int num2=200;
			System.out.println("=================임의 블럭 내부 ======+=========");
			System.out.println("num1 = "+num1);
			System.out.println("num2 = "+num2);
		}
		System.out.println("=================임의 블럭 외부 ======+=========");
		System.out.println("num1 = "+num1);
		//System.out.println("num2 = "+num2);
		//num2를 선언한 블록 밖에서 사용하려하니 에러 발생
	}
}

 

데이터 타입

⬛기본형(원시형)(PrimitiveType) : 기본값을 표현하거나 변수를 선언하기 위한 자료형(키워드)

=>숫자형(정수형, 실수형, 문자형), 논리형 이 있음. 아래 표에 있는 8개임.

=>실제 값을 저장

 

**아래 표는 메모리 사용 크기별로 기본타입을 구분 해놓은 것 (혼공자 교재 참조)

구분 1Byte 2Byte 4Byte 8Byte
정수 타입 byte char
short
int long
실수 타입     float double
논리 타입   boolean    

 

참조형(Reference type)

=>기본형 8개를 제외한 나머지(String, System, 배열, 인터페이스, 열거형 등)

=> 메모리 주소를 저장


+ Char Type vs String Type  

작은따옴표(')로 감싼 문자 => char 타입 사용(유니코드로 저장)

큰따옴표(")로 감싼 문자들(=문자열) => String 타입 사용(유니코드 변환 X)

 

 

🖥️각 데이터 타입을 사용해보며 익히기

package basic;

public class DataTypeApp {
	public static void main(String[] args) {
		//정수형(IntegerType) 리터럴 - 소수점이 없는 숫자값
		//정수값을 표현하기 위한 자료형(키워드) - byte, short, int, long
		byte a1=-128;//=128~127
		short a2=32767;//-32768~32767
		int a3=2147483647;//-21억~21억
		long a4=2147483648L;
	
		System.out.println("a1 = "+a1);
		System.out.println("a2 = "+a2);
		System.out.println("a3 = "+a3);
		System.out.println("a4 = "+a4);
	
		long a5=100;
		System.out.println("a5 ="+a5);
		System.out.println("==================================================");
	
		System.out.println("<<실수형(DoubleType)>>");
		System.out.println("실수값(4Byte) = "+40.6F);//실수값F => 4Byte 실수형 리터럴(Float)
		//println() 메소드는 실수값이 아주 작거나 큰 경우 지수형태로 변환하여 출력
		System.out.println("실수값(8Byte) = "+0.00000000023);//실수값 => 8Byte 실수형 리터럴(Double)
		//실수값을 지수형태로 표현하여 사용 가능
		System.out.println("실수값(8Byte) = "+1.23E+10);
		
		//실수값을 표현하기 위한 자료형 - float, double
		float b1=1.23456789F;//가수부로 표현한 크기(정밀도) : 소숫점 7자리
		double b2=1.23456789;//가수부로 표현한 크기(정밀도) : 소숫점 15자리
		
		System.out.println("b1 ="+b1);
		System.out.println("b2 ="+b2);
		System.out.println("==================================================");
		
        System.out.println("<<문자형(CharacterType)>>");
		//'A' : 65, 'a':97, '0' : 48, ' ' : 32, '\n' : 13 
		System.out.println("문자값 = "+'A');
		System.out.println("\"개발자\"가 되고 싶어요!");//이스케이프 문자 사용
		System.out.println("ㅎ ㅎ \n재밌다");//이스케이프 문자 사용
		
		//문자값을 표현하기 위한 자료형 - char(2Byte)
		char c1='A';
		char c2=65;
		char c3='a' -32;
		
		System.out.println("c1 ="+c1); //c1, c2, c3 모두 A로 출력 된다.
		System.out.println("c2 ="+c2);
		System.out.println("c3 ="+c3);
		System.out.println("==================================================");
		
        //논리형(BooleanType) 리터럴 - false(거짓), true(참) => 연산 불가능
		// => Java프로그램에 문자형 리터럴은 기본적으로 1Byte 표현
		
        System.out.println("<<논리형(BooleanType)>>");
		System.out.println("논리값(1Byte) = "+false);
		System.out.println("논리값(1Byte) = "+true);
		//관계연산자(비교연산자)를 이용한 연산식의 결과값으로 논리값이 발생되어 제공
		System.out.println("논리값(1Byte) = "+(20 < 10));
		System.out.println("논리값(1Byte) = "+(20 > 10));
		
		boolean d1=false;
		boolean d2=20>10;
		System.out.println("d1 = "+d1);
		System.out.println("d2 = "+d2);
		System.out.println("==================================================");
		
        //문자열(StringType) 리터럴 : " " 안에 0개 이상의 문자들을 사용하여 표현되는 값
		// => 문자열은 기본형(원시형)이 아닌 String 클래스(참조형)를 사용하여 표현
		System.out.println("<<문자열(StringType)>>");
		System.out.println("문자열 = "+"홍길동");
		System.out.println("문자열 = "+"유관순 열사가 \"대한독립만세\"를 외쳤습니다.");
		
		//문자열을 표현하기 위한 자료형:String Class
		String name="임꺽정";
		System.out.println("이름 = "+name);
	}
}

 

반응형