API

제민·2024년 7월 26일

Java 개념 공부

목록 보기
19/21
post-thumbnail

Object 클래스 - 모든 클래스의 최상위 클래스

모든 자바 클래스는 java.lang.Object 클래스를 상속받습니다. Object 클래스는 모든 클래스의 최상위 클래스이기 때문에, 자바의 모든 클래스는 Object 클래스의 메서드를 사용할 수 있습니다.
예를 들어, toString(), equals() 메서드 등이 있습니다.

class Student {
    // class Student는 컴파일 시 class Student extends Object로 변환됨
}

toString() 메서드

객체의 정보를 String으로 변환할 때 사용됩니다.
기본적으로는 객체의 클래스 이름과 해시코드가 포함된 문자열을 반환하지만, String이나 Integer 클래스는 이미 재정의되어 있습니다.

@Override
public String toString() {
    return "Student{name='" + name + "', age=" + age + "}";
}

equals() 메서드

두 인스턴스의 주소 값을 비교하여 true/false를 반환합니다.
인스턴스가 다르더라도 논리적으로 동일한 경우 true를 반환하도록 재정의할 수 있습니다.

@Override
public boolean equals(Object obj) {
    if (this == obj) return true;
    if (obj == null || getClass() != obj.getClass()) return false;
    Student student = (Student) obj;
    return age == student.age && Objects.equals(name, student.name);
}

String 클래스

String 클래스는 불변(immutable)입니다. 문자열 값 수정 시 수정된 문자열이 새로 할당되어 메모리 낭비가 발생할 수 있습니다.

String str1 = new String("abc");
String str2 = "abc";

String 클래스의 주요 메서드

String str1 = "Hello World";

// charAt(int index)
// 문자열에서 전달받은 index 위치에 문자만을 추출해서 리턴(반환형은 char)
char ch = str1.charAt(6); // 'W'

// concat(String str)
// 문자열과 전달된 또다른 문자열을 하나로 합쳐서 새로운 문자열로 리턴
String str2 = str1.concat("!!!"); // "Hello World!!!"

// contains(CharSequence str)
// 문자열과 전달된 문자열이 포함되어 있는지를 반환
boolean containsHello = str1.contains("Hello"); // true

// substring(int beginIndex, int endIndex)
// 문자열을 beginIndex위치부터 endIndex-1 위치까지 추출해서 리턴
String subStr = str1.substring(6, 11); // "World"

// replace(char oldChar, char newChar)
// 문자열에서 oldChar문자를 newChar문자로 변환한 채 문자열 리턴
String replacedStr = str1.replace('l', 'c'); // "Hecco Worcd"

//문자열.toUpperCase(): String => 문자열을 전부 대문자로 변경해서 리턴
//문자열.toLowerCase(): String => 문자열을 전부 소문자로 변경해서 리턴
String upperStr = str1.toUpperCase(); // "HELLO WORLD"
String lowerStr = str1.toLowerCase(); // "hello world"

// trim()
// 문자열의 앞 뒤 공백을 제거시킨 새 문자열을 리턴
String trimmedStr = "   Hello   ".trim(); // "Hello"

// toCharArray()
char[] charArray = str1.toCharArray();

// valueOf()
String valueOfStr = String.valueOf(123); // "123"

StringBuffer와 StringBuilder 클래스

StringBuffer 클래스

StringBuffer 클래스는 내부적으로 가변적인 char[]를 사용하여 문자열을 수정할 수 있습니다. 쓰레드 안전 기능을 제공합니다.

StringBuffer sb = new StringBuffer("Hello");
sb.append(" World"); // "Hello World"

StringBuilder 클래스

StringBuilder 클래스는 StringBuffer와 동일하지만, 쓰레드 안전 기능을 제공하지 않아 단일 쓰레드 프로그램에서 사용하기에 적합합니다.

StringBuilder sb = new StringBuilder("Hello");
sb.append(" World"); // "Hello World"

Math 클래스

java.lang.Math 클래스는 수학적 연산을 위한 메서드를 제공합니다. 모든 필드는 상수 필드이며, 모든 메서드는 static 메서드입니다.

public class A_Math {
    public void method01() {
        System.out.println("파이 : " + Math.PI);
        System.out.println("랜덤(0~0.99) : " + Math.random());
        System.out.println("절대값 : " + Math.abs(-10));
        System.out.println("올림 : " + Math.ceil(4.449));
        System.out.println("반올림 : " + Math.round(4.449));
        System.out.println("버림 : " + Math.floor(4.449));
        System.out.println("2의 10제곱 : " + Math.pow(2, 10));
    }
}

split(), join(), StringTokenizer 클래스

