Dlise
시원한 냉장고
Dlise
전체 방문자
오늘
어제
  • 시원한 냉장고 (132)
    • Java (31)
      • Java (26)
      • Spring (5)
    • Algorithm & PS (25)
      • Algorithm (14)
      • Problem Solving (11)
    • Network (12)
    • Database (2)
    • Data Structure (4)
    • OOP & CleanCode (5)
    • Web (0)
    • Git (2)
    • AI (2)
    • Project (1)
      • Discord Bot (1)
    • Error (19)
    • Tools (5)
    • 수학 (5)
      • 확률과 통계(기초) (5)
    • 컴퓨터 구조 (3)
    • 활동 (16)
      • 행사 & 여행 (6)
      • 자격증 (4)
      • 회고 (6)
      • 기타 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 후위 표기법
  • CleanCode
  • java
  • 중위 표기법
  • 네트워크
  • 열혈강의자료구조
  • spring security in action second edition
  • 가장쉬운알고리즘책
  • 통계학
  • 백준

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Dlise
Java/Java

Java - Integer

Java/Java

Java - Integer

2023. 9. 21. 19:30

Integer 클래스에 알고리듬 문제 풀기에 좋은 기능이 많은 것 같아 이에 대해 알아보고자 한다.

 

Integer 클래스

Integer 클래스는 원시 타입 int를 클래스로 다룰 수 있도록 감싸주는 Wrapper 클래스 중 하나이다.

Wrapper 클래스에 대해선 추후에 다루기로 하고 지금은 Integer 클래스가 가지고 있는 여러 기능을 알아보자.

https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Integer.html

 

Integer (Java SE 11 & JDK 11 )

Returns the value obtained by rotating the two's complement binary representation of the specified int value right by the specified number of bits. (Bits shifted out of the right hand, or low-order, side reenter on the left, or high-order.) Note that right

docs.oracle.com

 

생성자

Java 9를 기준으로 Integer의 생성자는 모두 Deprecated 되었다.

아래는 VS code에서 생성자를 활용해 선언할 때의 안내문인데 parseInt 혹은 valueOf를 활용하라고 한다.

 

클래스 변수

Integer 클래스에서 제공하는 클래스 변수는 5가지가 있다.

 

내용이 어렵지 않으므로 바로 활용해 보자.

public class IntegerPractice {
    public static void main(String[] args) {
        System.out.println("Integer.TYPE: " + Integer.TYPE);
        System.out.println("Integer.SIZE: " + Integer.SIZE);
        System.out.println("Integer.BYTES: " + Integer.BYTES);
        System.out.println("Integer.MAX_VALUE: " + Integer.MAX_VALUE);
        System.out.println("Integer.MIN_VALUE: " + Integer.MIN_VALUE);
    }
}

 

Integer.TYPE

Intetger.TYPE은 Class.getPrimitiviClass("int")를 Integer 클래스로 형변환한 결과를 반환한다.

사실 이게 왜 필요한지 모르겠어서 찾아보았는데 정확한 이유를 알지 못했다.

그나마 아래의 stack ovrflow에서 이에 대해 다루고 있어서 가져왔다.

https://stackoverflow.com/questions/22470985/integer-class-vs-int-class

 

Integer.class vs int.class

What is the difference between Integer.class, Integer.TYPE and int.class? acc to me Integer.class is a reference of Integer (Wrapper) Class object but what is then int.class as int is not a class...

stackoverflow.com

 

Integer.SIZE

Integer.Size는 int 값을 나타내는 데 사용되는 비트 수를 반환한다. 4 Bytes = 32 Bits이므로 32를 반환한다.

 

Integer.BYTES

사용되는 비트 수를 바이트 단위로 반환한다. 코드를 보면 Byte.SIZE로 나눈 값을 반환하는 것을 확인할 수 있다.

 

Integer.MAX_VALUE, Integer.MIN_VALUE

int  자료형에서 가장 큰 값과 가장 작은 값을 반환한다.

 

 

메서드

다음으로 메서드를 확인해 보자.(parseInt, valueOf, toString, max, min, sum, signum, bitCount, ~value)

Integer 클래스의 메서드는 종류가 많아서 주요한 것들만 설명하고 설명하지 않은 것을 활용한 경우가 생기면 추가할 계획이다.

 

parseInt()

가장 기본 메서드인 parseInt()이다. 이 메서드는 String형 or CharSequence형 숫자를 원시 타입 int로 반환한다.

paeseInt는 위처럼 세 가지로 오버로딩되어 있다. 

 

