Programming/JAVA

[JAVA] 변수(자바)

HoonSikE 2022. 2. 18. 21:35
반응형
SMALL
변수(Variable)란?
프로그램에서 자료를 저장할 수 있는 이름이 주어진 컴퓨터의 메모리 공간(그릇)이다. 공간의 크기는 타입별로 달라진다.

데이터의 종류
기본형 (Primitive Type)
 - 9종류의 미리 정해진 크기의 Memory Size로 표현하고 변수 자체에 값을 저장한다.
 - 대체로 정수형은 int, 실수형은 double형을 사용하지만 필요한 수의 크기를 고려해서 타입을 선택한다.
   * 특히, long

구분 Type bit 수 값 (정수형 첫 번째 비트는 부호 비트)
논리형 boolean    true / flase
정수형
byte 8  -2^7 ~ 2^7 -1 (-128 ~ 127)
short 16  -2^15 ~ 2^15-1 (-32768 ~ 32767)
int 32  -2^31 ~ 2^31-1 (-2147483648 ~ 2147483647) : 약 20억
long 64  -2^63 ~ 2^63-1 (-9223372036854775808 ~ 9223372036854775807) : 약 900경
실수형 float 32  flot f = 0.12345678f;
double 64  double d = 0.123456789012345678;
문자형 char 16  \u0000 ~ \uffff (0~2^16-1)
 참조형(Reference Type)
 - 기본형을 제외한 모든 데이터 타입으로 크기가 미리 정해질 수 없는 데이터의 표현 
 - 변수에는 실제 값을 참조할 수 있는 주소만 저장
 - 사용자 정의 명칭 (클래스, Method, Field) - 식별자 정의 규칙
   i) 첫 글자는 ‘_’, ‘$’, 영문 대, 소문자 (한글 가능)
      int a=10, A=20; (O)
      int _a=100; (O)

   ii) 글자 수에 제한 없다.
   iii) 공백 문자 및 특수 문자 사용 불가
      int k g h = 50; (X)

   iv) 숫자는 첫 글자가 아닐 때 사용 가능
      int 100a=15; (X)
      int kor25=100; (O)

   v) 예약어 사용 불가 (Java 언어 자체가 사용하기 위해 예약해 놓은 식별자)
      ex) if, for, while, new, System 등
      int System=100; (X)

   vi) 기타 단순 약속 (대, 소문자의 규칙)
package Java;
// 변수 선언 방법
public class Primitive_Type {
	public static void main(String[] args) {
		boolean booleanType = true;
		byte byteType = 127;
		short shortType = 32767;
		// 범위초과시 오버플로우 오류 발생 (주석 해체 후 돌려보세요)
		// int intType = 2147483647+1;
		int intType = 2147483647;
		// L, l 상관없음
		long longType = 9223372036854775807L;
		//F, f 상관없음, 소수점 아래 9번째에서 반올림
		float floatType = 0.123456789f;
		// 소수점 아래 19번째에서 반올림
		// 0.* 일경우 앞의 0 생략 가능
		double doubleType = .1234567890123456789;
		// ASCII 코드 'A' 출력
		char charType = 65;	// = 'A'
		System.out.println("booleanType: " + booleanType);
		System.out.println("byteType: " + byteType);
		System.out.println("shortType: " + shortType);
		// 범위초과시 오버플로우 오류 발생 (주석 해체 후 돌려보세요)
		//System.out.println("intType: " + (intType+1));
		System.out.println("intType: " + intType);
		System.out.println("longType: " + longType);
		System.out.println("floatType: " + floatType);
		System.out.println("doubleType: " + doubleType);
		System.out.println("charType: " + charType);
	}
}
● 출력 결과
booleanType: true
byteType: 127
shortType: 32767
intType: 2147483647
longType: 9223372036854775807
floatType: 0.12345679
doubleType: 0.12345678901234568
charType: A

● Overflow 시 출력 결과
booleanType: true
byteType: 127
shortType: 32767
intType: -2147483648
longType: 9223372036854775807
floatType: 0.12345679
doubleType: 0.12345678901234568
charType: A

