1byte 는 8비트로 표현하는데 1비트는 부호를 나타내고 나머지 7비트로 숫자를 나타내기 때문에 -128~127를 나타낼 수 있는 것
따라서
b2 = 200; 을 주면 표현 범위를 벗어나기 때문에 표현할 수 없다.
short 타입은 2byte 자료형이다.
문자 A는 65를 나타냄.
c는 아스키 코드값으로 99를 나타낸다.
char는byte와 비교불가함!!
문자는 단 한 개를 말하는 것이고 ''으로 표현함. 문자열은 0문자 이상을 말하고 ""로 나타냄.
int 타입은 4byte자료형이다.
자바는 int형이 연산을 위한 기본 타입이다.
b2 = i1; 컴파일 오류가 발생한다. 큰 자료형(int 4byte)은 작은 자료형(byte 1byte)에 대입이 불가하다.
b2 = (byte)i1; 처럼 int를 byte로 형 변환을 시키면 대입할 수 있다. 하지만 i1의 값은 150이므로 표현값(-128~127)을 넘어가기 때문에 overflow가 발생한다. 즉 150은 1001 0110인데 앞에 1은 부호를 나타내는 것이고 음수를 컴퓨터가 저장할 때는 2의 보수로 저장하기 때문에 1110 1010으로 저장이 되는 것. 그래서 -106가 나옴.
'1' 문자 1을 말하는 것이기 때문에 해당 숫자는 49이고 '3'은 문자 3이기에 51. 따라서 i3은 100이 나온다.
ㅇ'c'는 99.
long은 8byte 자료형이다.
long a1 = 10; 이면 int를 long에 대입하는데 작은 자료형은 큰 자료형에 대입할 수 있음. 자동으로 형 변환이 일어난다.
long a2 = 2300000000; 를 넣으면 컴파일 오류가 생기는데, int형의 범위를 벗어나기 때문이다. int형은 4byte로 32비트로 표현할 수 있는 숫자가 대략 -21억~21억 이기 때문임.
첫 날 Zoom수업을 통해 (인원을 나눠서 현장으로 수업을 들으러 간다.) Java설치와 Eclipse설치를 도와주셨다. Java에 대한 설명과 주로 print문에 대해 배웠다.
아직 public class란 것이 무슨 개념인지 자세히는 모르겠다. (컴퓨터일반관련 공부를 했지만 개념적으로만 그런거구나 하는 정도라서 ...)
print와 printf의 차이를 알아보기 위해 수업 중에 선생님께서 적어본 것들.
\t : Tab키 역할 \n : 출력 후 라인을 넘긴다. System.out.println("\nSpring"); 은 라인을 넘기고 Spring을 출력 하고 라인을 넘긴다.
숫자 + 문자열 = 문자열 이라고 적어놓은 것은 왜 적어놓은지 모르겠다. 걍 틀린 정보인 것 같음. 아니면 선생님께서 말씀하시는 것을 내가 잘못 받아적었거나. 여기서는 printf(format)을 적용해서 출력해보았다. %는 나머지를 구하는 연산자이고 %d는 decimal 십진법으로 표현하라는 것. 큰따옴표 안에서 연산기능을 하려면 두 개를 적어야 했다. System.out.printf();와 System.out.format();이 서로 같은 의미라고 하셨다.
이부분은 혼자 다시 notepad를 이용해서 적고 cmd를 이용해서 실행해보았다.
수업시간에 썼던 그대로 class를 정의했었는데 Ex02_printf 로 해놓고 파일이름은 Ex01_printf로 해놔서 자꾸 실행이 안돼고 오류가 떠서 뭐지??? 했다. 선생님께서 cmd를 이용해서 class파일로 바꾼 후 java로 실행하는 것을 초반에 보여주셨었는데, 예전에 혼자 파이썬 공부를 했을 때도 이렇게 실행했고 그냥 혼자 복습하는 거라서 이걸로 해보았다.
중간에 주석을 달아 놓은 것이 뭔가 오류가 있어서 그냥 그 줄을 뺐다.
오류를 고쳐서 java compiler로 class 파일을 만들고 파일이름도 Ex02였던 것을 01로 바꾸고 java로 실행시켜 보았다. 실행 성공~
%f는 소수점을 6자리까지 표시하라는 의미이다.
다시 저장하고 컴파일러 돌려주고 java로 실행 해보니 15.4를 소수점 6자리까지 표현하면 15.400000 로 바르게 표기가 되었다.
%f 와 %g 를 비교해 보기위해 돌렸는데, %g는 소수자리가 3개까지만 나와야되는데 왜 4개까지 나온건지....eclipse로 선생님과 함께 했던 것을 작동시켰을 때는 잘나왔는데. 흠
System.out.printf("%e\n", 12345.0e-03); %e는 소수점 이하 6자리까지 표현한다. 12345.0e-03은 실은 12.3450을 나타내는 것?아닌가? 이게 왜 1.234500e+01이 되는거지? >>12.3450을 지수표현으로 바꾸면 1.23450e+01인데 소수자리를 여섯자리까지 표시할 수 있으므로 1.234500e+01가 되는 것임.
System.out.printf("%e10.3e\n", 12345.0e-03); 12.345를 나타내는 것이고 지수표현으로 바꾸면 1.2345e+01인데 소수자리를 세자리까지만 표시할 수 있으므로 마지막을 반올림해서 1.235e+01인 것.
이부분은 진짜 헷갈린다 근데 %g는 오차가 심해서 실제로는 많이 사용하지 않는 다고 한다.