[Java] Java공부 2일차(2)

HwangHyoSang·2022년 7월 3일
0

java공부

목록 보기
3/6

형 변환(Type Conversion)

형 변환이란 데이터의 타입을 변경하는 것.

int 200과 float 200.0의 이진수값은 다르다!
int 200 - 00000000 00000000 00000000 11001000
float 200 - 01000011 01001000 00000000 00000000

두 개의 이진수 값이 다르기 떄문에 int값과 float 값을 더할 경우 한 쪽의 데이터 타입을 다른쪽의 데이터 타입으로 변환해주어야 하는데 Java에서는 자동으로 변환해줌 -> 이것을 자동 형변환 이라고 부름.

byte 타입은 short가 될 수 있지만 short는 byte 타입이 될 수 없다. long은 float가 될 수 있지만, float는 long이 될 수 없다.
(이건 따로 공부해야할듯? 왜 안되는지 -> 자동 형변환만 자동으로 안되는듯)

상수 연산 형변화 예제

int a = 3;
float b = 1.0F;
double c = a + b;

위의 연산은 두 번의 형 변환이 일어난다.

a+b 에서 int a 가 float a로 형변환이 발생하고, a+b가 double형에 담기면서 float a+b -> double a+b 로 형변환이 발생한다.

명시적 형변환

float a = 100.0; -> 에러 실수는 기본 double형
int b = 100.0F; -> int형에 float형 상수를 입력하려고 했기때문에 에러

float a = (float)100.0; -> 소스코드는 뒤에서부터 읽기떄문에 다음의 과정을 거침

1.double형 100.0을 확인하고 2. (float)를 만나서 100.0이 float형이됌 3. float 형 100.0이 float a에 저장

int b = (int)100.0F;

float형 100.0을 확인하고, (int) 형병환에 의해 float 100.0이 int형으로 형변환 int b 에 저장

연산자

연산자란 특정한 작업을 하기 위해서 사용하는 기호를 의미.

산술 연산자

  • 더하기
  • 빼기
  • 곱하기
    / 나누기 ( 정수 연산지 나머지를 버리지만, 실수연산시 나머지를 버리지 않게됌, 정수/실수 연산시에도 정수가 실수로 형변환 되면서 결과가 실수가 출력)
    % 나머지

단항 연산자

  • 양수를 표현한다. 실제로는 사용할 필요가 없다.
  • 음수를 표현한다.
    ++ 증가(increment) 연산자로 항의 값을 1씩 증가 시킨다.
    -- 감소(Decrement) 연산자

연산의 우선순위


비교와 Boolean

불린(Boolean)은 참과 거짓을 의미하는 데이터 타입으로 bool이라고도 부른다. 불린은 정수나 문자와 같이 하나의 데이터 타입인데, 참을 의미하는 true와 거짓을 의미하는 false 두 가지의 값을 가지고 있다. 아래는 비교 연산자들에 대한 설명이다.

비교 연산자(관계 연산자)

1. ==

좌항과 우항을 비교해서 서로 값이 같다면 true 다르다면 false가 된다. '='이 두 개인 것을 주의하자. '='이 하나인 것은 대입 연산자로 우항의 값을 좌항의 변수에 대입할 때 사용하는 것으로 의미가 완전히 다르다

중요 - vaule가 들어갈 때는 같은 값인지 비교하는 것 이지만
변수가 들어갈 경우 값이 아니라 변수들이 서로 타입이 동일한 객체인지 알아내기 위해 사용되는 연산자이기 때문에 문제발생가능!

2. !=

좌항과 우항의 값이 같지 않을경우 true를 반환, == 와 반대되는 결과를 보여줌

3. >

좌항이 우항보다 크다면 참, 그렇지 않다면 거짓임을 알려주는 연산자다.
< 는 >와 반대의 의미를 가짐.

4. >=

좌항이 우항보다 크거나 같다. <= 는 >=와 반대의 의미를 가짐

5. .equals

.equals는 문자열을 비교할 때 사용하는 메소드다.

문자열을 비교할 때는 == 대신 .equals 를 쓰도록하자.

==를 사용할 경우 값이 같더라도 동일한 타입의 객체가 아닐경우 false 반환가능


컴공 전공자 기준에서 헷갈리거나 잊으면 안되는 개념들에 대해서만 작성하고 있기때문에 이미 잘 알고있거나 필요없는 내용을 작성하지 않고있으니 만약 게시글을 보고계신 비전공자분이 있다면 '생활코딩'을 보면서 제 글을 읽으시면 좋을것같습니다.

github 블로그 만들기 너무 어렵다... 일단 velog쓰면서 하는법 찾다가 이사해야겠다

profile
하루의 기억을 정리하는 기록장

0개의 댓글