형 변환 (Type Casting)
 변수의 타입을 다른 타입으로 변환하는 것으로 기본형은 기본형끼리, 참조형은 참조형끼리 형 변환 가능하다. 
단, boolean은 다른 기본 타입과 호환되지 않는다.
● 기본형의 형 변환 진행
 - 묵시적 형 변환 : 값의 크기, 타입의 크기가 아닌 타입의 표현 범위가 커지는 방향으로 할당할 경우는 묵시적 형 변환 발생, 자료의 손실 걱정이 없으므로 JVM이 서비스해준다. 변수명 앞에 괄호를 붙여서 사용한다.
 * byte  short  int  long  float  double
              char 
 - 명시적 형변환 : 값 손실이 발생할 수 있으므로 프로그래머 책임하에 형변환 진행
package Java;

public class Type_Casting {
	public static void main(String[] args) {
		double doubleType = 2022.0218;
		// 명시적 형변환 (큰 데이터 -> 작은 데이터)
		int intType = (int) doubleType;
		// 묵시적 형변환 (작은 데이터 -> 큰 데이터)
		double doubleType2 = intType;
		
		System.out.println(doubleType);
		System.out.println(intType);
		System.out.println(doubleType2);
	}
}
● 출력 결과
2022.0218
2022
2022.0

형식 지정자
System.out.print 로 출력을 할 경우 사용한다.
%s 문자열 (String)
%d 정수 (byte, short, int, long)
%f 실수 (float, double)
%c 문자 (char)
package Java_2_변수;
// 변수 선언 방법
public class Format_Specifiers {
	public static void main(String[] args) {
		String stringType = "Hello, World!!";
		int intType = 2022;
		double doubleType = 2.18;
		char charType = '화';
		System.out.printf("%s  %d  %f  %c", stringType, intType, doubleType, charType);
	}
}
● 출력 결과
Hello, World!! 2022 2.180000 화

실수의 연산은 정확하지 않다
double형은 유효 자릿수를 이용한 반올림 처리를 하기 때문이다.
package Java;

import java.math.BigDecimal;

public class Real_Number {
	public static void main(String[] args) {
		// float 뺄셈
		float f1 = 2.0f;
        float f2 = 1.1f;
        System.out.println(f1-f2);
		// double 뺄셈
        double d1 = 2.0;
        double d2 = 1.1;
        System.out.println(d1 - d2);
        //double 형변환, 나눗셈
        System.out.println(( (int)(d1*100) - (int)(d2*100))/100.0);
        BigDecimal b1 = new BigDecimal("2.0");
        BigDecimal b2 = new BigDecimal("1.1");
        System.out.println("BigDecimal 이용한 뺄셈 : " + b1.subtract(b2));
	}
}
● 출력 결과
0.9
0.8999999999999999
0.9
BigDecimal 이용한 뺄셈 : 0.9

기억하면 좋은 ASCII 코드
문자 십진법 이진법
'0' 48 0110000
'1' 49 0110001
'2' 50 0110010
'A' 65 1000001
'a' 97 1100001
만약 ASCII 코드 값을 까먹었다? 출력을 해보자!!!
package Java;

public class ASCII_Code {
	public static void main(String[] args) {
		int intType = 'A';
		System.out.println(intType);
	}
}
● 출력 결과
65

상수
1. 논리형 상수
 - true/ false
2. 문자형 상수
 - '   '  (단일 따옴표) - 문자    
 - "  "  (이중 따옴표) - 문자열
 - \n : 개행 문자(New Line), 줄 바꿈
 - \r  : 리턴(Return), 커서를 맨 앞쪽으로 이동
 - \t  : 탭(Tab), 8칸 띄우기
 - \b : 백스페이스
 - \0  : null(아무것도 없다)
3. 정수형 상수
4. 실수형 상수

JAVA List
 

JAVA List

Start Java!!! ● 1 ● 2   기회는 준비된 자에게 찾아온다.

han-hoon.tistory.com


  

기회는 준비된 자에게 찾아온다.

 


 

반응형
LIST