본문 바로가기
지식공유/JAVA

JAVA 수업 복습 정리(5)_자료형/리터럴/값/java/프로그래밍

by 시간기억자 2024. 6. 1.
반응형

* 자료형(DataType)

  • 컴퓨터 저장단위
    → Bit(0 또는 1) → Byte(8Bit) ⇒ 영어기준 1문자당 1Byte 사용
    → 저장의 최소단위는 Byte 이다.

  • 자료형(DataType) : 값 또는 객체를 표현하기 위한 단어(키워드 또는 식별자)
    - 기본형 : 값을 표현하기 위한 자료형(8개) → 키워드
        → 숫자형(정수형, 실수형, 문자형) : 연산가능 / 논리형 : 연산불가능
        → byte >> short >> char >> int >> long >> float >> double
    - 참조형 : 객체를 표현하기 위한 자료형 → 식별자(클래스)
package basic;

//컴퓨터 저장단위
//=> Bit(0 또는 1) - Byte(8Bit) => 영어기준 1문자당 1Byte가 사용된다고 생각 
// 저장의 최소단위는 Byte 다

//50(10진수) => 2진수로 : 110010
//=> 이걸 바이트 단위로 저장해야 한다(8Bit) / 8Bit중 6개만 있으니 앞의 2개를 0으로 채워줌 => 00110010


//자료형(DataType) : 값 또는 객체를 표현하기 위한 단어(키워드 또는 식별자)
//=> 기본형(PrimitiveType) : 값을 표현하기 위한 자료형 - 키워드
//=> 참조형(ReferenceType) : 객체를 표현하기 위한 자료형 - 식별자(클래스)

//기본형 : 숫자형(정수형, 실수형, 문자형), 논리형으로 구분하며 값을 표현하거나 변수를 선언할 때 사용