여기서 우리가 알아야 할 것은 parseInt(String s, int radix)이다.

그 이유는 parseInt(String s)가 parseInt(String s, int radix)를 호출하기 때문이다.

parseInt(String s, int radix)는 s를 radix의 진수로 보고 10진수로 바꾼 결과를 반환한다.

 

예를 들어 parseInt("F", 16); 은 F를 16진수로 보고 10진수로 반환한다. 반환 값은 15이다.

 

radix는 8, 10, 16뿐 아니라 아무 값이나 넣을 수 있다.

parseInt(String s)는 radix의 값이 10이다.

public class IntegerPractice {
    public static void main(String[] args) {
        System.out.println(Integer.parseInt("11"));
        System.out.println(Integer.parseInt("11", 10));
        System.out.println(Integer.parseInt("11", 16));
        System.out.println(Integer.parseInt("11", 11));
        System.out.println(Integer.parseInt("11", 20));
    }
}

 

valueOf()

valueOf() 메서드는 Integer형을 반환한다. 세 가지로 오버로딩되어 있다.

아래는 valueOf(int i)의 코드인데 정수 i를 받아 new Integer(i)를 반환함을 알 수 있다.

valueOf(String s, int radix) 메서드로 parseInt처럼 radix를 활용할 수 있다.

 

toString()

Integer 값을 String으로 반환한다.

public class IntegerPractice {
    public static void main(String[] args) {
        System.out.println(Integer.valueOf("100").toString().getClass());
    }
}

단순히 toString() 외에 아래의 메서드도 있다.

public class IntegerPractice {
    public static void main(String[] args) {
        System.out.println(Integer.toBinaryString(100));
        System.out.println(Integer.toOctalString(100));
        System.out.println(Integer.toHexString(100));
    }
}

각각 100에 대해 2, 8, 16진수 결과를 String으로 반환한다. 결과는 1100100, 144, 64이다.

 

max, min, sum

max(int a, int b)와 min(int a, int b)은 a, b에 대해 각각 큰 값, 작은 값을 반환한다.

Math.max, Math.min이 떠올랐을 수 있는데 실제로 이를 활용한다.

 

아래는 Integer클래스의 max와 min으로 Math.max, Math.min을 호출하는 것을 알 수 있다.

 

sum(int a, int b)은 a + b를 반환한다.

 

signum

signum(int i)의 코드이다. 부호에 따른 값(1, 0, -1)을 반환한다.

public class IntegerPractice {
    public static void main(String[] args) {
        System.out.println(Integer.signum(100));
        System.out.println(Integer.signum(0));
        System.out.println(Integer.signum(-100));
    }
}

위의 코드는 각각 1, 0, -1을 반환한다.

 

bitCount(int i)

정수 비트에서 1의 개수를 반환한다.

 

public class IntegerPractice {
    public static void main(String[] args) {
        System.out.println(Integer.bitCount(7));
        System.out.println(Integer.bitCount(8));
    }
}

예를 들어 위의 코드는 3, 1을 출력한다.

 

그 이유는 값이 1인 비트가 7은 3개, 8은 1개이기 때문이다.

쓸모가 있나 싶었는데 알고리듬 문제에 활용할 일이 생겨서 덕분에 쉽게 풀었다.

 

~Value()

해당 메서드는 아래 코드와 결과를 보면 바로 이해할 수 있다.

public class IntegerPractice {
    public static void main(String[] args) {
        Integer integer = Integer.parseInt("128");
        System.out.println(integer.byteValue());
        System.out.println(integer.shortValue());
        System.out.println(integer.intValue());
        System.out.println(integer.longValue());
        System.out.println(integer.floatValue());
        System.out.println(integer.doubleValue());
    }
}

Integer로 감싸진 값을 원시 타입으로 반환하는 메서드이다.

오버플로우가 발생할 수 있으며 booleanValue()와 charValue()는 없다.

 

 

'Java > Java' 카테고리의 다른 글

Java - Java 변수, 메서드  (0) 2023.09.24
Java - enum  (0) 2023.09.22
Java - Collections unmodifiable  (0) 2023.09.19
Java - StringTokenizer  (0) 2023.09.15
Java - 문자 기반 스트림(Reader, Writer)  (1) 2023.09.14
  • Integer 클래스
  • 생성자
  • 클래스 변수
  • 메서드
'Java/Java' 카테고리의 다른 글
  • Java - Java 변수, 메서드
  • Java - enum
  • Java - Collections unmodifiable
  • Java - StringTokenizer
Dlise
Dlise

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.