본문 바로가기
컴퓨터/Java

[JAVA] 자바의 기본(2)_데이터 유형 알아보기

by 버니케이 2021. 9. 18.
반응형
1. 자바 데이터 유형
  1-1 기본 데이터 유형
2. 자바 숫자 데이터 유형
  2-1 자바 숫자 데이터 유형
    2-1-1 byte, short, int
    2-1-2 long
    2-1-3 float
    2-1-4 double
  2-2 캐스팅
    2-2-1 확대 캐스팅
    2-2-2 축소 캐스팅
 2-3 연산자
    2-3-1 산술 연산자
    2-3-2 할당 연산자
    2-3-3 비교 연산자
    2-3-4 논리 연산자
  2-4 Math 클래스
    2-4-1 Math.max(x,y)
    2-4-2 Math.min(x,y)
    2-4-3 Math.sqrt(x)
    2-4-4 Math.abs(x)
    2-4-5 Math.random( )
3. 자바 문자 데이터 유형
  3-1 자바 문자 데이터 유형
    3-1-1 char

1. 자바 데이터 유형

  1-1 기본 데이터 유형

데이터 유형 크기 출력할 수 있는 값의 범위
byte 1 byte -128 ~ 127
short 2 bytes -32,768 ~ 32,767
long 8 bytes -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
int 4 bytes -2,147,483,648 ~ 2,147,483,647
double 8 bytes 1.7E-308 ~ 1.7E + 308
float 4 bytes 3.4e-038 ~ 3.4e + 038
boolean 1 bit true, false
char 2 bytes 문자, ASCII

자바에는 8가지의 기본 데이터 유형이 있다.

byte, short, int, long, float, double은 숫자 데이터 유형,

                                       char는 문자 데이터 유형,

                                       boolean은 참/거짓 데이터 유형이다.

 


2. 자바 숫자 데이터 유형

  2-1 자바 숫자 데이터 유형

기본 숫자 데이터 유형인 byte, short, int, long, float, double에 대해 알아보았다.

데이터 유형 크기 출력할 수 있는 값의 범위
byte 1 byte -128 ~ 127
short 2 bytes -32,768 ~ 32,767
long 8 bytes -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
int 4 bytes -2,147,483,648 ~ 2,147,483,647
double 8 bytes 1.7E-308 ~ 1.7E + 308
float 4 bytes 3.4e-038 ~ 3.4e + 038

byte, short, int, long은 자연수와 음수를 출력하는 데이터 유형이다.

float와 double은 실수를 출력하는 데이터 유형이다.

 

각 데이터 유형은 출력할 수 있는 숫자의 범위가 다르다.

byte<short<int<long

float< double

순이다.

byte 로도, long 으로도 1을 출력할 수 있다.

하지만 long 으로 1을 출력하지 않는 이유는, long의 기본 할당 값이 커서, 속도가 느려지기 때문이다.

 

    2-1-1 byte, short, int

public class Main {
  public static void main(String[] args) {
    byte number = 100;
    System.out.println(number);  
  }
}

byte, short, int 까지는

지금까지 해줬던 변수 선언으로 값을 출력할 수 있다.

 

    2-1-2 long

public class Main {
  public static void main(String[] args) {
    long myNum = 15000000000L;
    System.out.println(myNum);  
  }
}

long 은 출력하고 싶은 값 뒤에 L 을 붙여줘야 한다.

 

    2-1-3 float

public class Main {
  public static void main(String[] args) {
    float myNum = 5f;
    System.out.println(myNum);  
  }
}

float 는 출력하고 싶은 값 뒤에 f 를 붙여줘야 한다.

출력한 값은 5.0 으로, 소수점이 붙어서 출력된다.

float 는 10진수 6~7자리를 표현할 수 있다.

 

    2-1-4 double

public class Main {
  public static void main(String[] args) {
    double myNum = 19.9999999999999d;
    System.out.println(myNum);  
  }
}

