[JAVA] java.lang패키지의 유용한 클래스

2024. 9. 2. 19:12·Back-End/Java

[작성일: 2023. 02. 05]

 

 

String 클래스의 생성자와 메서드

메서드 / 설명 예제 결과
String(String s) String s = new String("Heelo"); s = "Hello"
주어진 문자열(s)을 갖는 String 인스턴스를 생성함.
String(char[] value) char[] c = { 'H', 'e', 'l', 'l', 'o' };
String s = new String(c);
s="Hello"
주어진 문자열(value)을 갖는 String 인스턴스를 생성함.
String(StringBuffer buf) StringBuffer sb = new StringBuffer("Hello");
String s = new String(sb);
s = "Hello"
StringBuffer 인스턴스가 갖고 있는 문자열과 같은 내용의 String 인스턴스를 생성함.
char charAt(int index) String s = "Hello";
String n = "123456";
char c = s.charAt(1);
char c2 = n.charAt(1);
c = 'e'
c = '1'
지정된 위치(index)에 있는 문자열을 알려줌.(index는 0부터 시작)
int compareTo(String str) int i = "aaa".compareTo("aaa");
int i2 = "aaa".compareTo("bbb");
int i3 = "bbb".compareTo("aaa");
i = 0
i2 = -1
i3 = 1
문자열(str) 과 사전순서(ㄱㄴㄷ)로 비교함.
같으면 0, 사전순으로 이전이면 음수, 이후면 양수를 반환함.
String concat(String str) String s = "Hello";
String s2 = s.concat(" World");
s2 = "Hello World"
문자열(str)을 뒤에 덧붙임.
boolean contains(CharSequence s) String s = "abcedfg";
boolean b = s.contains("bc");
b = true
지정된 문자열(s)이 포함되었는지 검사함.
boolean endsWith(String suffix) String file = "Hello.txt";
boolean b = file.endsWith("txt");
b = true
지정된 문자열(suffix)로 끝나는지 검사함.
boolean equals(Object obj) String s = "Hello";
boblean b = s.equals("Hello");
boolean b2 = s.equals("hello");
b = true
b2 = false
매개변수로 받은 문자열(obj)과 String 인스턴스의 문자열을 비교함.
obj가 String이 아니거나 문자열이 다르면 false를 반환함.
bollean eqaulsIgnoreCase(String str) String s = "Hello";
boolean b = s.equalsIgnoreCase("HELLO");
boolean b2 = s.equalsIgnoreCase("HeLLo");
b = true
b2 = true
문자열과 String 인스턴스의 문자열을 대소문자 구분없이 비교함
int indexOf(int ch) String s = "Hello";
int idx1 = s.indexOf('o');
int idx2 = s.indexOf('k');
idx1 = 4
idx2 = -1
주어진 문자(ch)가 문자열에 존재하는지 확인하여 위치(index)를 알려줌.
못 찾으면 -1을 반환(index는 0부터 시작함.)
int indexOf(int ch, int pos) String s = "Hello";
int idx1 = s.indexOf('e', 0);
int idx2 = s.indexOf('e' , 2);
idx1 = 1
idx2 = -1
주어진 문자(ch)가 문자열에 존재하는지 지정된 위치(pos)부터 확인하여 위치(index)를 알려줌.
못 찾으면 -1 반환(index는 0부터 시작)
int indexOf(String str) String s = "ABCDEFG";
int idx = s.indexOf("CD");
idx =2
주어진 문자열이 존재하는지 확인하여 그 위치(index)를 알려줌.
없으면 -1을 반환(index는 0부터 시작)
int lastIndexOf(int ch) String s = "java.lang.Object";
int idx1 = s.lastIndexOf('.');
int idx2 = s.indexOf('.');
idx1 = 9
idx 2 = 4
지정된 문자 또는 문자코드를 문자열의 오른쪽 끝에서부터 찾아서 위치(index)를 알려줌.
int lastIndexOf(String str) String s = "java.lang.java";
int idx1 = s.lastIndexOf("java");
int idx2 = s.indexOf("java");
idx1 = 10
idx2 = 0
지정된 문자열을 인스턴스의 문자열 끝에서 부터 찾아서 위치(index)를 알려줌. 못 찾으면 -1을 반환
int length() String s = "Hello";
int length = s.length();
length = 5
문자열의 길이를 알려줌.

 