public class DataTypeApp {
	public static void main(String[] args) {
		//정수형(IntegerType) : 소수점이 없는 숫자값 - 정수값
		//=> Java 언어는 정수값을 기본적으로 4Byte(-2147483648~2147483647)로 표현
		System.out.println("<<정수형(IntegerType)>>");
		System.out.println("정수값(10진수 100) = "+100); //정수값 : 10진수
		//println() 메소드는 정수값을 무조건 10진수로 변환하여 출력 처리
		System.out.println("정수값(8진수 100) = "+0100); //정수값 : 8진수(숫자 앞에 0을 붙임) 
		System.out.println("정수값(16진수 100) = "+0x100); //정수값 : 6진수(숫자 앞에 0x를 붙임)
		System.out.println("정수값(10진수 100) = "+100L); //정수값L(대소문자 모두 가능) : 10진수 - LongType(8Byte로 표현)
		
		System.out.println("정수값 = "+2147483647);
		//4Byte로 표현할 수 없는 정수값을 사용할 경우 에러 발생
		//System.out.println("정수값 = "+2147483648); 정수 범위를 벗어나서 에러뜬다
		//4Byte로 표현할 수 없는 정수값은 LongType으로 표현하여 사용
		System.out.println("정수값 = "+2147483648L); // 정수 범위를 벗어났지만 뒤에 L을 붙여서 에러 안남
		
		//정수값을 표현하기 위한 자료형 - 키워드
		//=> byte(1Byte), short(2Byte), int(4Byte), long(8Byte)
		byte a1=127; //1Byte : -128~127범위만 가능
		short a2=32767;//2Byte : -32768~32767 => C언어와의 호환을 위해 만들어짐
		int a3=2147483647;//4Byte : -2147483648~2147483647
		long a4=2147483647;//8Byte : 엄청 큰 값 표현 가능
		
		System.out.println("a1 = "+a1);
		System.out.println("a2 = "+a2);
		System.out.println("a3 = "+a3);
		System.out.println("a4 = "+a4);
		
		//int a5=100L; => 값에 대한 손실이 발생할 수 있으므로 에러 발생(변수는 4Byte 값은 8Byte)
		//자료형이 큰 변수에는 자료형이 작은 리터럴(값) 저장 가능
		long a5=100;//값에 대한 손실은 없어 에러는 아니지만 4Byte값을 8Byte에 저장한 것이 적절하지는 않다.
		System.out.println("a5 = "+a5);
		System.out.println("===================================================================");
		
		//실수형(DoubleType) :  소수점이 있는 숫자값 - 실수값
		//=> Java 언어는 정수값을 기본적으로 8Byte로 표현 - 부동소수점 방식으로 표현
		System.out.println("<<실수형(DoubleType)>>");
		System.out.println("실수값(4Byte) = "+12.3F); //실수값F >> 4Byte(FloatType)
		System.out.println("실수값(8Byte) = "+12.3); //실수값 >> 8Byte(DoubleType)
		//println() 메소드는 실수값이 아주 작거나 큰 경우 지수형태로 변환하여 출력 => 1.23E-10
		System.out.println("실수값(8Byte) = "+0.000000000123);
		//실수값을 지수형태로 표현하여 사용 가능
		System.out.println("실수값(8Byte) = "+1.23E10);
		
		//실수값을 표현하기 위한 자료형 - float(4Byte), double(8Byte)
		//float b1=1.23456789; 8Byte(double) 값을 4byte 자료형에 저장하려고 해서 에러남
		float b1=1.23456789F;//가수부로 표현 가능한 크기(정밀도) : 소수점 7자리
		double b2=1.23456789;//가수부로 표현 가능한 크기(정밀도) : 소수점 15자리
		
		System.out.println("b1 = "+b1); //소수점 7자리까지 표현되기에 뒤에 자리가 반올림 되면서 표현됨
		System.out.println("b2 = "+b2);
		System.out.println("===================================================================");
		
		//문자형(CharacterType) : ' ' 안에 하나의 문자로 표현되는 값
		//=> Java 언어는 문자값을 기본적으로 2Byte로 표현
		//=> 문자값은 일반 문자 외에 회피문자(제어문자) 존재
		//회피문자(Escape Character) : 표현 불가능한 문자를 표현하기 위해 만들어진 문자값 - [\]기호 사용하여 문자표현
		//=> '\n' : 엔터(Enter), '\t' : 탭(Tab), '\'' : ' 문자, '\"' : " 문자, '\\' : \ 문자, '\0' : NULL문자
		//문자값은 내부적으로 약속된 정수값(0~65535)으로 표현되어 사용 - 유니코드(Unicode)
		//=> 'A' : 65, 'a' : 97 (대소문자의 차이는 32), '0' : 48, ' ' :32, '\n' : 13, '가' : 44032
		System.out.println("<<문자형(CharacterType)>>");
		System.out.println("문자값 = "+'A');
		System.out.println("문자값 = "+'가');
		System.out.println("문자값 = "+'\'');
		System.out.println("문자값 = "+'\\');
		
		//문자값을 표현하기 위한 자료형 - char(2Byte)
		char c1='A';
		char c2=65; //문자 변수에는 문자값 대신 약속된 정수값 저장 가능
		char c3='a'-32; //문자값에 대한 연산 가능
		
		System.out.println("c1 = "+c1);
		System.out.println("c2 = "+c2);
		System.out.println("c3 = "+c3);
		
		char c4=45000; // 약속된 숫자값은 문자이다
		System.out.println("c4 = "+c4);
		System.out.println("===================================================================");
		//논리형(BooleanType) : false(거짓) 또는 true(참) - 논리값 / 참과 거짓은 1과 0이 아니다.
		//=> Java 언어는 논리값을 기본적으로 1Byte로 표현
		System.out.println("<<논리형(BooleanType)>>");
		System.out.println("논리값 = "+false);
		System.out.println("논리값 = "+true);
		//관계연산자(비교연산자)를 이용한 연산식의 결과값으로 논리값을 제공
		System.out.println("논리값 = "+(20 < 10));
		System.out.println("논리값 = "+(20 > 10));
		
		//논리값을 표현하기 위한 자료형 - boolean(1Byte)
		boolean d1=false;
		boolean d2=20>10;
		System.out.println("d1 = "+d1);
		System.out.println("d2 = "+d2);
		System.out.println("===================================================================");
		//문자열(StringType) : " " 안에 0개 이상의 문자들을 사용하여 표현된 값 - String 객체
		//=> 문자열은 기본형(원시형)이 아닌 String 클래스(참조형)를 사용하여 표현
		System.out.println("<<문자열(StringType)>>");
		System.out.println("문자열 = "+"홍길동");
		System.out.println("문자열 = "+"유관순 열사가 \"대한민국 만세\"를 외쳤습니다.");
		
		//문자열을 표현하기 위한 자료형 - String 클래스
		String name="임꺽정";
		System.out.println("이름 = "+name);
		System.out.println("===================================================================");
		
	}
}

 

반응형

댓글