대상 tostring () 방법이 다시 쓰여지지 않으면 부모 Object의 tostring () 방법을 기본적으로 호출하고, Object의 tostring () 방법은 대상의hashCode를 출력합니다. 일반적으로hashCode는 대상의 메모리 주소입니다.
2533 단어 HashCode
jPasswordField는 JFrame의 암호 입력 상자입니다. 다음 방법으로 암호의value를 얻을 수 없습니다.
jPasswordField.getPassword().toString();
이것은 jPasswordField 때문이다.getPassword () 는 문자 그룹 char[]를 얻은 다음에 tostring 방법을 호출하면 이 문자 그룹의hashCode, 즉 문자 그룹의 메모리 주소를 얻을 수 있습니다.
아래의 방법만 이 char[] 대상을 String 대상으로 바꿀 수 있습니다.
String s = new String(jp2_jpf.getPassword());
왜 그런 걸까요?
먼저 다음 예를 살펴보십시오.
String s="abcd";
char[] c=s.toCharArray();
String s1=new String(c);// String , s1
String s2=c.toString();// toString() , s2
s1, s2의 값은 다르다. s1의 값은 abcd이고 s2의 값도 String이지만 대상 c의hashCode일 뿐이다.toSting 방법은 기본적으로 현재 대상의hashCode, 즉 메모리 주소를 되돌려줍니다.
요약: 대상 tostring () 방법이 다시 쓰여지지 않으면 부모 Object의 tostring () 방법을 기본적으로 호출하고, Object의 tostring () 방법은 대상의hashCode를 출력합니다. 일반적으로hashCode는 이 대상의 메모리 주소입니다.
밤을 하나 더 들다.
Integer a=10;
String s=a.toString();
s의value는 10입니다. 이것은 Integer가 toString () 방법을 다시 썼기 때문입니다.
ToString에 대한 jdk의 Integer 클래스 재작성 소스를 첨부합니다.
public String toString() {
return toString(value);
}
public static String toString(int i) {
if (i == Integer.MIN_VALUE)
return "-2147483648";
int size = (i < 0) ? stringSize(-i) + 1 : stringSize(i);
char[] buf = new char[size];
getChars(i, size, buf);
return new String(buf, true);
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
EffectiveJava - 모든 객체에 공통적인 메서드equals 방법을 덮어쓰지 않을 때, 클래스의 모든 실례는 그 자체와 같다 예를 들어 Random은 equals 방법을 실현하여 두 Random이 발생하는 무작위 수가 같은지 판단하는데 사용하지만 디자이너는 클라이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.