///////
Search

Object Methods, String, StringBuffer

작성 날짜
2022/09/28 23:51
Text
Text 1
작성자

public boolean equals(Object obj)

Obj가 이 객체와 같으면 true
Circle c1 = new Circle(10); Circle c2 = new Circle(10); if (c1 == c2){ System.out.printf("Same"); } else{ System.out.println("Different"); }
Java
복사
ERROR 가 나지 않고 Different를 출력한다
object들을 ==로 비교하면 주소값을 비교한다
특정한 속성을 비교하고 싶다면 equals method를 만들어 줘야한다
class Circle { private int radius; public Circle(int radius) { this.radius = radius; } // to access the private variable public int getRadius() { return radius; } public boolean equals(Circle c){ return this.radius == c.getRadius(); } } public class CircleTest{ .... if (c1.equals(c2)){ System.out.printf("두개의 원은 같습니다"); } else{ System.out.println("두개의 원은 다릅니다"); } }
Java
복사
radius가 같으면 true를 return하는 equals method를 만듦
Overriding Object class’ method
@Override public boolean equals(Object obj) { if( obj instanceof Circle2) { // 원하는 객체라면 Circle2 c1 = (Circle2) obj; // Object를 해당 instance로 다운캐스팅 if( this.radius == c1.getRadius()) { return true; }else { return false; } }
Java
복사
모든 객체 타입으로 받을 수 있다
Object가 최고 조상

String

toString()

public static String valueOf (Object obj) { return (obj == null) ? "null" : obj.toString(); }
Object obj = null; sout(obj); --> null
sout(num1) -->
public static void main(String[] args) { String s1 = "java"; String s2 = "java"; String s3 = new String("java"); String s4 = new String("java"); if (s1 == s2) { System.out.println("Same"); } else{ System.out.println("Different"); } //같습니다 if (s3 == s4) { System.out.println("Same"); } else{ System.out.println("Different"); } // 다릅니다 }
Java
복사
리터럴은 한번 메모리에 올라가게 되면 같은 값을 사용하는 상수는 그 주소로 point한다

문자열 안에서 단어 찾기

indexOf - substring이 시작되는 index를 return
String str ="hello"; intindex = str.indexOf("hello"); System.out.println(index);
Java
복사
output: 0

.trim()

String의 양끝에 있는 공백을 없앤다
String str = " I love you "; System.out.println(str.trim());
Java
복사
⇒I love you

.split()

parameter: 무엇으로 split할 것인지
String[] words = "I am a boy".split(" ");
for (String token: words) { System.out.println(token); }
String[] words = "I am a boy".split(" ");
for (String token: words) { System.out.println(token); }
연습문제
try and catch string.split(" ")
Scanner sc = new Scanner(System.in); while (true) { try { System.out.printf(""); System.out.println(">>"); String str = sc.nextLine(); if(str.equals("그만")){ System.out.println("프로그램을 종료합니다"); break; } String arr = str.split(" "); System.out.println("어절 개수: " + arr.length); } catch (Exception e) { e.printStackTrace(); System.out.println("다시 입력해 주세요"); continue; } }
Java
복사

.valueOf()

parameter의 타입을 String으로 바꾼다

String Buffer/Builder

궁금한 것
1.
static method안에는 static method만 사용가능
static 키워드가 붙으면 JVM이 제일 먼저 메모리를 할당해줍니다. static이 아닌 method를 static method에서 호출하려고 하면 컴파일 오류가 납니다. 그 이유는 static method는 이미 JVM이 먼저 메모리를 할당해줬는데 호출하려는 메서드는 메모리에 올라가있지도 않기 때문입니다. (호출하고 싶다면 객체화 필수) 따라서 static method안에서는 메모리에 올라가는 시점이 동일한 static method만 사용할 수 있습니다!
2.
아래에는 true가 나오는데 while(sc.nextLine != “그만”)을 했을 때 그만을 입력 받아도 while문이 계속되는 이유
==는 문자열(내용)이 아닌 주소를 비교하는 연산자입니다! 따라서 주소값이 같지 않으면 while문 계속 돌아갑니다.