[Java] 자바 프로그래밍 - 03 자료형,연산자

Dev_Honey·2022년 11월 25일

JAVA

목록 보기
3/8
post-thumbnail

1. 자료형(DataType)

데이터의 크기

8 bit1 byte
1024 byte1 kilobyte
1024 kilobyte1 megabyte
1024 megabyte1 gigabyte
1024 gigabyte1 terabyte
1024 terabyte1 petabyte
1024 petabyte1 exabyte
1024 exabyte1 zettabyte

데이터 타입 비교

데이터 타입메모리의 크기표현 가능 범위
byte1 byte-128 ~ 127
short2 byte-32,768 ~ 32,767
int4 byte-2,147,483,648 ~ 2,147,483,647
long8 byte-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807

int가 가장 빠르고 많이 사용됨

상수의 데이터 타입
변수는 변하는 값, 상수는 변하지 않는 값(constant)
int a = 1;
여기서 a는 변수, 1은 상수이다.

형 변환
double a = 3.0F;
변수 a는 double, 상수 3.0은 float이다. 자바에서 3.0F를 float형이 아닌 double로 자동 형 변환을 해줘서 double a의 변수에 담는데 전혀 에러가 나지 않는다.
float a = 3.0;
이거는 오류가 나는데, 왜냐면 기본적으로 실수는 double을 가지는데 자바가 float를 double로 자동 형 변환 해주지 않기에 위는 3.0이라는 double 형인 상수를 float형인 변수 a에 담으려고 하니 type mismatch가 발생

따라서, 자동 형 변환의 원칙은?
=== 암시적 형 변환
표현범위가 좁은 데이터 타입에서 넓은 데이터 타입으로의 변환만 허용된다는 것!!

int a = 3;
float b = 1.0F;
double c = a+b;
//a가 먼저 float형으로 자동 형 변환이 일어나서 3.0F가 되고 a+b = 4.0F인데, double c에 담아야 하기에 4.0F는 4.0D의 형태로 타입 변환이 일어난다.

명시적 형 변환

float a = 100.0; //double,double->float(x) 오류
int b = 100.0F //float,float -> int(x) 오류
float a = (float)100.0;
int b = (int)100.0F;
//아래 바뀐 코드는 에러가 나지 않는다. 명시적으로 double일 100.0을 float이라고 데이터 타입을 지정해줬고, 100.0F도 원래는 float이어야하지만, 명시적으로 int로 지정해줘서 오류가 나지 않는 것! 

2. 연산자

1. 대입연산자

대입 연산자 '=' 는 변수에 값을 할당할 때 사용한다.
int a = 1;

2. 산술연산자

산술(Arithmatic)연산자는 수학적인 계산에 사용되는 연산자다.수학에서의 연산자와 프로그래밍에서의 연산자는 기호의 모양이 조금 다른 점!

연산자설명
+더하기
-빼기
*곱하기
/나누기
%나머지

이항연산자

기본적인 산수를 연산자를 이용해 표현

문자열을 + 연산자로 더하기

단항연산자
하나의 항을 대상으로 연산이 이루어지는 연산자

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

Boolean
불린(Boolean)은 참과 거짓을 의미하는 데이터 타입으로 bool이라고 부른다. Boolean은 정수나 문자와 같이 하나의 데이터 타입인데, 참을 의미하는 true와 거짓을 의미하는 false 두 가지의 값을 가지고 있다.

3. 비교연산자

비교 연산자는 피연산자 사이의 상대적인 크기를 판단하여, 참(true)과 거짓(false)을 반환
비교 연산자는 모두 두 개의 피연산자를 가지는 이항 연산자이며, 피연산자들의 결합 방향은 왼쪽에서 오른쪽

=== 같다
1===1 True
!= 같지않다
1!=2 True

크다
1>2 False
= 크거나 같다
1>=2 False
<= 작거나 같다
1<=2 True
비교연산자는 비교 결과 boolean값인 True or False를 반환한다.

비교 연산자설명
==왼쪽 피연산자와 오른쪽 피연산자의 값이 같으면 참을 반환함.
===왼쪽 피연산자와 오른쪽 피연산자의 값이 같고, 같은 타입이면 참을 반환함.
!=왼쪽 피연산자와 오른쪽 피연산자의 값이 같지 않으면 참을 반환함.
!==왼쪽 피연산자와 오른쪽 피연산자의 값이 같지 않거나, 타입이 다르면 참을 반환함.
>왼쪽 피연산자의 값이 오른쪽 피연산자의 값보다 크면 참을 반환함.
>=왼쪽 피연산자의 값이 오른쪽 피연산자의 값보다 크거나 같으면 참을 반환함.
<왼쪽 피연산자의 값이 오른쪽 피연산자의 값보다 작으면 참을 반환함.
<=왼쪽 피연산자의 값이 오른쪽 피연산자의 값보다 작거나 같으면 참을 반환함.

4. 논리연산자

논리 연산자는 논리식을 판단하여 참(True)과 거짓(False)를 반환한다.
and,or,xor 연산자는 두 개의 피연산자를 가지는 이항 연산자이며, 피연산자들의 결합 방향은 왼쪽에서 오른쪽이다.
! 연산자는 피연산자가 단 하나뿐인 연산자, 피연산자의 결합 방향은 오른쪽에서 왼쪽

and논리식이 모두 참이면 참을 반환함. (AND 연산)
or논리식 중에서 하나라도 참이면 참을 반환함. (OR 연산)
xor논리식이 서로 다르면 참을 반환함. (XOR 연산)
&&논리식이 모두 참이면 참을 반환함. (AND 연산)
||논리식 중에서 하나라도 참이면 참을 반환함. (OR 연산)
!논리식의 결과가 참이면 거짓을, 거짓이면 참을 반환함. (NOT 연산)

&&(AND 연산자)
and 연산자는 좌항과 우항이 모두 true일 경우 true의 결과를 반환한다.

package org.opentutorials.javatutorials.conditionaloperator;
public class AndDemo {
    public static void main(String[] args) {
        if (true && true) {
            System.out.println(1);
        }
        if (true && false) {
            System.out.println(2);
        }
        if (false && true) {
            System.out.println(3);
        }
        if (false && false) {
            System.out.println(4);
        }
    }
}

|| Or 연산자
좌항 또는 우항 중에 하나라도 True면 True가 되는 것이다.

package org.honey.javatutorials.conditionaloperator;
public class OrDemo {
	public static void main(String[] args) {
		if (true || true) {
			System.out.println(1);
		}
		if (true || false) {
			System.out.println(2);
		}
		if (false || true) {
			System.out.println(3);
		}
		if (false || false) {
			System.out.println(4);
		}
	}
}

! Not 연산자
!true === false
!false = true

package org.honey.javatutorials.conditionaloperator;
public class NotDemo {
	public static void main(String[] args) {
		if (!true) {
			System.out.println(1);
		}
		if (!false) {
			System.out.println(2);
		}
	}
}

참조 및 출처

https://opentutorials.org 생활코딩http://www.tcpschool.com/javascript/js_operator_comparison

profile
자습서 같은 공부 블로그 만들기!

0개의 댓글