티스토리 뷰

기타/TIL

210203 수 TIL

bong-f 2021. 2. 3. 10:29

Done


Learned

equals(), hashCode()

  • equals ()기본형은 값을 비교, 참조형은 객체의 주소를 비교
  • hashCode () 객체의 주소를 int로 변환해서 반환
  • equals 결과가 true면 hashCode 값 비교도 같아야돼
    • 그래서 equals 오버라이딩 해주면 hasCode 도 오버라이딩 해줘야 함
  • equals() 오버라이딩 참조변수의 값 비교하고 싶을 때 오버라이딩 해줌

String 클래스

  • 내용 변경 불가
  • 문자열 리터럴 : String str = "abc"; 로 하면 같은 객체를 여러 참조변수가 가리킬수 있어 메모리 절약. 매번 new String해주지마. 메모리 낭비
  • 문자열 리터럴 = 상수, constant pool에 저장된다.
  • 바람직한 초기화 String s = ""; char c = ' ';

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

  • String(char[] value) <> toCharArray()
  • charAt // Stirng s = "hello"; char c = s.charAt(1);
  • compareTo // "abc".compareTo("abc"); 양수, 음수, 0 반환 ( a-a, b-b, c-d 이런식으로 비교)
  • concat 문자열 결합 // string.concat("word");
  • contains
  • startswith, endswith
  • eqqualsIgnoreCase
  • indexOf(ch), indexOf(string)
  • indexOf(ch, int pos) pos는 찾기시작할 위치, 못찾으면 -1
  • lastIndexOF(ch) lastIndexOf(string) 끝부터 찾기
  • split(구분자) 배열 반환
  • spliit(구분자, int limit) 최대 몇개로 나눌지
  • substring( int begin, int end) begin부터 end까지(미포함) 의 위치의 문자열 얻기
  • toLowerCase, toUpperCase
  • trim 양쪽 끝 공백만 제거
  • valuOf 만능키 성능은 느림 >>다 문자열로 >> 문자열을 다른 형으로

문자열과 기본형 간의 변환

  • 숫자를 문자열로
    (1) "" 공백 더하기
    (2) String.valueOf(숫자)
    : 1번이 더 편리하다. 1. 쓰다가 성능이 안나오면 2 쓰기
  • 문자열을 숫자로
    : (1) "" 공백 더하기
    ;(2) String.valueOf(숫자) ( returb Integer라는 참조형이지만 오토박싱으로 int 참조변수로 받아줄 수 있음)
    : 1번이 더 편리하다. 1. 쓰다가 성능이 안나오면 2 쓰기

지네릭스

  • 런타임에러를 컴파일 에러로 끌고 오기 위한 여러 방법 중에서 하나다.
    : 타입을 지정해줘서 컴파일시 이 타입과 맞지 않으면 컴파일 에러로 잡으려고

  • 장점. 타입이 정해져 있으니 형변환 코드 생략 가능하는 등 중복된 코드를 많이 줄여줄 수 있다.

  • 규칙

    • 참조변수와 생성자의 대입된 타입은 일치해야 한다. ( 조상 - 자손 관계도 안된다)
      : 단, 클래스 간의 다형성은 여전히 성립한다

       ArrayList<Product> list = newArrayList<Product>();
       list.add(new TV()); 가능 

      : 매개변수의 다형성도 성립한다

    • static멤버에 타입 변수 타입은 사용 불가하다 ( 모든 인스턴스에 공통으로 사용되어야 하는데)

      class Box<T> {
      static T item; // 불가 
      • new T 불가
  • 넣을 수 있는 타입에 제한 두기

    • T extends Fruit같이 대입할 수 잇는 타입을 제한할 수 있다.
  • 와일드 카드 <?>

    • 하나의 참조변수로 대입된 타입이 다른 객체를 참조 가능하게 한다
    • 메서드의 매개변수에 와일드 카드를 사용 가능

enum 열거형

  • 관련된 상수들을 묶어 놓은 것, 자동으로 값이 부여된다.

    class Direction {
      EAST, WEST, SOUTH, NORTH
    }
  • EAST, WEST, SOUTH, NORTH에 자동으로 0, 1, 2, 3 값 부여된다

  • 사용방법

    • Direction dir; dir = Direction.EAST;
    • Direction 객체끼리 값을 비교할 수 있다. equals와 == 모두 가능, compareTo 가능, 비교 연산자 불가
  • 열거형의 조상 Enum의메소드 values(), valueOf 사용할 수 있다

  • 원하는 값을 부여할 수도 있다. () 괄호 사용

    enum Direction  { 
      EAST(1), WEST(5), SOUTH(-1), NORTH(10);
      private final int value;
      Direction(int value) { this.value = value; }
    }
  • 여러개의 값을 부여가능 ex) EAST(1, ">")

애너테이션

  • @Override
    처럼 프로그램에는 영향을 주지 않으나 컴파일러나 다른 프로그램에게 유용한 정보를 제공. 형식이 틀리면 틀리다고 말해줌

Bad

  • 조금 여유있게 했다.

Good

  • 햇빛을 보려고 했다.

Feeling

  • 길을 잃었다. 빠빠밤. 눈을 감고 걸어도 맞는 길을 골랐으면 _
  • 자바의 정석을 가볍게나마 다봐간다.조금 더 구체적인 설명이 있는 자바책 하나를 구입하고 싶은데 고민인다.

Todo

generics, < T extends 특정클래스> < ? extends T> 차이 모르겠다

\\ T extends
class FruitBox {}
일 때
FruitBox fruitBox = new FruitBox();
FruitBox fruitBox = new FruitBox();
으로, 일단, 한 문장 안에서 참조변수의 타입과 생성자의 타입이 일치한다.
\\ ? extends
ArrayList<? extends Product> list = new Arraylist();
ArrayList<? extends Product> list = new ArrrayList

();
으로 하나의 참조변수 형식으로 다양한 타입을 넣은 ArrayList를 받아준다.


T extends가 이거 생성할 때는 이것 포하 자손 클래스만 돼! 라고 제약을 걸어둔 느낌이라면  
와일드카드는 이렇게 쓰면 이것도 받을 수 있고 저것도 받을 수 있어 로 열어둔 느낌

-   이런 느낌적인 느낌으로 이해했다.

'기타 > TIL' 카테고리의 다른 글

210206 - 07 토일 TIL  (1) 2021.02.05
210204 목 TIL  (0) 2021.02.04
210202 화 TIL  (0) 2021.02.02
210201 월 TIL  (0) 2021.02.01
210129 금 TIL  (0) 2021.01.29
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함