자바 전 삼,전 하 는 것 은 무엇 입 니까?

1405 단어 자바
자바 전 삼,전 하 는 것 은 인용 도 내용 도 아니다.
전형 적 인 사례
public class JavaTest {
    public static void main(String[] args) {
        String mes = "Hello";
        transf(mes);
        System.out.println(mes);

    }
    private static void transf(String mes){
        mes = mes +"world";//      new     String
    }
}
    :
Hello

왜 그 럴 까요?
  • main 방법 에서 mes="Hello"는 스 택 에 인용 을 저장 하고 더미 에 메모리 하 나 를 엽 니 다
  • transf(mes)방법 을 호출 할 때 mes 는 인 용 된 사본 전송 방법 을 복사 합 니 다
  • 방법 내부 에서 mes=mes+"World"에 대해 mes 던 전의 인용 주 소 를 바 꾸 었 기 때문에 내부 mes 는 바 뀌 었 다
  • 그러나 main 함수 에서 transf(mes),mes 가 스 택 을 나 갈 때 mes 는 원래 의 인용 이 고 변 하지 않 았 기 때문에 출력 한 것 은 원래 의 값 입 니 다.Hello
  • equals&==
  • 대상 의:=:대상 의 인용 이 충분 하 다 고 판단 한다.즉,스 택 에 존재 하 는 인용 위치 이다
  • Object:equals:최 하층 의 equals 실현 은 인용 이 같은 지 직접 판단 하 는 것 이다
  • String:=:판단 하 는 것 은 대상 의 인용 이 충분 하 다 는 것 이다.즉,스 택 에 존재 하 는 인용 위치 이다
  • String:equals:Object 의 equals 방법 을 재 작성 하여 내용 이 같 는 지 판단 합 니 다
  • 4.567917.8 대 기본 유형:equals:모두 Object 의 equals 방법 을 재 작성 하여 내용 이 같은 지 판단 한다
  • 사용자 정의 대상:equals:equals 방법 을 다시 쓰 지 않 은 것 은 모두 인용 이 같다 고 판단 하 는 것 입 니 다.==(자바 기본 유형 만 연산 자 를 다시 불 러 올 수 있 습 니 다)
  • 예 를 들 어 byte,long,int,double 등,예 를 들 어 Integer,String 등 은 모두 Object 의 equals 방법 을 다시 써 서 내용 이 같 는 지 판단 한다.
    Object 의 equals 방법 을 다시 쓸 때 도 내용 이 같 지 않도록 hashcode 방법 을 다시 써 야 합 니 다.

    좋은 웹페이지 즐겨찾기