Day19 :) java.lang패키지 - Object, String

Nux·2021년 9월 29일
0

자바웹개발

목록 보기
19/105
post-thumbnail

Java API

  • 자바를 이용해서 애플리케이션을 구현할 수 있도록 지원하는 라이브러리
  • 개발자들의 부담을 최소화하기 위해 시스템, 입출력, 화면처리, 네트워크, 스레드 등이 구현되어있는 인터페이스나 클래스

API문서

  • JAVA API에서 제공하는 여러 인터페이스나 클래스들에 대한 설명과 사용법을 제공하는 문서
  • HTML 형식의 문서로 작성됨
    • 소스코드에서 Document 주석을 사용해서 javadoc.exe로 자동으로 API문서 생성
    • 이클립스는 export -> java -> javadoc 기능을 이용해 API문서 생성 가능

API 구성

  • Java SE 11 API > Module > package > interface + class

Java SE 11 API

  • 여러 Module로 구성되어 있음

Module

  • 여러개의 패키지를 포함하고 있는 그룹
  • java.base 모듈이 가장 많이 사용됨(java.lang, java.io, java.net, java.util 패키지등이 포함됨)
  • Java 9 버전부터 지원

Package

  • 관련있는 클래스나 인터페이스의 묶음
  • 같은 패키지 내의 클래스는 import없이 사용할 수 있으나, 패키지가 다른 경우에는 반드시 import로 이용할 패키지명과 클래스명을 지정해야함

대표적 패키지

  • java.lang: 가장 기본적인 인터페이스, 클래스들을 포함하고 있는 패키지
    이 패키지의 인터페이스/클래스는 import 구문없이 바로 사용 가능
    ex) Object, System, String, Wrapper 클래스 등
  • java.io: 입출력과 관련된 인터페이스, 클래스들을 포함하고 있는 패키지
    ex) xxxInputStream, xxxOutputStream, xxxReader, xxxWriter 클래스 등
  • java.net: 네트워크 통신을 지원하는 인터페이스, 클래스들을 포함하고 있는 패키지
    ex) socket, serversocket, url 클래스 등
  • java.util: 자료구조, 날짜/시간등을 다루는 유용한 클래스들을 포함
    어플리케이션 구현에 가장 많이 사용하는 패키지
    ex) Collection, List, Set, Map, date, Calendar 클래스 등

java.lang 패키지

  • 자바의 가장 기본적인 인터페이스, 클래스를 포함하고 있는 패키지

대표적 패키지

  • Object
    • 모든 객체의 최상위 부모 클래스
    • Object 클래스의 메서드는 모든 객체에서 사용 가능
    • Class<?>getClass: 원본 클래스 출력
  • Class
    • 객체의 설계도 정보를 표현하는 클래스
    • 클래스명, 필드, 생성자, 메서드의 정보를 포함하고 있는 객체
    • Boolean, Character, Byte, Short, Integer, Long, Float, Double
  • Wrapper 클래스
    • 기본자료형 타입의 값을 객체로 표현할 때 사용되는 클래스
  • String, StringBuffer, StringBuilder
    • String은 문자열을 표현하는 클래스. 문자열을 조작하는 다양한 메서드 포함
    • StringBuffer와 StringBuilder는 내부에 버퍼(임시저장소)가 있어서 문자열 추가시 사용
  • Math
    • 수학 연산과 관련된 상수와 정적 메서드 제공
    • 클래스의 모든 메서드가 정적 메서드
  • System, Runtime
    • System: 자바프로그램을 실행하는 운영체제와 관련된 정보를 제공하는 클래스
    • Runtime: 운영체제와의 인터페이스 지원. 운영체제와 관련된 명령어 실행
  • Throwable
    • Error와 Exception 클래스의 부모 클래스
    • 자바에서 발생하는 모든 오류 정보를 표현하는 것이 Error와 Exception클래스

object 클래스

  • 모든 객체의 최상위 부모 클래스
  • Object 클래스의 메서드는 모든 객체에서 사용 가능

object클래스 - hashcode()

객체.hashcode();

  • 해시코드 값 출력
  • 각 객체마다 다른 주소값을 갖고 있으므로, 내용이 같아도 다른 내용이 출력됨

object클래스 - equals(비교값)

객체1.equals(객체2);

  • 두 객체간의 값 비교
  • 주소값이 아닌 값만 비교함

object클래스 - toString()

객체.toString();

  • 객체가 갖고 있는 값들을 문자열로 만들어 리턴, 즉 객체를 문자열로 출력할때 이용
  • 초기 리턴값은 클래스이름@16진수해시코드 형식
  • 보통 아래와 같이 오버라이딩해서 사용함
  • toString의 오버라이딩은 변수에 어떤값이 들어있는지 확인 할 디버깅이 목적
1. Main 클래스
public class Main {
	public static void main(String[] args) {
		Product p = new Product("프링글스", "1600원");
		System.out.println(p.toString());
	}
}


2. Product 클래스
public class Student {
	private String name;
	private String price;
	
	public Product(String name, String price) {
		this.name = name;
		this.price = price;
	}
	
	@Override
	public String toString() {
		return "상품명: " +name + ", 가격: " + price + "원";
	}
}
// 출력값-> 상품명: 프링글스, 가격: 1600원
  • Date 클래스에도 사용
package sample;

import java.util.Date;

public class Sample{
	public static void main(String[]args){

		Date date = new Date();
		System.out.println(date.toString());		
	}
}

// 현재 날짜 출력됨

Clone 메서드

클래스 참조변수명 = (클래스)복제할객체.clone();

  • cloneable 인터페이스의 추상메서드
  • 따라서 implements cloneable로 인터페이스를 구현해야 함
  • 특정 클래스를 복제하여 같은 내용의 새로운 인스턴스를 생성할 때 사용
  • 복제가 되어 내용이 같더라도 주소값이 다르므로 다른 객체임

String 클래스

  • 문자열을 표현하는 객체
  • 문자열과 관련된 다양한 메서드 지원함

String클래스 - length()

  • 문자열의 길이를 반환
String str = "abcdefg";
int len = str.length();
System.out.println(len);	// 7이 출력됨

혹은

int len2 = "아무말이나".length();
System.out.println(len2);	// 5가 출력됨

String클래스 - equals(Object str)

  • Object클래스의 equals를 재정의 한 것
  • 문자열의 내용을 비교하여 동등성여부 반환
String str1 = "hello";
String str2 = "Hello";
String str3 = "hello";

boolean result1 = str1.equals(str2);	// false
boolean result2 = str1.equals(str3);	// true

0개의 댓글