본문 바로가기

Data_Analysis_Track_33/Java

Java_변수와 자료형

변수 선언 및 사용

- 변수를 선언하고 값을 대입하고 출력하는 프로그램

- 패키지명 : chapter2, 클래스명: Variable1

package chapter2;

public class Variable1 {

	public static void main(String[] args) {
		int age;
		age = 25;
		System.out.println(age);

	}

}

 

 

 

변수 초기화하기

- 위의 코드는 변수명을 선언하고 변수에 값을 대입하는 방식이였다. 하지만 아래와 같이 변수 선언과 동시에 값을 대입할 수 있다.

package chapter2;

public class Variable2 {

	public static void main(String[] args) {
		int level = 10; // level 변수 선언과 동시에 값을 대입(초기화)
		System.out.println(level);

	}

}

 

 

변수 명명에 대한 규칙이 있다.

  • 변수 이름은 영문자(대문자, 소문자)나 숫자를 사용할 수 있고, 특수 문자 중에는 $, _ 만 사용할 수 있다,
  • 변수 이름은 숫자로 시작할 수 없다.
  • 자바에서 이미 사용 중인 예약어는 사용할 수 없다.

 

자료형

- 자바에서 제공하는 자료형은 기본 자료형과 참조 자료형이 있다.

- 기본 자료형은 자바 라이브러리에서 기본으로 제공하며, 얼마만큼의 메모리를 어떻게 사용할 것인지가 이미 정해져 있다.

- 기본 자료형의 종류: 정수형(byte, short, int, long), 문자형(char), 실수형(float, double), 논리형(boolean)

- 기본 자료형들에도 각 자료형이 사용할 공간의 크기, 즉 바이트 수가 정해져 있다.

자료형 표

 

 

문자 자료형

 

여기서 문자를 변수에 대입하면 문자 그대로 저장되는 것이 아니라 그 문자에 해당하는 정수 값(아스키 코드 값)이 저장된다.

- 변수에 저장된 문자(ch1)를 int형으로 변환하여 출력하면 그 문자에 해당하는 정수 값을 알 수 있다.

- 또한 ch2처럼 문자형 변수에 정수 값을 대입하면 그 정수 값에 해당하는 문자가 출력된다.

- ch3와 같이 정수형 변수를 문자형으로 변환하여 출력하면 그 정수 값에 해당하는 문자를 출력한다.

package chapter2;

public class CharacterEx1 {

	public static void main(String[] args) {
		char ch1 = 'A';
		System.out.println(ch1); 		//문자 출력
		System.out.println((int)ch1);	//문자에 해당하는 정수값(아스키 코드 값) 출력
		
		char ch2 = 66;					//정수 값 대입
		System.out.println(ch2);		//정수 값에 해당하는 문자 출력
		
		int ch3 = 67;
		System.out.println(ch3);		//문자 정수 값 출력
		System.out.println((char)ch3);	//정수 값에 해당하는 문자 출력

	}

}

 

 

- 문자형 변수와 다른 정수 자료형과의 차이점은 char형은 음수 값을 표현할 수 없다는 것이다.

package chapter2;

public class CharacterEx3 {

	public static void main(String[] args) {
		int a = 65;
		int b = -66;
		
		char a2 = 65;
		//char b2 = -66; -> 문자형 변수(char형)에 음수를 넣으면 오류가 발생한다.
		
		System.out.println((char)a);
		System.out.println((char)b);
		System.out.println(a2);

	}

}

 

 

실수 자료형

- 실수 자료형은 float형과 double형이 있는데, 자바에서 실수는 double형을 기본으로 사용한다.

- float형(4바이트)에 비해 double형(8바이트)이 더 정밀하게 실수를 표현할 수 있기 때문이다.

package chapter2;

public class DoubleEx1 {

	public static void main(String[] args) {
		double dnum = 3.14; //float형(4바이트)에 비해 double형(8바이트)이 더 정밀하게 실수를 표현한다.
		float fnum = 3.14F;
		
		System.out.println(dnum);
		System.out.println(fnum);

	}

}

 

 

논리 자료형

