20.12.07

자료형 Data Type

  1. 기본형 Primitive Type
  • 값(literal)을 저장
  • 8가지
    문자형 char
    논리형 boolean
    정수형 byte short int long
    실수형 float double
  1. 참조형 Reference Type
  • 주소값을 저장(4byte)

  • 기본형을 제외한 모든 타입
    String, System, Date, Calendar
    모든 클래스는 자료형이다.

    bit
    byte - 8bit
    kilo byte - 1024byte
    mega byte - 1024kb
    giga byte - 1024mb
    tera byte - 1024gb
    peta byte - 1024tb
    exa byte
    zetta byte
    yotta byte

public class PrimitiveTypeTest {

	public static void main(String[] args) {
	PrimitiveTypeTest p = new PrimitiveTypeTest();
	p.test1();
	p.test2();
	p.test3();
	p.test4();
	}


	public void test4() { 
	int i = Integer.MAX_VALUE;
	System.out.println(i);
    
	i = i + 2;
	System.out.println(i);
	} // Data Overflow

	변수 : 메모리에 값을 담기 위한 물리적인 공간	
	상수 : 한번 값대입 후에 값을 변경할 수 없는 변수, 가져다 쓰는것만 됨, final


	public void test3() {
	final int AGE = 20; // 파이널변수명은 대문자로 쓰는 관례가있음
	AGE = 30; // AGE가 상수 값을 받았기때문에 값 변경안됨
	System.out.println(AGE);
	
	int myAge = AGE + 1;
	System.out.println(myAge);
	
	//jdk가 지정해둔 상수
	System.out.println(10 * 10 * Math.PI);
	//정수형이 가지고 있는 최소값 ~ 최대값
	System.out.println(Byte.MIN_VALUE + " ~ " + Byte.MAX_VALUE);
	System.out.println(Short.MIN_VALUE + " ~ " + Short.MAX_VALUE);
	System.out.println(Integer.MIN_VALUE + " ~ " + Integer.MAX_VALUE);
	System.out.println(Long.MIN_VALUE + " ~ " + Long.MAX_VALUE);
	}
	
	//초기화
    	변수 선언과 값대입을 한줄에서 처리

	public void test2() {
	//int num;
	//num = 123;
	
	int num = 123;
	System.out.println(num);
			
	double d;
	d = 0.1;
	//변수는 값대입 없이 사용할 수 없다.
	d = d + 1.23;
	System.out.println(d);
	
	//같은 타입인 경우, 한줄에 여러개 변수선언, 초기화가 가능하다.
	int a, b;
	a = 1;
	b = 2;
	
	int c = 3, e = 4;		
	
	System.out.println(a + "" + b);
	
	//정수연산
	int i = 10;
	int j = 3;
	
	System.out.println(i + j);
	System.out.println(i - j);
	System.out.println(i * j);//곱하기
	System.out.println(i / j);//나누기 몫만 처리
	System.out.println(i % j);//나머지
	}
	
	//기본형
	1. 논리형
	boolean(1byte) : true | false
	2. 문자형
	char(2byte) 0 ~ 65535 : 'a', '가', '1'
	3. 정수형
	byte(1byte) -128 ~ 127(256)
	short(2byte) -32768 ~ 32767(65536)
	int(4byte)(기본형) -2147483648 ~ 2147483647(42억)
	long(8byte) -9223372036854775808 ~ 9223372036854775807(1844경)
	4. 실수형
	float(4byte) 소수점 이하 7자리
	double(8byte)(기본형) 소수점 이하 16자리


	public void test1() {
	//1. 변수 선언
	boolean bool;
	
	char ch;
	
	byte b;
	short sh;
	int i;
	long l;
	
	float f;
	double d;
	
	//2. 변수에 값대입
	bool = true;
	bool = false;
	bool = (5 > 2); // > < >= <=
	bool = (3 == 4);
	bool = (3 != 4); // 같지 않으면 true, 같으면 false
	bool = !bool; //bool의 값을 반전시킴 true 였으면 false로, false였으면 true로
	
	ch = 'a';
	ch = '가';
	ch = '韓';
	ch = ' ';//공란
	
	//정수 기본형 int : 12343 -> int
	b = 120;
	//b = 130; // Type mismatch: cannot convert from int to byte
	sh = 32000;
	i = 100000000;
	l = 1_234_567_890_123L; // The literal 1234567890123 of type int is out of range 
	//정수 기본형은 int, long쓰려면 숫자뒤에 소(대)문자 l을 써줘야한다. l은 1하고 헷갈려서 L쓰는게 좋음
        //정수형 long은 1844경이라는 큰 수를 담기때문에 읽기 편하려고 숫자 사이에 _넣어도 코드인식됨
	//long l = 1_234_567_891_234_567L;
	
	//실수 기본형 double
	f = 0.1234567890F; // Type mismatch: cannot convert from double to float
	//실수 기본형은 double, float쓰려면 숫자뒤에 소(대)문자 f를 써줘야한다.
	d = 0.12345678901234567890;
	
	//3. 변수 사용(출력)
	System.out.println("bool = " + bool);
	System.out.println("ch = " + ch);
	System.out.println("b = " + b);
	System.out.println("sh = " + sh);
	System.out.println("i = " + i);
	System.out.println("l = " + l);
	System.out.println("f = " + d);
	System.out.println("d = " + d);
	}

}
    
    

