코딩딩/Java

자바의 변수

전낙타 2023. 5. 10. 22:58

변수

변수란 하나의 값을 저장할 수 있는 메모리 공간이며 변수를 선언하여 저장할 공간을 마련하여 사용한다.

# 코드
package _ch02;

public class Ex2_3 {
	public static void main(String[] args) {
/*
변수에 값을 저장하는 방법은 '='기호를 사용하며
이때의 '='는 등호가 아니라 대입의 의미를 가지고 있다. 
*/
		int a = 4, b = 2;
	}
}

변수의 값 읽어오기 = 변수의 이름을 적는다

# 코드
package _ch02;

public class Ex2_3 {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		int a = 4, b = 2;
		System.out.println(a + b);
		System.out.println(a - b);
		System.out.println(a * b);
		System.out.println(a / b);
	}

}

변수의 타입

int age = 25

여기서 int형임을 선언해주었기 때문에 실수나 string값이 들어오면 에러가 발생한다

char = 문자형

double = 실수

값의 타입

값은 문자와 숫자

숫자는 정수와 실수로 나눌 수 있다

문자 = char

정수 = byte, short, int, long

실수 = float, double

논리 = boolean true, false

변수, 상수, 리터럴

변수 = 하나의 값을 저장하기 위한 공간

상수 = 한번만 값을 저장 가능한 변수

변수 앞에 final을 기입해주면 상수가 된다.

리터럴 = 그 자체로 값을 의미하는 것

상수와 값은 개념이지만 자바에서 상수는 한번만 값을 저장 가능한 변수로 지정했기 때문에 구분하려 리터럴이라 한다.

ex) int score = 100; 에서 ‘100’이 리터럴 값이다.

package _ch02;

public class Ex2_3 {
	/*
	 score의 값은 변수형이기 때문에 출력값이 200이 나온다.
	 */
	public static void main(String[] args) {
		int score = 100;
		score = 200;
		System.out.println(score);
	}
}
package _ch02;

public class Ex2_3 {
	/*
	 final으로 상수로 설정했기 때문에 에러가 발생한다.
	 */
	public static void main(String[] args) {
		final score = 100;
		score = 200;
		System.out.println(score);
	}
}

리터럴의 타입과 접미사

리터럴의 접두사와 접미사

종류 리터럴 접미사

논리형 false, true 없음
정수형 123, 0b0101, 077, 0xFF, 100L L
실수형 3.14, 3.0e9, 1.4f f, d
문자형 ‘A’, ‘1’, ‘\n’ 없음
문자열 “ABC”, “123”, “A”, “true” 없음

ex)

boolean power = ture;

char ch = ‘A’;

String str = “ABC”;

byte b = 127; int타입으로 입력 byte 타입은 -128 ~ 127까지의 값을 저장 가능

int i = 100; //10진수

int oct = 0100; // 8진수

int hex = 0x100; //16진수

접두사는 대소문자 구별 안함

long l = 10_000_000_000L; // 값이 20억을 넘어가면 접미사를 붙혀야함

long l = 100; // 이 외에는 생략해도 괜찮음.

float f = 3.14f; // 생략시 더블타입으로 변경되어 생략 불가능함.

double d = 3.14d; // 생략가능.

변수와 리터럴의 타입 불일치

범위가 ‘변수 > 리터럴’ 인 경우는 괜찮음

int i = 'A';       //int > char 여기서 char A 는 65를 의미

범위가 ‘변수 < 리터럴’인 경우 에러

int i = 30_000_000_0000;      // int의 범위인 20억을 벗어남
long l = 3.14f;        // 실수형의 저장 범위가 정수형의 저장 범위보다 더 넓어 에러발생
float f = 3.14;        // float < double 접미사가 생략되어 double형으로 변환됨
실습
package _ch02;

public class Ex2_4 {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		boolean power = true;
		System.out.println(power);
		
		byte b = 127;
		System.out.println(b);
		
		int oct = 010;		// 8진수, 10진수로 8
		int hex = 0x10;		// 16진수, 10진수로 16
		
		long l = 10_000_000_000L;	// 20억 이상의 수엔 접미사 L을 붙혀야 한다.
		
		float f = 3.14f;	// f 를 생략시 에러 발생
		double d = 3.14f;	// f 를 입력해도 double형의 범위가 더 넓음으로 에러 미발생
		
		System.out.println(10.);
		System.out.println(.10);
		System.out.println(10f);
		System.out.println(1e3);
	}

}