산술 연산자(1)
·
자바/기본적인 개념
1. 사칙 연산자 - 예제(1) (2.5(float)에서 int 타입으로 변환할 때, 반올림하지 않는 것에 유의하자.) - 예제(2) (오류가 나는 이유는 byte + byte = int + int = int 이기 때문에, 값의 범위를 넘었기 때문이다.) (그래서 a+b를 (byte)(a+b)로 고쳐줘야 된다.) (그러면 결과는 40이 나오게 된다.) - 예제(3) (c의 값이 44가 나오는 이유는 큰 타입에서 작은 타입으로 이동하게 되면 오차가 생긴다는 것을 기억할 것이다.) (해설하자면 위의 그림처럼 int 값에서 32비트 만큼 300의 자리가 나오게 될 것인데, byte로 고치면 8비트 밖에 없기 때문에 int의 32비트에서 맨 뒤 8비트를 두고 자른다. 그러면 값은 44가 나오게 된다.) (위의 ..
연산자의 우선순위와 결합 규칙
·
자바/기본적인 개념
대부분 잘 알지만, 헷갈리는 부분을 정리해보았다. 1. AND 그리고 OR 연산 순위 - AND 즉, '&' 또는 '&&'가 '||'보다 연산 순위가 높다. 2. 시프트 연산자 - 만약 "x
자동 형변환
·
자바/기본적인 개념
자동 형변환이란, 컴파일러가 자동적으로 형변환을 해주는 것이다. - 자동 형변환 예제(1) (이 예제에서만 봐도 차이를 알 수 있다.) (f는 자동적으로 컴파일러가 (float)를 넣어주지만, f1은 리터럴 값이 기본 double로 되기 때문에 자동 형변환이 어렵다.) - 자동 형변환 예제(2) (큰 타입(int)에서 작은 타입(char)로 가면, c 변수처럼 명시적으로 프로그래머가 적어야 한다.) ※ char과 short의 경우 byte의 크기는 같지만 값의 범위가 다르므로, 반드시 형변환을 명시적으로 해주어야 한다.) - 자동 형변환 예제(3) byte + short -> int + int -> int char + short -> int + int -> int
형변환
·
자바/기본적인 개념
1. 실수 float와 double - 위의 예제에서 보면 다 똑같이 답이 나와야 될 것 같지만, 사실 1번과 3번만 같고 2번만 다르다. 이것이 다른 이유는 float와 double의 정밀도 차이에 있다. - 즉, float는 7자리까지, double은 15자리까지 차지할 수 있기 때문에, 그 이상의 자리는 오차가 발생할 수 있다. - 그런데 "2번과 3번은 같아야 되는거 아닌가?" 라고 생각할 수 있다. 하지만 같지 않은 이유는 이미 f 변수는 float 형식으로 저장되어 있기 때문에 double로 형변환하여도 이미 결과가 float로 나온다. - float 예제 (위에서 말했듯이 float는 7자리까지만 정밀도가 가능하기에 7을 반올림 하여 6의 자리에 7이 된다.) - 변환 예제(1) (여기서는 ..
실수형의 저장 형식과 부동 소수점의 오차
·
자바/기본적인 개념
1. 실수형의 저장 형식 - S는 부호 비트이며, 0이면 양수 1이면 음수를 나타낸다. 또한 양의 실수에서 음의 실수로 변환할 때, 정수형과 달리 '2의 보수법'을 사용하지 않고 그저 부호비트만 바꿔주면 된다. - E는 지수이며, float는 -127 ~ 128, double은 -1023 ~ 1024의 범위를 가진다. (그러나, 실제로는 숫자 아님(NAN)과 양의 무한대와 음의 무한대를 표현하기 위해 예약되어 있으므로 float는 -126 ~ 127까지의 값을 표현할 수 있다.) - M은 가수이며, 실제 값을 저장하는 부분이다. 또한 float와 double은 각각 정밀도가 다르므로 유의한다. * S와 E, M을 합쳐서 부동소수점의 형태로 저장한다. 그러므로, 값의 범위는 (+-)Mx2^E로 저장이 된다..
비트(bit)와 바이트(byte) 그리고 워드(word)
·
자바/기본적인 개념
1. 비트 - 한 자리의 2진수를 비트라고 하며, 1 비트는 컴퓨터가 값을 저장할 수 있는 최소 단위이다. - N 비트로 표현할 수 있는 10진수 (값의 개수: 2^N) (값의 범위: 0~(2^N)-1) 2. 바이트 - 비트는 작은 단위이게에 1비트를 8개씩 묶어서 바이트라 단위로 정의해서 데이터의 기본 단위로 사용한다. 3. 워드 - CPU가 한 번에 처리할 수 있는 데이터의 크기를 의미한다. - CPU의 성능에 따라 워드의 크기가 달라진다. (32비트 -> 1워드 = 4바이트) (64비트 -> 1워드 = 8바이트)
형식화된 출력 - prinf()
·
자바/기본적인 개념
원래는 println을 써 왔다. 그러나 만약 소수점 둘째짜리까지만 출력하거나, 16진수 또는 8진수를 출력할 때는 printf를 사용한다. 방식은 c언어와 비슷하며, \n이 %n만 다르다. ※ 참고 - %b: boolean - %o: 8진수 - %x 또는 %X: 16진수 - %e 또는 %E: 지수 표현식 - %g: 값을 간략하게 표현할 때 사용 - %f: 기본적으로 소수점 6자리까지만 출력 (소수점 7자리에서 반올림) (+ 만약 자신이 원하는 자릿수까지 나타내고 싶다면, f 앞에 숫자를 붙인다.) (+ 예를 들어, %14.10f는 총 14자리에 소수점은 10자리로 하겠다는 의미이다.) (+ 이때, 소수점 위에 있는 숫자는 3자리를 차지하게 되는데, 만약 2자리라면, 공백을 채운다.) (+ 만약 공백 말..
타입의 불일치와 문자와 문자열의 리터럴
·
자바/기본적인 개념
1. 타입의 불일치 - 만약 저장하는 값이 타입과 달라도 저장범위가 넓은 타입에 좁은 타입의 값을 저장하는 것은 허용한다. - ex-1) int i = 'A' (A가 유니코드 65이므로 65가 저장된다.) - ex-2) long l = 123 - ex-3) double d= 3.14f 2. 문자 리터럴 - 문자열은 내용이 없는 빈 것이 되지만, 문자는 공백이 안 된다. 즉, 문자 타입의 변수에는 하나의 값이 들어가야 한다. - ex-1) String a = ""; // 가능 - ex-2) Char a = '' // 불가능 - ex-3) Char a = ' ' // 가능 ※ 이때, String은 클래스이다. 즉, 클래스의 객체 생성이 가능하다는 뜻이다. 3. 문자열 리터럴 규칙 - 문자열 + any typ..
리터럴의 타입과 접미사
·
자바/기본적인 개념
1. 만약 정수형의 경우, long 타입의 리터럴에 접미사 'l' 또는 'L'을 붙이고, 접미사가 없으면 int 타입의 리터럴이다. - 이때, byte나 short 타입의 리터럴은 별도로 존재하지 않으며, 변수에 값을 저장할 때는 int 타입의 리터럴을 사용한다. - 또한 16진수는 리터럴 앞에 '0X' 또는 '0x'을 붙이고 8진수의 경우에는 '0'만 붙인다. 2. 만약 실수형의 경우, float 타입은 'f' 또는 'F'를, double 타입에는 'd' 또는 'D'를 붙인다. - 만약 실수 값이 변수에 저장할 때 아무런 접미사가 없으면, 그것은 기본 타입인 double이므로 'd' 또는 'D'를 생략할 수 있다. - 그래서 만약 float 타입 변수에 접미사 'f' 또는 'F'가 없으면, double..
기본형과 참조형
·
자바/기본적인 개념
자료형(data type)는 크게 '기본형'과 '참조형' 두 가지로 나눌 수 있다. 1. 기본형: 실제 값(data)를 저장한다. - 논리형(boolean), 문자형(char), 정수형(byte, short, int, long), 실수형(float, double) - 정수형에서의 btye는 이진 데이터를 다룰 때 사용되어지고, short는 c언어와의 호환을 위해서 추가되었다. - 정수형에서는 일반적으로 int를 사용하게 된다. 왜냐하면 CPU가 가장 효율적으로 처리할 수 있는 타입이기 때문이다. (정수형의 값의 법위는 -(2^n-1) ~ (2^n-1) -1 까지 이다. 이때, n은 비트 수 이다.) - float와 double은 가질 수 있는 값의 오차가 있는데, 정밀도에 따라 오차의 범위가 달라진다. ..
변수의 명명 규칙
·
자바/기본적인 개념
1. 대소문자가 구분되며 길이에 제한이 없다. - True와 true는 서로 다른 것이다. 2. 예약어를 사용해서는 안 된다. 3. 숫자로 시작해서는 안 된다. 4. 특수문자는 '_'와 '$'만을 허용한다. - $sa는 허용하지만, s#s는 허용하지 않는다. * 프로그래머들에게 권장하는 규칙 1. 클래스 이름의 첫 글자는 항상 소문자로 한다. 2. 여러 단어로 이루어진 이름은 단어의 첫 글자를 대문자로 한다. 3. 상수의 이름은 모두 대문자로 한다. 여러 단어로 이루어진 경우 '_'로 구분한다.