(JAVA)자바/(JAVA)자바 문법
(JAVA)자바 문법 - HashCode 사용법 / StringBuffer 사용법 (간단한 예제)
공부가싫다가도좋아
2021. 3. 16. 21:24
반응형
HashCode
package chap02;
public class HashCodeEx {
public static void main(String[] args) {
// TODO Auto-generated method stub
String str1=new String("abc");
String str2=new String("abc");
System.out.println(str1.equals(str2));
System.out.println(str1.hashCode());
System.out.println(str2.hashCode());
//문자열 내용이 같은 str1,str2에 대해서 hashcode를 호출하면?? 같은 결과값.
//System.identityHashcode: 객체의 주소값으로 해시코드를 생성 --> 모든 객체에 대해서 다른 해시코드값을 반환.
System.out.println(System.identityHashCode(str1));
System.out.println(System.identityHashCode(str2));
//해싱이란? 데이터 관리 기법중의 하나. 다량의 데이터를 저장하고 검색하는데 유용함.
//해시함수는 찾고자하는 값을 입력하면, 그 값이 저장된 위치를 알려주는 해시코드를 반환.
//32bit=48byte 주소=4byte JVM
//63bit = 8 byte 주소=4byte JVM
//클래스의 인스턴스변수 값으로 객체의 같고 다름을 판단해야 하는 경우가 있다면?
//equals 메소드 + hashcode 메소드도 적절히 활용해서 같고 다름을 판단해야 됨.
//해싱기법(HashMap, hashSet) : 반드시 hashcode메소드를 오버라이딩 해야됨.
}
}
*결과
StringBuffer
package chap06;
public class StringBufferEx {
public static void main(String[] args) {
//String 클래스는 인스턴스를 생성할 때,지정된 문자열을 변경할 수 없다.
//StringBuffer클래스는 변경 하다.
//StringBuffer는 내부적으로 문자열을 편집하기 위한 버퍼를 가지고 있으며,크기를 지정할 수 있다.
//StringBuffer클래스는 equals 메소드를 오버라이딩
StringBuffer sb=new StringBuffer("abc");
StringBuffer sb2=new StringBuffer("abc");
System.out.println("sb == sb2 ?"+(sb==sb2));
System.out.println("sb.equals(sb2)?"+sb.equals(sb2));
//StringBuffer 의 내용을 String으로 변환한다.
String s=sb.toString(); //String s=new String(sb)
String s2=sb2.toString();
System.out.println("s.equals(s2)?"+s.equals(s2));
}
}
*결과
반응형