본문 바로가기
(JAVA)자바/(JAVA)자바 문법

(JAVA)자바 문법 - HashCode 사용법 / StringBuffer 사용법 (간단한 예제)

by 공부가싫다가도좋아 2021. 3. 16.
반응형

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));

	}

}

*결과

반응형

댓글