메서드 / 설명 예제 결과
String toLowerCase() String s = "Hello";
String s1 = s.toLowerCase();
s1 = "hello"
String 인스턴스에 저장되어 있는 모든 문자열을 소문자로 변환하여 반환함.
String toUpperCase() String s = "Hello";
String s1 = s.toUpperCase();
s1 = "HELLO"
String 인스턴스에 저장되어 있는 모든 문자열을 대문자로 변환하여 반환함.
String trim() String s = "       Hello       ";
String s1 = "s.trim();
s1 = "Hello"
문자열의 왼쪽 끝과 오른쪽 끝에 있는 공백을 없앤 결과를 반환함.
문자열 중간에 있는 공백은 제거되지 않음.
String[] split(String regex) String animals = "dog, cat, bear";
String[] arr = animals.split(",");
arr[0] = "dog"
arr[1] = "cat"
arr[2] = "bear"
문자열을 지정한 분리자(regex)로 나누어 문자열 배열에 담아 반환함.
String[] split(String regex, int limit) String animals = "dog, cat, bear";
String[] arr = animals.split(",",2);
arr[0] = "dog"
arr[1] = "cat, bear"
문자열을 지정된 분리자(regex)로 나누어 문자열 배열에 담아 반환함.
단, 문자열 전체를 지정된 수(limit)로 자름.
boolean startsWith(String prefix) String s = "java.lang.Object";
boolean b = s.startsWith("java");
boolean b2 = s.startsWith("lang");
b = true
b2 = false
주어진 문자열(prefix)로 시작하는지 검사함.
String substring(int begin)
String substring(int begin, int end)
String s = "java.lang.Object";
String c = s.substring(10);
String p = s.substring(5, 9);
c = "Object"
p = "lang"
주어진 시작위치부터 끝 위치 범위에 포함된 문자열을 얻음.
시작위치의 문자는 범위에 포함되지만 끝 위치의 문자는 포함되지 않음.
static String valueOf(boolean b)
static String valueOf(char c)
static String valueOf(int i)
static String valueOf(long l)
static String valueOf(float f)
static String valueOf(double d)
static String valueOf(Object o)
String b = String valueOf(true);
String c = String valueOf('a');
String i = String valueOf(100);
String l = String valueOf(t100L);
String f = String valueOf(10f);
String d = String valueOf(10.0);
java.util.Data dd = new java.util.Date();
String date = String.valueOf(dd);
b = "true"
c = "a"
i = "100"
l = "100"
f = "10.0"
d = "10.0"
date = "Wed Jan 27 10:01:32 KST 2023"

지정된 값을 문자열로 변환하여 반환함.
참조변수의 경우, toString()을 호출한 결과를 반환함.

 

 

  

 

 

join()과 StringJoiner

  • join()은 여러 문자열 사이에 구분자를 넣어서 결함함.
String animals = "dog, cat, bear";
String[] arr = animals.split(","); // 문자열 ','를 구분자로 나눠서 배열에 저장
String str = String.join("-", arr); // 배열의 문자열을 '-'로 구분해서 결합
System.out.println(str); 
// dog-cat-bear 출력

 

 

 

 

 

문자열과 기본형 간의 변환

  • 숫자를 문자열로 바꾸는 방법
int i = 100;
String str1 = i + ""; // 100을 "100"으로 변환
String str2 = String.valueOf(i); // 100을 "100"으로 변환

 

  • 문자열을 숫자로 바꾸는 방법
int i = 100;

int i = Integer.parseInt("100") // "100"을 100으로 변환하는 방법
int i2 = Integer.valuOf("100")  // "100"을 100으로 변환하는 방법
Integer i2 = Integer.valuOf("100") // 원래는 반환 타입이 Integer

 

기본형 ➡️ 문자열
문자열 ➡️ 기본형
⭐(valueOf도 사용 가능!!)
String String.valueOf(boolean b)
String String.valueOf(char c)
boolean  Boolean.parseBoolean(String s)
byte Byte.parseByte(String s)
short Short.parseShort(String s)
String String.valueOf(int i) int Integer.parseInt(String s)
String String.valueOf(long l) long Long.parseLong(String s)
String String.valueOf(flont f) float Float.parseFloat(String s)
String String.valueOf(double d) double Double.parseDouble(String s)