double 은 출력하고 싶은 값 뒤에 d 를 붙여줘야 한다.

출력한 값은 19.9999999999999 으로, 소수점이 붙어서 출력된다.

double 은 10진수 약 15자리를 표현할 수 있다.

 

  2-2 캐스팅

캐스팅은 선언한 값을 다른 변수로 변환할 때 사용한다.

  • 확대 캐스팅 - 작은 유형을 큰 유형 크기로 변환
    byte-> short-> char-> int-> long-> float->double
  • 축소 캐스팅 - 큰 유형을 작은 크기 유형으로 변환
    double-> float-> long-> int-> char-> short->byte

확대 캐스팅은 자동으로 변환할 수 있지만, 축소 캐스팅은 수동으로 변환해줘야 한다.

물리에서는 높은 곳에서 낮은 곳, 농도가 진한 곳에서 묽은 곳, 엔탈피가 큰 곳에서 작은 곳으로

에너지를 사용하지 않고 이동하는데

자바는 반대로 이동한다.

 

    2-2-1 확대 캐스팅

public class Main {
  public static void main(String[] args) {
    byte numbyte = 1;
    double numDouble = numbyte;

    System.out.println(numbyte);
    System.out.println(numDouble);
  }
}

이렇게 뒤에서 다시 한번 선언해주면

byte 에 의해 1 이라고 출력된 값이 자동으로

1.0 으로 출력된다.

 

    2-2-2 축소 캐스팅

public class Main {
  public static void main(String[] args) {
    double numDouble = 9.78d;
    int numInt = (int) numDouble;

    System.out.println(numDouble);
    System.out.println(numInt);
  }
}

하지만 축소 캐스팅은

뒤에서 괄호로 다시 선언을 해줘야 적용이 된다.

 

 

  2-3 연산자

자바의 연산자에는

산술 연산자, 할당 연산자, 비교 연산자, 논리 연산자가 있다.

연산자는 어느 언어든 거기서 거기인 것 같다.

그래서 익히는 데 별로 어렵지 않았다.

 

    2-3-1 산술 연산자

연산자 설명 예시
+ 값을 더한다. x+y
- 값을 뺀다. x-y
* 값을 곱한다. x*y
/ 값은 나눈다. x/y
% 나눈 값의 나머지를 구한다. x%y
++ 1 씩 증가시킨다. ++x
-- 1 씩 감소시킨다. --x

사용 방법은 다 비슷비슷하니 하나만 예시로 코딩해봤다.

public class Main {
  public static void main(String[] args) {
    int x = 5;
    ++x;
    System.out.println(x);
  }
}

 

    2-3-2 할당 연산자

연산자 설명 예시
= 값 정의 x = 1 (x = 1)
+= 값 추가 (+) x += 1 (x = x + 1)
-= 값 추가 (-) x -= 1 (x = x - 1)
*= 값 추가 (*) x *= 1 (x = x * 1)
/= 값 추가 (/) x /= 1 (x = x / 1)
%= 값 추가 (%) x %= 1 (x = x % 1)
&= 값 추가 (and) x &= 1 (x = x & 1)
|= 값 추가 (or) x |= 1 (x = x | 1)
^= 값 추가 (Xor) x ^= 1 (x = x ^ 1)
>>= 값 추가 (shift right) x >>= 1 (x = x >> 1)
<<= 값 추가 (shift left) x <<= 1 (x = x << 1)

할당 연산자도 산술 연산자와 마찬가지로 사용 방법은 비슷비슷하다.

public class Main {
  public static void main(String[] args) {
    int x = 5;
    x ^= 3;
    System.out.println(x);
  }
}

 

혹시 비트의 and or xor 연산을 까먹을까봐 남겨놓는다.

 

https://desktop.arcgis.com/en/arcmap/10.3/tools/spatial-analyst-toolbox/how-bitwise-math-tools-work.htm

 

비트의 shift 연산도 까먹을까봐 남겨놓는다.

