본문 바로가기

Java/Learn_Java

2. 변수와 타입

** 여기 있는 모든 코드의 package는 chapter2로 지정했습니다.

코드를 eclipse 등에서 실행하고 싶으면 chapter2로 package를 지정하거나 package chapter2;를 지우세요.

 

- 변수는 하나의 값을 저장할 수 있는 메모리 공간.

int age;
double value;
int score = 90;

여기서 int와 double는 변수의 타입이며, age와 value는 변수의 이름이다.

변수의 이름은 내 맘대로 정할 수 있으나, 영어 소문자로 시작하는 것이 관례이다.

자바에서 쓰는 예약어는 쓸 수 없다. 그니까, byte, if, class같이 뭔가 컴퓨터스러운 냄새가 나는 단어들은 안 쓰는게 좋다.

 

변수를 선언 시엔 3번줄과 같이 쓰는데, 변수 score의 초기값을 90으로 저장한다는 뜻이다.

즉, 지금 score의 리터럴(literal)은 90이다.

 

변수에는

  • 소숫점이 없는 정수 리터럴(0, 75, -100)
  • 소숫점이 있는 실수 리터럴(0.25, -3.14, 5E7, 0.12E-5)
  • 작은 따옴표(single quotes)로 넣어, 한 문자만 있는 문자 리터럴('A', '한', '/n')
  • 큰따옴표(double quotes)로 넣어, 여러 문자가 있는 문자열 리터럴("서울", "chaarles")
  • true, false만 있는 논리 리터럴

이 있다.

 

변수값 읽기 예제

//VariableExample.java

package chapter2;

public class VariableExample {
	public static void main(String[] args) {
		//10을 변수 value의 초기값으로 저장
		int value = 10;
		
		//변수 value 값 읽어서 10을 더하는 산술 연산 수행
		//이 연산의 결과는 변수 result의 초기값으로 저장
		int result = value + 10;
		
		//변수 result 값 읽고  console에 출력
		System.out.println(result);
	}
}

 

변수는 선언된 블록 안에서만 사용 가능하다.

package chapter2;

public class VariableScopeExample {
	public static void main(String[] args) {
		int v1 = 15;
		if (v1 > 10) {
			int v2 = v1 - 10;
		}
		// int v3 = v1 + v2 + 5; v2가 if 블록 안에 있으므로 사용 불가
		System.out.println(v1);
	}
}

 

데이터 타입은 

  • 정수 byte, char, short(잘 안씀), int
  • 실수 float, double(기본 실수타입, 자주 씀)
  • 논리 boolean

이 있다.

 

정수 타입 (+-등 부호는 있으나 소수점이나 지수가 없는 숫자 literal을 처리 시 사용)

- byte 타입

byte는 -128~127(-2E7~2E7-1)의 범위에서 표현할 수 있다.

//ByteExample.java
package chapter2;

public class ByteExample {
	public static void main(String[] args) {
		byte var1 = -128;
		byte var2 = -30;
		byte var3 = 0;
		byte var4 = 30;
		byte var5 = 127;
		// byte var6 = 128; byte 범위를 넘어가므로 Compile Error

		System.out.println(var1);
		System.out.println(var2);
		System.out.println(var3);
		System.out.println(var4);
		System.out.println(var5);
	}
}

 

최대값 127을 넘어가면 -128로 다시 시작한다. 이런 값을 쓰레기값(Garbage Value)라고 하는데,

이렇게 되면 저장 후에 엉터리 값이 나오므로 각 타입의 범위에 맞게 데이터가 만들어지도록 조심해야 한다.

//GarbageValueExample.java
package chapter2;

public class GarbageValueExample {
	public static void main(String[] args) {
		byte var1 = 125;
		int var2 = 125;
		for (int i = 0; i < 5; i++) {
			var1++;
			var2++;
			System.out.println("var1: " + var1 + "\t" + "var2: " + var2);
		}
	}
}

 

- char 타입

자바는 모든 문자를 유니코드로 처리한다. 문자를 직접 저장하거나, 유니코드로 지정된 10진수, 16진수로 저장하면 된다.

단 하나의 문자만 저장되며, 여러 문자를 저장하고 싶으면 참조 타입인 String 타입을 이용하면 된다.

 

//CharExample.java
package chapter2;

