Java에서 toString 메서드를 사용하는 방법
''의 해 줄 수 요?toString()
되어 있습니다.Object
네? 네, 네, 네, 네, 네?
문서에서:
개체의 문자열 표현을 반환합니다. 「」의
toString
method는 이 개체를 "텍스트로 나타내는" 문자열을 반환합니다.그 결과는 간결하지만 사람이 읽기 쉬운 유익한 표현이 되어야 한다.모든 서브클래스는 이 메서드를 덮어쓰는 것이 좋습니다.
toString
Object
는 객체가 인스턴스인 클래스의 이름, at-sign 문자 "@" 및 객체의 해시 코드의 부호 없는 16진수 표현으로 구성된 문자열을 반환합니다. 이 는 다음과 합니다.
getClass().getName() + '@' + Integer.toHexString(hashCode())
예를 들어:
String[] mystr ={"a","b","c"};
System.out.println("mystr.toString: " + mystr.toString());
output:- mystr.toString: [Ljava.lang.String;@13aaa14a
「 」의 String.toString
:
) in in) in in in in in in in in()String
간단하게 .String.toString
★★★★★★★★★★…
package pack1;
import java.util.*;
class Bank {
String n;
String add;
int an;
int bal;
int dep;
public Bank(String n, String add, int an, int bal) {
this.add = add;
this.bal = bal;
this.an = an;
this.n = n;
}
public String toString() {
return "Name of the customer.:" + this.n + ",, "
+ "Address of the customer.:" + this.add + ",, " + "A/c no..:"
+ this.an + ",, " + "Balance in A/c..:" + this.bal;
}
}
public class Demo2 {
public static void main(String[] args) {
List<Bank> l = new LinkedList<Bank>();
Bank b1 = new Bank("naseem1", "Darbhanga,bihar", 123, 1000);
Bank b2 = new Bank("naseem2", "patna,bihar", 124, 1500);
Bank b3 = new Bank("naseem3", "madhubani,bihar", 125, 1600);
Bank b4 = new Bank("naseem4", "samastipur,bihar", 126, 1700);
Bank b5 = new Bank("naseem5", "muzafferpur,bihar", 127, 1800);
l.add(b1);
l.add(b2);
l.add(b3);
l.add(b4);
l.add(b5);
Iterator<Bank> i = l.iterator();
while (i.hasNext()) {
System.out.println(i.next());
}
}
}
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ 하면 '아까운 생각'에 대한 수 있을 거예요.String.toString
toString()
method는 개체의 텍스트 표현을 반환합니다.기본 구현은 이미 에 포함되어 있습니다.java.lang.Object
는 "이것"에서 됩니다.java.lang.Object
Java의 모든 오브젝트가 이 메서드를 가지고 있음을 보증합니다.
디버깅에 는 디버깅은 에서는 디버깅의 되는 경우가 때문입니다.toString()
방법.따라서 의미 있는 구현을 사용하되 기술적인 목적으로 사용하십시오.애플리케이션 로직에서는 getter를 사용해야 합니다.
public class Contact {
private String firstName;
private String lastName;
public Contact (String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
public String getFirstName() {return firstName;}
public String getLastName() {return lastName;}
public String getContact() {
return firstName + " " + lastName;
}
@Override
public String toString() {
return "["+getContact()+"]";
}
}
응용 프로그램의 컨텍스트 내에서 선택적으로 사용할 수 있지만 디버깅 목적으로 사용되는 경우가 훨씬 많습니다.들어 때 IDE를 쉬워집니다.toString()
구성원을 검사하는 것보다 더 많은 물체를 검사합니다.
.toString()
방법이 필요합니다.관례상, 대부분의 경우 클래스의 이름과 관련 데이터 멤버의 값을 알려줍니다.의 경우, 개,,는toString()
IDE를 사용하다
toString()
방법이나 프로그램 내에서 해석하는 것은 좋지 않은 생각입니다.슨슨 、 어어있있있있 지로지지 。
toString()은 객체의 문자열/텍스트 표현을 반환합니다.일반적으로 디버깅, 로깅 등의 진단 목적으로 사용되는 toString() 메서드는 개체에 대한 의미 있는 세부 정보를 읽기 위해 사용됩니다.
오브젝트가 println, print, printf, String으로 전달되면 자동으로 호출됩니다.format's assert 또는 문자열 연결 연산자.
클래스 오브젝트의 toString() 기본 구현에서는 다음 논리를 사용하여 이 오브젝트의 클래스 이름 뒤에 @ 기호와 이 오브젝트의 해시 코드의 부호 없는 16진수 표현으로 구성된 문자열을 반환합니다.
getClass().getName() + "@" + Integer.toHexString(hashCode())
예를 들어 다음과 같습니다.
public final class Coordinates {
private final double x;
private final double y;
public Coordinates(double x, double y) {
this.x = x;
this.y = y;
}
public static void main(String[] args) {
Coordinates coordinates = new Coordinates(1, 2);
System.out.println("Bourne's current location - " + coordinates);
}
}
인쇄하다
Bourne's current location - Coordinates@addbf1 //concise, but not really useful to the reader
다음으로 다음과 같이 좌표 클래스의 String()을 덮어씁니다.
@Override
public String toString() {
return "(" + x + ", " + y + ")";
}
을 낳다
Bourne's current location - (1.0, 2.0) //concise and informative
이러한 오브젝트에 대한 참조를 포함한 컬렉션에서 메서드가 호출되면 String()에 대한 덮어쓰기의 유용성은 더욱 높아집니다.예를 들어 다음과 같습니다.
public static void main(String[] args) {
Coordinates bourneLocation = new Coordinates(90, 0);
Coordinates bondLocation = new Coordinates(45, 90);
Map<String, Coordinates> locations = new HashMap<String, Coordinates>();
locations.put("Jason Bourne", bourneLocation);
locations.put("James Bond", bondLocation);
System.out.println(locations);
}
인쇄하다
{James Bond=(45.0, 90.0), Jason Bourne=(90.0, 0.0)}
이거 말고
{James Bond=Coordinates@addbf1, Jason Bourne=Coordinates@42e816}
구현 포인터는 거의 없습니다.
- 거의 항상 toString() 메서드를 덮어써야 합니다.덮어쓰기가 필요하지 않은 경우 중 하나는 정적 유틸리티 메서드를 java.util 방식으로 그룹화하는 유틸리티 클래스입니다.수학입니다. 오버라이드가 필요하지 않은 경우는 매우 직관적입니다. 거의 항상 알 수 있습니다.
- 반환되는 문자열은 간결하고 알기 쉬운 설명이어야 합니다.
- 적어도 2개의 다른 오브젝트 간에 동등성을 확립하기 위해 사용되는 필드, 즉 equals() 메서드 구현에서 사용되는 필드는 toString() 메서드로 뱉어내야 합니다.
반환되는 문자열에 포함된 모든 인스턴스 필드에 접근자/게터를 지정합니다.예를 들어 좌표 클래스에서
public double getX() { return x; } public double getY() { return y; }
toString() 메서드에 대한 포괄적인 내용은 By Josh Bloch의 책 "Effective Java™, Second Edition" 항목 10에 나와 있습니다.
String 컨텍스트에서 오브젝트(String이 아님)에 액세스 할 때마다 컴파일러에 의해 toString()이 호출됩니다.
이래서
Map map = new HashMap();
System.out.println("map=" + map);
는 동작합니다.또한 자신의 클래스에서 오브젝트에서 표준 toString()을 덮어쓰면 String 컨텍스트에서도 오브젝트를 유용하게 사용할 수 있습니다.
(블랙박스라고 생각해!절대로 콘텐츠를 사람에게 보여주는 것 이외에는 사용하지 마십시오.)
toString 메서드를 올바르게 덮어쓰면 Java 로깅 및 디버깅에 도움이 됩니다.
코딩:
public class Test {
public static void main(String args[]) {
ArrayList<Student> a = new ArrayList<Student>();
a.add(new Student("Steve", 12, "Daniel"));
a.add(new Student("Sachin", 10, "Tendulkar"));
System.out.println(a);
display(a);
}
static void display(ArrayList<Student> stu) {
stu.add(new Student("Yuvi", 12, "Bhajji"));
System.out.println(stu);
}
}
Student.java:
public class Student {
public String name;
public int id;
public String email;
Student() {
}
Student(String name, int id, String email) {
this.name = name;
this.id = id;
this.email = email;
}
public String toString(){ //using these toString to avoid the output like this [com.steve.test.Student@6e1408, com.steve.test.Student@e53108]
return name+" "+id+" "+email;
}
public String getName(){
return name;
}
public void setName(String name){
this.name=name;
}
public int getId(){
return id;
}
public void setId(int id){
this.id=id;
}
public String getEmail(){
return email;
}
public void setEmail(String email){
this.email=email;
}
}
출력:
[스티브 12 다니엘, 사친 10 텐덜카르]
[스티브12 다니엘, 사친10텐둘카르, 유비12바지]
Pojo(Student.java) 클래스의 String()에 익숙하지 않은 경우 다음과 같은 출력이 나타납니다.[com.steve.test.Student@6e1408, com.steve.test.Student@e53108]
이러한 문제를 피하기 위해 toString() 메서드를 사용하고 있습니다.
디버깅과 관련하여 cletus가 답변한 내용과는 별도로 오브젝트를 출력할 때마다 사용됩니다.예를 들어,
System.out.println(myObject);
또는
System.out.println("text " + myObject);
toString의 주요 목적은 객체의 String 표현을 생성하는 것입니다.즉, 반환값은 항상 String입니다.대부분의 경우 이는 단순히 객체의 클래스와 패키지 이름일 뿐이지만 String Builder와 같은 경우에는 실제로 String-text를 얻을 수 있습니다.
Python을 먼저 배우고 Java를 배운다면.Python의 Method와 같은 역할을 한다고 생각합니다.__dict__()
★★★★★★★★★★★★★★★★★」__init__()
오브젝트를 나타내는 문자열을 참조합니다.
toString()
는 지정된 개체를 문자열 값으로 변환합니다.
/**
* This toString-Method works for every Class, where you want to display all the fields and its values
*/
public String toString() {
StringBuffer sb = new StringBuffer();
Field[] fields = getClass().getDeclaredFields(); //Get all fields incl. private ones
for (Field field : fields){
try {
field.setAccessible(true);
String key=field.getName();
String value;
try{
value = (String) field.get(this);
} catch (ClassCastException e){
value="";
}
sb.append(key).append(": ").append(value).append("\n");
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
return sb.toString();
}
언급URL : https://stackoverflow.com/questions/3615721/how-to-use-the-tostring-method-in-java
'source' 카테고리의 다른 글
cURL에서 $_POST 값 전달 (0) | 2022.12.08 |
---|---|
MySql workbench 쿼리 이력(마지막으로 실행된 쿼리/쿼리). 즉, 테이블 생성/변경, 선택, 업데이트 쿼리 삽입 (0) | 2022.12.08 |
MySQL과 null 값 비교 (0) | 2022.12.08 |
URL에서 JSON 개체 가져오기 (0) | 2022.12.08 |
스프링 데이터 저장소는 실제로 어떻게 구현됩니까? (0) | 2022.12.08 |