https://www.youtube.com/watch?v=BKzB6gdRyIM

 

    2-3-3 비교 연산자

연산자 설명 예시
== 같을 때 x == y
!= 같지 않을 때 x != y
> 클 때 x > y
< 작을 때 x < y
>= 크거나 같을 때 x >= y
<= 작거나 같을 때 x <= y

말 그대로 두 값을 비교하는 연산자이다.

결과는 true와 false로 출력된다. (boolean)

public class Main {
  public static void main(String[] args) {
    int x = 5;
    int y = 3;
    System.out.println(x != y); // returns true because 5 is not equal to 3
  }
}

 

  2-3-4 논리 연산자

연산자 설명 예시
&&  두 식을 and 로 연결 x < 5 &&  x < 10
||  두 식을 or 로 연결 x < 5 || x < 4
! 두 식을 nor 로 연결 !(x < 5 && x < 10)

결과는 true와 false로 출력된다. (boolean)

public class Main {
  public static void main(String[] args) {
    int x = 5;
    System.out.println(x > 3 || x < 4);
  }
}

 

 

  2-4 Math 클래스

Math 클래스의 여러 매소드를 사용해서 숫자 연산을 할 수 있다.

    2-4-1 Math.max(x,y)

public class Main {
  public static void main(String[] args) {
    System.out.println(Math.max(5, 10));  
  }
}

둘 중 큰 값을 출력해준다.

 

    2-4-2 Math.min(x,y)

public class Main {
  public static void main(String[] args) {
    System.out.println(Math.min(5, 10));  
  }
}

둘 중 작은 값을 출력해준다.

 

    2-4-3 Math.sqrt(x)

public class Main {
  public static void main(String[] args) {
    System.out.println(Math.sqrt(8));  
  }
}

입력한 값의 제곱근을 출력해준다.

 

    2-4-4 Math.abs(x)

public class Main {
  public static void main(String[] args) {
    System.out.println(Math.abs(-8));  
  }
}

입력한 값의 절댓값을 출력해준다.

 

    2-4-5 Math.random( )

public class Main {
  public static void main(String[] args) {
    System.out.println(Math.random());  
  }
}

랜덤한 숫자를 출력해준다.

보통 코드 실습할 때 많이 사용한다. (파이썬에서도 데이터 테이블 채울 때 많이 썼다.)

 

랜덤한 숫자이기 때문에 범위가 들쭉날쭉하다.

그래서 보통은 데이터 유형을 앞에 입력해줘서 범위를 제어해준다.

public class Main {
  public static void main(String[] args) {
    int randomNum = (int)(Math.random() * 101);
    System.out.println(randomNum);
  }
}

int로 입력해줬기 때문에 자연수와 음수로 범위가 좁혀졌고

*101을 입력해줬기 때문에 0 부터 100 사이의 수가 출력된다.

 


3. 자바 문자 데이터 유형

  3-1 자바 문자 데이터 유형

데이터 유형 크기 출력할 수 있는 값의 범위
char 2 bytes 문자, ASCII

String 도 기본 데이터 유형인 줄 알았는데 아니라고 한다.

그 이유는 객체를 참조하기 때문이다.

그래서 문자열을 다룰 수 있는 다른 매서드가 있다고 한다.

나는 아직 객체에 익숙하지 않아서… 일단 공부를 하면서 이해하려고 노력중이다ㅠㅠ

 

    3-1-1 char

char 도 위의 데이터 유형과 마찬가지로 값을 출력할 수 있다.

근데 char 로 ASCII 를 출력할 수도 있다.

public class Main {
  public static void main(String[] args) {
    char p = 85, b = 66;
    System.out.println(p);
    System.out.println(b);
  }
}

https://www.cs.cmu.edu/~pattis/15-1XX/common/handouts/ascii.html

아스키코드 테이블이 있는 사이트이다.

참고해서 출력하면 되지만, 이걸 개발하는 데 쓸 일이 있을지 궁금하다.

 

 

 

 

 

반응형

댓글