갈림길 이정표

[2. 변수와 타입] 본문

Programming Language/Java 마스터하기(feat. 이것이 자바다)

[2. 변수와 타입]

이몽뇽 2020. 7. 19. 21:30

2.1 변수

 

변수 (Variable): 하나의 값을 저장할 수 있는 메모리 공간

더보기

변수 선언

"Data type" "Variable name"

Ex. int mileStone

package pack1;

public class Test1 {
	public static void main(String[] args) {
		System.out.println("성공");
//		한 줄 주석
		/*
		 여러
		 줄
		 주석
		 */
//		기본형 변수 : 상수 기억장소의 이름
//		정수 기억형 변수 (한 바이트 확보)
		byte var1; // 1byte
		var1 = 5;
		var1 = 7;
		var1 = 12;
		
//		덮어쓰기 = Assign[치환] (단 포인터 개념이 없어서 시스템 제어 기능 없음. 오직 웹개발 전용)
//		1 byte = 부호 (양수, 음수), 7자리는 2진수. 총  8자리 가 1 byte
//		Ex. 00000000 = 0, -128~127 표현 가능 뒤에서 부터 2^1,2, ..., 7 + sign 부호
//		영어는 1byte, 한글은 2~4byte
//		더 길게 크게 표현하고 싶으면 short<double<int<long 순으로 변경
		System.out.println(var1);
		System.out.println(Byte.MAX_VALUE);
		System.out.println(Byte.MIN_VALUE); // -128~127
		
		short var2 = 23; // 2byte
		System.out.println(var2);
		System.out.println(Short.MAX_VALUE);
		System.out.println(Short.MIN_VALUE); // -32768~32767
		
		int var3 = 12; // 4byte
		System.out.println(var3);
		System.out.println(Integer.MAX_VALUE);
		System.out.println(Integer.MIN_VALUE); // -2147483648~2147483647
		
		long var4 = 12; // 8byte
		System.out.println(var4);
		System.out.println(Long.MAX_VALUE);
		System.out.println(Long.MIN_VALUE);
//		여기까지는 자동 형변환 Promotion
		
		System.out.println("-------");
//		byte b1 = (byte)128; // Cast 연산 : 쓰레기여도 좋아 그냥 강제적으로 집어 넣어줘 (강제 형변환)
		byte b1 = 5; // integer 가 아닌 것 형변환
		byte b2 = 10; // 자동 형변환 (promotion)
//		byte b3 = b1 + b2; // 5 + 10 은 되는 데 b1 + b2 는 error (왜냐면 변수기 때문에 언제 128이상일지 모른다)
		byte b3 = (byte)(b1 + b2);
		System.out.println("b3 : " + b3);
		
		short s1 = (short)40000;
		int i1 = (int)2147483647; //정수 기억 장소의 기존 타입은 integer라서 (int) 못씀
		i1 = 2147483647;
		long l1 = 2147483648L; //L=long형
//		따라서 실제로 쓰는 기본 정수 입력시 다른 거 다 필요없고 그냥 int
		
		System.out.println("\n실수 처리 -------");
		double d1 =5.6; // 8byte 확보
		d1 = 5; // 정수는 자동 실수화 (promotion)
		System.out.println(d1);
//		int kbs = (int)9.0;
		int kbs  = (int)9.6; // 버림 (int 는 정수니까)
		System.out.println("kbs : " + kbs);
		
//		float f1 = 3.5; // error=실수기억장소의 기존 타입은 double
		float f1 = (float)3.5;
		System.out.println(f1);
		
//		정수는  int, 실수는  double
		
		System.out.println();
		double result = 4.5 + 10; // 정수 실수 연산시 큰 타입으로 자동 형변환
		System.out.println("result : " + result);
		
		System.out.println("--------");
		boolean bu1 = true;
		bu1 = false;
		System.out.println(bu1);
		
		System.out.println("------");
		char c1 = 'a'; // 'character' 문자
//		c1 = 'abc'; 얘는 문자열(String)이라서 ""
		System.out.println(c1 + " " + (int)c1 + " " + (char)97); //(char) 이것도 강제 형변환
		// 아스키 코드: 0,1 로는 모든 데이터 표시 못함 그래서 8자리로 1byte 문자 그림 표현
		// 소문자 a,b,c는 외워라 (97, 98, 99)
		// line feed (10) + carriage reture (13)  = 'Enter' 
		// 숫자 48~64
		
		System.out.println("----문자열(String) : 기본형 X, 참조형 O----");
		String msg = "홍길동";
		System.out.println(msg);
		
		System.out.println("----------");
		System.out.println("안녕" + '\n' + "반가워"); // \n = line skip = Enter
		System.out.println("안녕" + (char)10 + "반가워");
		System.out.println("안녕" + (char)13 + "반가워"); //아스키 코드 [10진수] Enter
		
		System.out.println();
		int aa = 0x01; // 이렇게 쓰면 16진수 hexa (0~9,a~f)
		aa = 0xff;
		System.out.println(aa);
		int bb = 072; // 이렇게 쓰면 8진수 octal (0~7)
		System.out.println(bb);
		// 사시 Java 에선 정수와 실수만 알면 됨
		
		//byte, short, int, long, float, double, boolean, char = 기본형 (기억장소 확보 후 값 지정) 
		
	}
}

2.2 데이터 타입

2.3 타입 변환

Comments