문자열을 구분자를 기준으로 분리하는 클래스입니다.

public class B_String {
    public void method03() {
        String str = "Java,Oracle,sql,html,css,spring";
	// 구분자를 기준으로 문자열을 분리시키는 방법
	// 방법1. 분리된 문자열들을 String[] 배열에 차곡차곡 담고자 할때
	// String클래스에서 제공하는 split() 메소드를 사용한다.
	// 문자열.split(구분자) : String[]
	String[] arr = str.split(",");
	for (String st : arr) {
		System.out.println(st);
	}
	
	//분리된 문자열 배열을 다시 String으로 변경하는 방법
	//String.join(구분자, 배열);
	
	String str2 = String.join(", ", arr);
	System.out.println(str2);
   
    //방법2. 분리된 문자열들을 각각 토큰으로써 관리가능
    //java.util.StringTokenizer클래스를 이용
    //StringTokenizer stn = new StringTokenizer(배열, 구분자);
        StringTokenizer stn = new StringTokenizer(str, ",");
        while (stn.hasMoreTokens()) {
            System.out.println(stn.nextToken());
        }
    }
}

Wrapper 클래스

기본 자료형을 객체로 포장해주는 클래스입니다.

boolean -> (Boolean)
char -> (Character)
byte -> (Byte)
short -> (Short)
int -> (Integer)
long -> (Long)
float -> (Float)
double -> (Double)

public class C_Wrapper {
    public void method01() {
	//Boxing : 기본자료형 -> Wrapper클래스 자료형으로 변경
	int num1 = 10;
	int num2 = 20;
	
	//System.out.println(num1.equals(num2));
	
	//1. 객체생성구문을 통한 방법
	Integer i1 = new Integer(num1); // num1 => i1
	Integer i2 = new Integer(num2); // num2 => i2
	
	System.out.println(i1);
	System.out.println(i2);
	
	System.out.println(i1.equals(i2)); //오버라이딩이 되어서 실제 값 비교가 가능
	System.out.println(i1.compareTo(i2)); //두 값을 비교햐서 앞쪽이 크면 1반환, 뒤쪽이 크면 -1반환, 같으면 0반환

	//2. 객체생성 하지않고 곧바로 대입방법(AutoBoxing)
	Integer i3 = num1;
	System.out.println(i3);
	
	//객체생성을 통해서 반드시 변환해야하는 경우 -> 문자열을 Integer타입으로 변환하고 싶을 때
	Integer i4 = Integer.parseInt("123");
	Integer i5 = new Integer("123");
	
	//UnBoxing : Wrapper클래스 자료형 -> 기본자료형
	
	//1. 해당 그 Wrapper클래스에서 제공하는 xxxValue()메소드를 통해서 가능
	int num3 = i3.intValue();
	int num4 = i4.intValue();
	
	//2. 메소드사용하지않고 바로 대입하는 방법
	int num5 = i3;
	
	//기본자료형 <--> String
	String str1 = "10";
	String str2 = "15.5";
	
	System.out.println(str1 + str2);
	
	//String -> 기본자료형
	//"10" -> 10
	//"15.5" -> 15.5
	//해당 Wrapper클래스.parsewww()사용
	
	int i = Integer.parseInt(str1);
	double d = Double.parseDouble(str2);
	System.out.println(i + d);
	
	//기본자료형 -> String
	System.out.println(i + "");
	System.out.println(String.valueOf(i) + 10);
	System.out.println(String.valueOf(d));
}

Date 클래스

날짜와 시간을 다루는 클래스입니다.

import java.text.SimpleDateFormat;
import java.util.Date;

public class D_Date {
    public void method01() {
    // 내가 원하는 날짜(2024년 12월 12일)로 세팅
	// 1) 생성자를 통해서 생성
	Date date2 = new Date(2024 - 1900, 12 - 1, 12);
	System.out.println(date2);
	
	// 2) 기본생성자로 생성한 후에 setter메소드로 값 변환
	date1.setYear(2024 - 1900);
	date1.setMonth(6-1);
	date1.setDate(28);
	date1.setHours(9);
	date1.setMinutes(0);
	date1.setSeconds(37);
	System.out.println(date1);
	
	System.out.println(date1.getTime());
	
	System.out.println(1900 + date1.getYear() + "년 ");
	
	//SimpleDateFormat
	//시간을 보여주기위한 형식을 지정하는 객체
	SimpleDateFormat sdf = new SimpleDateFormat("yyyy년, MM월, dd일, hh시 mm분 ss초");
	String date5 = sdf.format(date1);
	System.out.println(date5);
    }
}
profile
초보부터 시작하는 개발자 생활

0개의 댓글