<Stringbuffer>
-String 데이터에는 메소드라는 것이 있는데 특정위치의 단어를 빼오거나 문자갯수를 세는것을 말한다.
하지만 String데이터는 문자열의 갯수를 바꾸는 것이 불가능하다.
그래서 String 메소드에 두문장을 합쳐주는것이 있는데 그것은 새로운 String 클래스를 생성해 주는 것이다.
하지만 StringBuffer는 변수자체의 수정이 가능하다.

위에내용을 풀어말하자면...
String 으로 +한값은 AABB가 나올것이다.
하지만 +사용되었을경우는 많은 메모리 소모한다.
이유는 객체와 객체가 합쳐지기 때문이다.
그럼 Stringbuffer는 어떠할까?
String에 + 하는것에 비해 내용은 좀더 길어지지만 객체가 합쳐지는것이 아닌 기존객체에 들어가는것이기 때문에 메모리낭비를 줄일수있고 결과값출력 역시시간이 단축될수있다.
위와같이 String + 와 Stringbuffer 를 한번만 수행하는경우는 메모리의 차이를
느낄수 없지만 여러번 반복해서 값이 나오는경우는 수행속도에 차이를 느낄수있다.
<equals()와 toString()>
-object 클래스는 모든 클래스에 대한 최상위 클래스로
java.lang 패키지에 있는 클래스중에 최상위이다.
object 클래스의 메서드중 equals(),toString() 두개의 메서드에 대해 알아보겠다.
class test{
String name;
int age;
test(String name,int age){
this.name = name;
this.age = age;
}
public static void main(String[] arg){
test a = new test("김철수",20);
test b = new test("김철수",20);
if( a == b )
System.out.println("같다");
else
System.out.println("다르다");
}
}
결과값은 "다르다"가 나온다.
이유는 주소가 다르기 때문이다.
<toString>
-toString 에 해당객체가 가지고 있는 String 을 반환하는 메서드이다.형식은 String toString();을 갖는다.
toString()메서드는 클래스이름과 정보만을 문자열로 넘겨준다.
더 자세한 인스턴스의 정보는 오버라이딩을 사용해서 얻을수 있다.
class test {
String name;
int age;
test(String name, int age) {
this.name = name;
this.age = age; }
public String toString(){
return name+"의 나이는 "+age;
}
System.out.println(a.toString());
public static void main(String args[]){
test a = new test("김철수", 20);
test b = new test("김철수", 20);
String name = "김철수";
if ( a.equals(name))
System.out.println("같다");
else
System.out.println("다르다");
}
}
<equals()>
-객체들 사이의 같은 내용이 있는지 검사하는 메서드로써..equals=>객체사이의 참조형 변수가 참조하는 객체가 포함하고 있는 항목이 같은지를 물어본다.
'=='연산자=>객체사이의 참조형 변수가 가리키고 있는 객체가 같은 객체인지 물어본다.
댓글 없음:
댓글 쓰기