public class CharExample {
	public static void main(String[] args) {
		char c1 = 'A'; // 문자 직접 저장
		char c2 = 65; // 유니코드 10진수 불러와 저장
		char c3 = '\u0041'; // 유니코드 10진수 불러와 저장, ''꼭 추가해야 함

		char c4 = '가'; // 문자 직접 저장
		char c5 = 44032; // 유니코드 10진수 불러와 저장
		char c6 = '\uac00'; // 유니코드 10진수 불러와 저장, ''꼭 추가해야 함

		int uniCode = c1; // 유니코드 얻기

		String name = "Chaarles"; // 문자열 저장

		System.out.println(c1);
		System.out.println(c2);
		System.out.println(c3);
		System.out.println(c4);
		System.out.println(c5);
		System.out.println(c6);
		System.out.println(uniCode);
		System.out.println(name);
	}
}

- int 타입

정수 연산을 위한 기본 타입

10,000,000,000등과 같이 자릿수가 많은(10개 이상) literal은 long(소수점 없음) 또는 double(소수점 있음)을 써야 한다.

//IntExample.java
package chapter2;

public class IntExample {
	public static void main(String[] args) {
		int var1 = 10; // 10진수로 저장(기본)
		int var2 = 012; // 8진수로 저장(앞에 0을 붙임)
		int var3 = 0xA; // 16진수로 저장(앞에 0x를 붙임)

		System.out.println(var1);
		System.out.println(var2);
		System.out.println(var3);
	}
}

- long 타입

수치가 큰 프로그램을 다룰 때 주로 사용하는 타입.

java는 정수 literal의 기본 타입을 int로 보고 처리하므로,

int 범위를 초과하는 long 타입을 쓰기 위해선 literal 뒤에 'L'을 붙여서 사용해야 한다.

//LongExample.java
package chapter2;

public class LongExample {
	public static void main(String[] args) {
		long var1 = 10;
		long var2 = 20L;
		// long var3 = 10000000000; int 범위를 넘어가면 리터럴 뒤에 L을 꼭 붙여야 하므로 Compile Error
		long var4 = 10000000000L;

		System.out.println(var1);
		System.out.println(var2);
		System.out.println(var4);
	}
}

 

실수 타입 (소수점 또는 지수가 있는 숫자 literal을 처리 시 사용)

- float 타입

java는 실수 literal의 기본 타입을 double로 보고 처리하므로, float 타입을 쓰기 위해선 literal 뒤에 'F'를 붙여야 한다.

//FloatDoubleExample.java
package chapter2;

public class FloatDoubleExample {
	public static void main(String[] args) {
		// 실수값 저장
		double var1 = 3.14;
		// float var2=3.14; literal 뒤에 'F'없으므로 Compile Error
		float var3 = 3.14F;

		// 정밀도 테스트
		double var4 = 0.1234567890123456789;
		float var5 = 0.1234567890123456789F; // float는 일부 자릿수만 저장하고 나머진 생략

		System.out.println("var1: " + var1);
		System.out.println("var3: " + var3);
		System.out.println("var4: " + var4);
		System.out.println("var5: " + var5);

		// e 사용하기
		int var6 = 3000000;
		double var7 = 3e6;
		float var8 = 3e6F;
		double var9 = 2e-3;

		System.out.println("var6: " + var6);
		System.out.println("var7: " + var7);
		System.out.println("var8: " + var8);
		System.out.println("var9: " + var9);
	}
}

논리 타입 (true false 판단, true=1, false=0)

- boolean 타입

기본값은 false이며, 상태값에 따라 조건문과 제어문 등의 실행 흐름을 변경하는데 주로 이용된다.

//BooleanExample.java
package chapter2;

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

		boolean stop = true;
		if (stop) {
			System.out.println("중지합니다.");
		} else {
			System.out.println("시작합니다.");
		}
		/*
		 * boolean 값을 true로 줬고 stop 값이 true면 "중지합니다."를 출력하므로
		 * Console엔 "중지합니다."가 출력됨.
		 */
	}
}

 

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

4. 조건문과 반복문_활용문제  (0) 2020.03.29
3. 연산자_연습문제  (0) 2020.03.29
3. 연산자  (0) 2020.03.28
2. 변수와 타입_3. 타입 변환  (0) 2020.03.28
Intro  (0) 2020.03.28