ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • day23 - JAVA (자바 , JAVA API, java lang, equals(), 객체 해시코드, toString())
    KIC/JAVA 2021. 7. 17. 20:14
    반응형

    [JAVA API]

    -> java api 에는 대표적으로 java.lang 과 java.util이 있다.

     

     

     

    [java lang]

    -> 자바 프로그램의 기본적인 클래스를 담은 패키지

    -> 포함된 클래스와 인터페이스는 import 없이 사용

     

    [주요 클래스]

     

     

    -> Wrapper: 참조 변수간에 주소를 주고받는 것을 케스팅이라고 하는데 이 개념중 기본형과 참조형은 둘 간의 케스팅이루어 지지 않는다. 이 기본형을 참조 형으로 바꿔주는게 Wrapper이다.

     

    -> 기본형은 call by value 라 값이 들어 있는 것이고 Wrapper는 주소로 할당하는 것

     

    -> 나중에 컬렉션에 갔을 때 이걸 처리하는 오브젝트 타입이 필요하기 때문에 Wrapper가 중요하다.

     

     

     

    [Oblect 클래스의 메서드]

     

     

     

    [equals() 메소드]

    -> 기본적으로 == 연산자와 동일한 결과 리턴(주소 비교)

     

     

    -> equals() 메소드는 논리적 동등을 위해 오버라이딩이 필요하다.

    논리적 동등: 같은 객체이건 다른 객체이건 상관 없이 객체에 저장한 데이터가 동일함

     

    -> 그냥 == 는 객체의 값 뿐만 아니라 객체 자체가 같은 객체인지 비교한다.

    -> equals()은 객체의 값이 같은지 비교한다.

     

     

     

     

     

     

    [객체 해시코드]

    -> 해시코드란 객체를 식별할 ㅎ나의 정수값

     

    -> 객체의 메모리 번지를 이용해 해시코드를 만들어 리턴한다.

     

    -> 개별 객체는 해시코드가 모두 다름

     

     

    => equals() 가 true 여야 하고 두 오브젝트의 해시코드가 같아야지만 두 오브젝트는 같은 오브젝트이다.

     

     

     

     

     

     

    [객체 문자정보 toString()]

    -> 객체를 문자열로 표현한 값

     

    -> Object 클래스의 toString() 메소드는 객체의 문자 정보를 리턴한다.

     

     

    -> 일반적으로는 의미있는 문자정보가 나오도록 재정의 해서 사용

       -> Data 클래스: 현재 시스템의 날짜와 시간 정보 리턴

       -> String 클래스: 저장하고 있는 문자열 리턴

     

    -> system.out.println(Object) 메소드

    -> 오브젝트의 toString()의 리턴값을 출력한다.

     

     

     

     

     

    [객체 복제 clone()]

    -> 원본 객체의 필드 값과 동일한 값을 가지는 새로운 객체를 생성하는 것

     

    -> 얕은 복제: 필드 값만 복제(참조 타입 필드는 번지를 공유)

     

    -> 깊은 복제: 참조하고 있는 객체도 복제

     

     

    -> Object clone() 메소드

    -> 동일한 필드 값을 가진 얕은 복제된 객체 리턴

    -> java.lang.Cloneable 인터페이스를 구현한 객체만 복제 가능

     

     

    -> 깊은 복제는 clone() 메서드를 재정의하고 참조 객체도 복제해야 한다.

     

     

     

     

     

    [String 메소드]

    -> 문자열의 추출, 비교, 찾기, 분리, 변환등과 같은 다양한 메소드를 가진다.

     

    사용 빈도 높은 메서드들

     

     

    [String 메소드 ex]

    package javaPro.java_string;
    
    public class StringEx1 {
        public static void main(String[] args) {
            String s = new String("ABCDEFGH");
            
    		System.out.println(s.charAt(4)); //E, 5번째 문자 리턴
            
    		//정렬관련 메서드. "ABCDEFGH" - "abc" : 65 - 97 = -32
    		System.out.println(s.compareTo("abc"));//-32
            
    		//IgnoreCase : 대소문자 구분없이.
    		System.out.println(s.compareToIgnoreCase("abcdefgh"));//0 //다를땐 -1 출력
            
    		//concat() : 문자열 연결. s = s + "abc"
    		System.out.println(s.concat("abc"));//ABCDEFGHabc
    		System.out.println(s + "abc");//ABCDEFGHabc
            
    		//endsWith : s문자열의 끝이 "GH"?
    		System.out.println(s.endsWith("GH")); //true
            
    		//startsWith : s문자열의 시작이 "AB"?
    		System.out.println(s.startsWith("AB")); //true
            
    		System.out.println(s.equalsIgnoreCase("abcdefgh"));//true
    		System.out.println(s.equals("abcdefgh"));//false
            
    		s = new String("This is a String");
            
    		//indexOf : 문자나 문자열의 위치 리턴
    		System.out.println(s.indexOf('i')); //2
            
    		//indexOf : 5번인덱스포함 이후에 문자나 문자열의 위치 리턴.
    		System.out.println(s.indexOf('i',5));//5
            
    		//indexOf : 15번인덱스포함 이후에 문자나 문자열의 위치 리턴. 
    		System.out.println(s.indexOf('i',15));//-1. 15번 인덱스 이후 문자없음.
    		System.out.println(s.indexOf("is")); //2
    		System.out.println(s.indexOf("is",3)); //5
            
    		//lastIndexOf : 뒤쪽부터 검색하여 문자나 문자열의 위치 리턴
    		System.out.println(s.lastIndexOf("is")); //5
            
    		System.out.println(s.length()); //16. 문자열의 길이
            
    		//replace : 치환  is=> QR문자열로 치환.
    		System.out.println(s.replace("is", "QR"));
            
    		//substring : 부분문자열 리턴
    		// 5번 인덱스 부터 이후를 부분문자열로 리턴
    		System.out.println(s.substring(5));
            
    		// 5번 인덱스부터  13번인덱스 앞 까지를 부분문자열로 리턴 (5 ~ 12 인덱스)
    		System.out.println(s.substring(5,13));
            
    		System.out.println(s.toLowerCase()); //소문자로 출력
    		System.out.println(s.toUpperCase()); //대문자로 출력
            
    		//trim() : 양쪽 공백 제거. 
    		System.out.println("["+"  문자열 trim 메서드         ".trim()+"]");
        }
    }

     

     

     

    [Math 클래스]

    -> 수학 계산에 사용할 수 있는 클래스 제공

     

     

     

    [Random 클래스]

    -> 난수를 만드는 알고리즘에 사용되는 seed 설정 가능

     

     

     

    [Date 클래스]

    -> 날짜를 표현하는 클래스

     

    -> 날짜 정보를 객체간에 주고 받을 때 사용

     

     

     

    [Calendar 클래스]

    -> 달력을 표현한 추상 클래스

    -> os 에 설정된 시간대 기준의 Calendar 객체를 얻는다.

     

     

    -> 다른 시간대의 Calendar 객체도 얻기 가능

     

     

     

     

    [Format 클래스]

    -> 숫자와 날짜를 원하는 형식의 문자열로 변환

     

    [종류]
    ▶ 숫자 형식: DecimalFormat

    ▶ 날짜 형식: SimpleDateFormat

    ▶ 매개변수화 된 문자열 형식: MessageFormat

     

    [숫자 형식 클래스(DecimalFormat)]
    -> 적용할 패턴 선택해 생성자 매개값으로 지정 후 객체 생성

     

     

     

    300x250

    댓글

Designed by Tistory.