자바 학습 & 복습 2일차

728x90
		int a = 1;
		int b = 2;
		int c = a++; // 후위형 사용 = 일단 c라는 값에 1을 넣어놓고 그 후에 a에다가 1을 더함
		// 따라서 ++a는 3이되고 (1+1)+1 c는 아직도 1인거
		System.out.println(++a); //값 1 증가
		System.out.println(--b); // 현재 값 1 마이너스
		System.out.println(c);
		
		int i = 10;
		i = -i; // -라는 부호는 현재 정수의 부호를 반대로 바꿈 = 산수와 동일
		System.out.println("i:"+i);
		
		double ii = 3.1111;
		int iii=(int)ii;
		System.out.println(ii); 
		System.out.println(iii); 
		
		int aa=65;
		char bb = (char)aa;
		System.out.println(bb); // 유니코드 문자표, A는 실은 65로 컴퓨터가 인식, 컴퓨터는 0 1 밖에 못읽어서 일단 정해진 숫자로 저장한 후 지정 문자열로 재출력
		
		float f = 1234;
		System.out.println(f); // int로 자동형변환 - 실은 (float)1234가 맞는 표현
		
		// 다만 이렇게는 안됨 int i = 1234.1f = 값손실이 발생하기때문에 에러가남 = (int)1234.1f 은가능 = 1234
		
		//값을 보존할 수 있는 큰 값의 타입으로 자동형변환 가능
		//byte - short/char - int - long - float - double
		
		
		int aaa = 12;
		int bbb = 6;
		short ccc=31777;
		System.out.println(aaa/bbb);
		System.out.println(aaa/(float)bbb); // int에서 float로 지정을 했기 떄문에 자동으로 큰 타입인 float로 자동변경
		System.out.println(aaa+ccc); // short에서 자동으로 int로 변경
		
		// 자동형변환은 작은 타입에서 큰 타입으로 자동으로 변경 = 손실값을 막기 위함
		
		char s='2', ss='0';
		
		System.out.println(s-ss); // 유니코드(50-48) = byte - byte지만 보다 큰 타입으로 미리 일치시켜서 overflow를 방지 = int로 자동 형변환
		
		byte B = 10, BB=20;
		byte BBB = (byte)(B+BB); //작은 byte타입에 계산값 30 int의 값을 넣을려고 하니 오류, 따라서 (byte)로 미리 형변환을 시키고 값을 배정해야 컴파일 오류가 나지않음
		System.out.println(BBB);
		byte BBBB=(byte)(B*BB-72);
		System.out.println(BBBB); //-128~127의 범위에서 초과되는 개념이여서 -128로 출력됨 = 원래값은 128 ,overflow 개념
		
		int L=1_000_000 , LL=2_000_000; // 1,000,000, 2,000,000과 동일
		long LLL=L*LL;
		System.out.println(LLL); //long을 선언함에도 불구하고 -1454759936 = 이미 출력값이 정해진 값이여서 long에 그냥 자동형변환되어 그대로 출력
		System.out.println(L*(long)LL); // 값 계산전에 하나의 값만 long으로 선언해주면 알아서 long으로 자동형번환 해줌
728x90

'Java > 자바의정석 기초편' 카테고리의 다른 글

자바 학습 & 복습 6일차 - array 배열  (0) 2022.01.14
자바 학습 & 복습 5일차  (0) 2022.01.13
자바 학습 & 복습 4일차  (0) 2022.01.12
자바 학습 & 복습 3일차  (0) 2022.01.11
Java 학습 & 복습 1일차  (0) 2022.01.10