⭐ byte, short을 문자열로 변경할 때는 String valueOf(int i)를 사용하면 됨!

 

 

 

 

 

Math 클래스

  • 수학 관련 static 메서드의 집합 ➡️ 객체 만들 필요 없음.

 

메서드 / 설명 예제 결과
static double abs(double a)
static float abs(float f)
static int abs(int f)
static long abs(long f)
int i = Math.abs(-10);
double d = Math.abs(-10.0);
i = 10
d = 10.0
주어진 값의 절대값을 반환함.
static double ceil(double a) double d = Math.ceil(10.1);
double d2 = Math.ceil(-10.1);
double d3 = Math.ceil(10.000015);
d = 11.0
d2 = -10.0
d3 = 11.0
주어진 값을 올림하여 반환함.
static double floor(double a) double d = Math.floor(10.8);
double d2 = Math.floor(-10.8);
d = 10.0
d2 = -11.0
주어진 값을 버림하여 반환함.
static double max(double a, double b)
static float max(float a, float b)
static int max(int a, int b)
static long max(long a, long b)

double d = Math.max(9.5, 9.50001);
int i = Math.max(0, -1);
d = 9.50001
i = 0
주어진 두 값을 비교하여 큰 쪽을 반환함.
static double min(double a, double b)
static float min(float a, float b)
static int min(int a, int b)
static long min(long a, long b)
double d = Math.min(9.5, 9.50001);
int i = Math.min(0, -1);
d = 9.5
i = -1
주어진 두 값을 비교하여 작은 쪽을 반환함.
static double random() double d = Math.random();
int i = (int)(Math.random() * 10) + 1
0.0 <= d < 1.0
1 <= i < 11
0.0 ~ 1.0 범위의 임의의 double 값을 반환함. (1.0은 범위에 포함되지 않음.)
static double rint(double a) double d = Math.rint(1.2);
double d = Math.rint(2.6);
double d = Math.rint(3.5);
double d = Math.rint(4.5);
d = 1.0
d2 = 3.0
d3 = 4.0
d4 = 4.0
주어진 double 값과 가장 가까운 정수값을 double 형으로 반환함. 
두 정수의 정 가운데 있는 값은 짝수를 반환함.(1.5, 2.5 등)
static long round(double a)
static long round(float a)
long l = Math.round(1.2);
long l2 = Math.round(2.6);
long l3 = Math.round(3.5);
long l4 = Math.round(4.5);
double d = 90.7552;
double d2 = Math.round(d*100)/100.0;
l = 1
l2 = 3
l3 = 4
l4 = 5
d = 90.7552
d2 = 90.76
소수점 첫째자리에서 반올림한 정수값을 반환함. 두 정수의 정 가운데에 있는 값은 항상 큰 정수를 반환함.(rint()의 결과와 비교)

 

 

 

 

 

래퍼(wrapper) 클래스

  • 기본형 값을 감싸는 클래스
  • 8개의 기본형을 객체로 다뤄야 할 때 사용하는 클래스
class ex {
  public static void main(String[] args) {
    Integer i = new Integer(100);
    Integer i2 = new Integer(100);
    
    System.out.println("i==i2 ? " + (i==i2));
    System.out.println("i.equals(i2) ? " + i.equals(i2));
    System.out.println("i.compareTo(i2)=" + i.compareTo(i2));
    System.out.println("i.toString()=" + i.toString());
    
    System.out.println("MAX_VALUE="+Integer.MAX_VALUE);
    System.out.println("MIN_VALUE="+Integer.MIN_VALUE);
    System.out.println("SIZE=" + Integer.SIZE+ " bits");
    System.out.println("BYTES=" + Integer.BYTES+ "bytes");
    System.out.println("TYPE=" + Integer.TYPE);
  }
}

// 결과
i==i2 ? false
i.equals(i2) ? true
i.compareTo(i2) = 0
i.toString() = 100
MAX_VALUE = 2147483647
MIN_VALUE = -2147483648
SIZE = 32bits
BYTES = 4bytes
TYPE = int

 

 

 

 

 

Number 클래스

  • 모든 숫자 래퍼 클래스의 조상임.

상속 계층도

 

 

 

 

 

 