컴퓨터 작동원리

  1. 같은 자료형끼리만 연산할 수 있다.
  2. 연산 결과 역시 동일한 자료형이다.
  3. 같은 자료형의 변수에만 대입할 수 있다.
  • 위의 조건을 만족하기 위해서 암묵적/명시적 형변환이 필요하다.
  1. 암묵적 : 자동으로 처리
  2. 명시적 : 형변환 코드 필요
public class CastingTest {

	public static void main(String[] args) {
	CastingTest c = new CastingTest();
	c.test1();
	c.test2();
	c.test3();
	c.test4();
	}

	//java.lang.String 문자열 "abc"
	- 참조형(객체 만들어 사용)인데
	- 기본형처럼 사용가능(리터럴(값)을 대입하는 형태)
	- 너무많이써서 객체만들지 않고 값바로 부여해서 사용가능


	public void test4() {
	String name = "홍길동";
	String name2 = new String("홍길동");
	
	//더하기연산 지원(빼기 곱하기 안됨)
	System.out.println(name + " 만세!");

	//char
	System.out.println(name + 'a');
	System.out.println(123 + 'a');
	System.out.println("abc" + 'z' + 123);
	System.out.println(123 + 'z' + "abc");
	}

	//형변환 유의사항
	- byte, short, char타입은 연산시 자동으로 int(정수 기본형)으로 변환되서 처리


	public void test3() {
	byte b1 = 10;
	byte b2 = 20;
	byte result = (byte)(b1 + b2);
	System.out.println("result = " + result);
	
	boolean bool = 'a' > (b1 + b2);
	char > (byte + byte)
	char > (int + int)
	char > int
	int(97) > int(30)
	System.out.println("bool = " + bool);
	
	//char변수에 int대입
	char ch = 65; // A
	System.out.println(ch);
	
	ch = '\ud734'; // '역슬래쉬u' = 유니코드
	System.out.println(ch);
	}

	//명시적 형변환
	1. 크기가 작은 타입으로 형변환 - 데이터 손실
	2. 크기가 큰타입으로 형변환
       
        
	public void test2() {
	//1.데이터 손실이 있는 경우
	int num = (int)3.7; // int = double(double을 int로 넣는거임)
	System.out.println(num); //3.7에서 소수점버리고 3이됨
	
	//2.데이터 손실없이 큰 타입으로 변환
	int a = 10;
	int b = 4;
	System.out.println((double)a / b);//(double)int / int
					  // double / int
					  // double / double
	System.out.println(a * 1.0 / b); //a가 10.0가 되면서 결과값 소수점까지 출력
    
	//2147483647 + 1 = 2147483648
	int i = Integer.MAX_VALUE;
	System.out.println((long)i + 1);
	System.out.println(i + 1L);
	}

	// 자동형변환
	크기가 작은 타입에서 큰 타입으로 변환은 자동으로 처리
	정수에서 실수로의 변환은 자동처리
	byte(1) -> short(2) -> int(4) -> long(8) -> float(4) -> double(8)
       		    char(2)


	public void test1() {
	//대입연산
	int num = 300;
	long INum = num;
	System.out.println("INum = " + INum);
	
	int a = 3;// double a = 3.0으로 바뀜
	double b = 1.5;
	System.out.println(a + b);// int(3) + double
				  // double(3.0) + double(int가 double로 바뀜)
	
	int c = '0'; // int = char(char가 int로 바뀜)
       		     // int = int
	System.out.println(c);
	System.out.println('c' + 1); // char('c') + int
				     // char(99) + int
	}
        
}

Ctrl키 + W : 창닫기(이클립스도 됨)

Ctrl + M : 편집기창 최대화(되돌리기)

Alt 위아래로 방향키 : 문장이동

Ctrl+Alt 위아래로 방향키 : 문장복사

Alt+Shift+R : 커서 두고있는 단어 찾아서 모두바꾸기

좋은 웹페이지 즐겨찾기