- 논리 자료형은 어떤 변수의 참, 거짓의 값을 나타내는 데 사용한다. 종류는 boolean형 한 가지

package chapter2;

public class BooleanEx {

	public static void main(String[] args) {
		boolean isMarried = true; 		//boolean 변수를 선언하고 초기화
		System.out.println(isMarried);

	}

}

 

 

자료형 없이 변수 선언하기 (var)

- 자바 10부터는 자료형을 쓰지 않고도 변수를 사용할 수 있다. 이를 지역 변수 자료형 추론이라고 한다.

- 변수에 대입되는 자료를 보고 컴파일러가 추측하는 방식이다.

- 주의할 점은 컴파일러가 한번 추측하여 자료형을 결정했다면, 그 자료형 변수는 다른 자료형으로 사용할 수 없다는 것이다. 또한 이 방법은 지역 변수만 가능하다.

- 지역 변수는 프로그램의 { }내에서 사용할 수 있는 변수를 뜻한다.

package chapter2;

public class TypeInferrence {

	public static void main(String[] args) {
		var i = 10;			//int i = 10으로 컴파일됨.
		var j = 10.0;		//double j = 10.0으로 컴파일됨.
		var str = "hello";	//String str = "hello"로 컴파일됨
		
		System.out.println(i);
		System.out.println(j);
		System.out.println(str);
		
		str = "test"; // 다른 문자열은 대입 가능
		//str = 3; -> str 변수는 String형으로 먼저 사용되었기 때문에 정수 값을 넣을 수 없다.
		
		System.out.println(str);

	}

}
// 하지만 이러한 자료형 추론은 실무에서는 거의 쓰이지 않을 것으로 예상된다. 코드 이해에 혼동을 줄 수 있기 때문이다.

 

상수 선언하기

- 프로그램에서는 변수가 아닌 변하지 않는 수가 필요하기도 하다. 이를 위해 항상 변하지 않는 값인 상수(Constant)를 사용하는데 final 예약어를 사용해 선언한다.

- 상수는 한번 선언하고 나서 뒤에 값을 변경하려고 하면 오류가 발생한다.

package chapter2;

public class Constant {

	public static void main(String[] args) {
		final int MAX_NUM = 100; //선언과 동시에 초기화
		final int MIN_NUM;
		
		MIN_NUM = 0; //사용하기 전에 초기화. 초기화하지 않으면 오류 발생
		
		System.out.println(MAX_NUM);
		System.out.println(MIN_NUM);
		
		//MAX_NUM = 1000; -> 오류 발생. 상수는 값을 변경할 수 없음.

	}

}

 

형 변환

 

묵시적 형 변환

- 바이트 크기가 작은 자료형에서 큰 자료형으로 대입하는 경우이다.

package chapter2;

public class ImplicitConversion {

	public static void main(String[] args) {
		byte bNum = 10;
		int iNum = bNum; //byte형 값이 int형 변수로 대입됨
		
		System.out.println(bNum);
		System.out.println(iNum);
		
		int iNum2 = 20;
		float fNum = iNum2; //int형 값이 float형 변수로 대입됨.
		
		System.out.println(iNum);
		System.out.println(fNum);
		
		double dNum;
		dNum = fNum + iNum;
		System.out.println(dNum);
		

	}

}

 

 

명시적 형 변환

- 바이트 크기가 큰 자료형에서 작은 자료형으로 대입하는 경우이다.

- 강제로 형을 바꾸려면 바꿀 형을 괄호를 써서 명시해야 함

package chapter2;

public class ExplicitConversion {

	public static void main(String[] args) {
		double dNum1 = 1.2;
		float fNum2 = 0.9f;
		
		int iNum3 = (int)dNum1 + (int)fNum2; //두 실수가 각각 형 변환되어 더해짐
		int iNum4 = (int)(dNum1 + fNum2);    //두 실수의 합이 먼저 계산되고 형 변환됨
		System.out.println(iNum3);
		System.out.println(iNum4);

	}

}

'Data_Analysis_Track_33 > Java' 카테고리의 다른 글

Java_주의할 점 필기자료(연산자 ~ 참조 타입)  (0) 2023.11.30
Java_Java 환경 설정  (0) 2023.11.29