문자열을 숫자로 변환하기

  • 문자열을 숫자로 변환하는 다양한 방법
  • 래퍼클래스 ➡️ 문자열은 toString() 사용하기
int i = new Integer("100").intValue(); 
int i2 = Integer.parseInt("100"); //  방법을 주로 사용함.
Integer i3 = Integer.valueOf("100");

 

문자열 ➡️ 기본형 문자열 ➡️ 래퍼 클래스
byte b = Byte.parseByte("100");
short s = Short.parseShort("100");
int i = Integer.parseInt("100");
long l = Long.parseLong("100");
float f = Float.parseFloat("3.14");
double d = Double.parseDouble("3.14");
byte b = Byte.valueOf("100");
short s = Short.valueOf("100");
int i = Integer.valueOf("100");
long l = Long.valueOf("100");
float f = Float.valueOf("3.14");
double d = Double.valueOf("3.14");

 

  • n진법의 문자열을 숫자로 변환하는 방법
int i4 = Integer.parseInt("100", 2); // 100(2) -> 4 // 2진수
int i5 = Integer.parseInt("100", 8); // 100(8) -> 64 // 8진수
int i6 = Integer.parseInt("100", 16); // 100(16) -> 256 //16 진수
int i7 = Integer.parseInt("FF", 16); // FF(16) -> 255
int i8 = Integer.parseInt("FF"); // NumberFormatException 발생

 

 

 

 

 

오토박싱, 언박싱

  • int ➡️ Integer (오토박싱)
  • Integer ➡️int (언박싱)
  • JDK1.5 이전에는 기본형과 참조형간의 연상이 불가능했음.
  • 기본형의 값을 객체로 자동변환 하는 것을 오토박싱, 그 반대는 언박싱이라고 함.

 

컴파일 전의 코드 컴파일 후의 코드
int i = 5;
Integer 10bj = new Integer(7)

int sum = i + iObj;
컴파일러가 자동으로 오른쪽의 코드처럼 변경해줌
int i = 5;
Integer iObj = new Integer(7);

int sum = i + iObj.intValue():
Integer intg = (Integer) i;
Object obj = (Object) i;
Long lng = 100L;
Integer intg = Integer.valueOf(i);
Object obj = (Object)Integer.valueOf(i);
Long lng = new Long(100L);

 

ArrayList<Integer> list = new ArrayList<Integer> ();
list.add(10); // 
// list.add(new Integer(100)); // list에는 원래 객체만 추가 가능했음.


int value = list.get(0); // 언박싱. new Integer(10)을 10으로
// intr i = list.get(0).intValue(); // 원래는 이렇게 언박싱 해야 함

 

 

 

 

 

 

 

 

 

 


🐣 해당 게시글은 자바의 정석(남궁성 님) 영상으로 함께 공부하며 요약/정리한 글입니다.
🐣 입문 개발자가 작성한 글이므로 틀린 내용이나 오타가 있을 수 있습니다.

 

저작자표시 비영리 변경금지 (새창열림)
'Back-End/Java' 카테고리의 다른 글
  • [JAVA] 날짜와 시간, 형식화
  • [JAVA] StringBuffer
  • [JAVA] Object 클래스
  • [JAVA] 내부 클래스
뚜비
뚜비
1년차 백엔드&iOS 개발자의 감자 탈출 블로그 🥔🥔
  • 뚜비
    뚜비의 개발로그
    뚜비
  • 전체
    오늘
    어제
  • 글쓰기     관리
    • Devlog
      • Back-End
        • Java
        • Spring
        • JPA
        • HTTP
        • Security
        • Back-End
        • Front-End
      • 알고리즘
      • iOS
        • Swift
      • Database
      • Tips
        • Git & GitHub
        • A to Z
      • 프로젝트
      • 생각정리
  • 태그

    성능최적화
    객체
    jsp
    HTTP
    Swift
    생성자
    sql
    의존성주입
    html
    Security
    spring
    데이터베이스
    자바스크립트
    최주호
    백준
    javascript
    변수
    스프링
    자바
    Java
    MVC
    DB
    게시판만들기
    프로그래머스
    Database
    Spring Security
    김영한
    알고리즘
    다형성
    JPA
  • hELLO· Designed By정상우.v4.10.0
뚜비
[JAVA] java.lang패키지의 유용한 클래스
상단으로

티스토리툴바