为什么会返回Person{name='张三', age=20}
时间: 2024-03-28 09:37:17 浏览: 8
在上面的例子中,我们通过覆盖`toString()`方法来自定义对象的字符串表示形式。在该方法中,我们将对象的属性`name`和`age`组合成一个字符串,然后返回它。
在Java中,当您打印一个对象时,它将自动调用该对象的`toString()`方法,以便返回对象的字符串表示形式。因此,当您打印一个`Person`对象时,它将返回我们自定义的字符串:`Person{name='张三', age=20}`。
这样做的好处是,当您需要打印一个对象时,它将返回更有意义和可读性的字符串,而不是默认的类名和哈希码,这对于调试和日志记录非常有用。
相关问题
java string person(id=10, name="张三",age=100),取name的值
要取出Java String对象 "person(id=10, name=\"张三\",age=100)" 中的 name 的值,可以使用正则表达式或者字符串截取的方法。具体步骤如下:
1. 使用正则表达式匹配字符串中 name= 后双引号中的内容,即 "name=\"(.*?)\""。
2. 使用 Matcher 类的 find() 方法查找匹配的字符串。
3. 使用 group() 方法取出第一个括号中匹配的字符串,即为 name 的值。
Java代码示例:
```
String str = "person(id=10, name=\"张三\",age=100)";
Pattern pattern = Pattern.compile("name=\"(.*?)\"");
Matcher matcher = pattern.matcher(str);
if (matcher.find()) {
String name = matcher.group(1);
System.out.println(name); // 输出 "张三"
}
```
如果不想使用正则表达式,也可以使用字符串截取的方法,具体步骤如下:
1. 使用 indexOf() 方法查找字符串中 name= 的位置,记为 pos1。
2. 使用 indexOf() 方法查找字符串中第一个双引号 " 的位置,记为 pos2。
3. 使用 substring() 方法截取从 pos2+1 开始到下一个双引号 " 的位置,即为 name 的值。
Java代码示例:
```
String str = "person(id=10, name=\"张三\",age=100)";
int pos1 = str.indexOf("name=");
int pos2 = str.indexOf("\"", pos1);
String name = str.substring(pos2 + 1, str.indexOf("\"", pos2 + 1));
System.out.println(name); // 输出 "张三"
```
需要注意的是,上述代码假设字符串中 name= 后面的值不含有双引号,否则会截取错误。如果 name= 后面的值可能含有双引号,建议使用正则表达式或者字符串分割等方法来提取字符串。
【题目1】:请按照下列要求编写程序。 (1)编马一个student类,包含name和age属性,提供有参构造方法。 (2) 在student类中,重写tostring()方法,输出age和name的值。 使用Treeset创建集合,依次向集合中添加元素: “张三”,23): (王五”,25): (李四”,24):公 按年龄从小到大进行排序。 输出结果 [Person Lname=张三,age=23], Person [name=李四,age=241, Person [name=王五,age=25]]
好的,这是一个Java面向对象的编程题目,我会根据你的要求进行编写。
以下是代码实现:
```java
import java.util.TreeSet;
class Student implements Comparable<Student> {
private String name;
private int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return String.format("Person [name=%s, age=%d]", name, age);
}
@Override
public int compareTo(Student other) {
return Integer.compare(this.age, other.age);
}
}
public class Main {
public static void main(String[] args) {
TreeSet<Student> set = new TreeSet<>();
set.add(new Student("张三", 23));
set.add(new Student("王五", 25));
set.add(new Student("李四", 24));
for (Student student : set) {
System.out.println(student.toString());
}
}
}
```
输出结果为:
```
Person [name=张三, age=23]
Person [name=李四, age=24]
Person [name=王五, age=25]
```
以上就是按照要求编写的程序,使用了Java中的TreeSet对学生对象进行排序,并按照要求输出了结果。