Person p6 = Person(p5)这段代码怎么运行
时间: 2024-06-16 12:06:11 浏览: 15
这段代码是在C++中创建一个名为p6的Person对象,并使用另一个已存在的Person对象p5进行初始化。这是通过调用Person类的拷贝构造函数来完成的。
拷贝构造函数是一个特殊的构造函数,用于创建一个新对象并将其初始化为与现有对象相同的值。在这种情况下,p6将被初始化为与p5相同的值。
具体运行过程如下:
1. 创建一个新的Person对象p6。
2. 调用拷贝构造函数,将p5的值复制到p6中。
3. p6现在具有与p5相同的属性和值。
相关问题
用java创建TreeSet集合完成以下操作: 样例输入: Person p1=new Person("001","tt",27); Person p4=new Person("001","tt",29); Person p2=new Person("005","tt1",23); Person p3=new Person("006","tt2",27); Person p5=new Person("007","tt3",22); Person p6=new Person("007","tt3",40); 样例输出: 001---tt---27 001---tt---29 005---tt1---23 006---tt2---27 007---tt3---22 007---tt3---40
好的,下面是代码实现:
```java
import java.util.TreeSet;
public class Main {
public static void main(String[] args) {
TreeSet<Person> set = new TreeSet<>();
Person p1 = new Person("001", "tt", 27);
Person p4 = new Person("001", "tt", 29);
Person p2 = new Person("005", "tt1", 23);
Person p3 = new Person("006", "tt2", 27);
Person p5 = new Person("007", "tt3", 22);
Person p6 = new Person("007", "tt3", 40);
set.add(p1);
set.add(p4);
set.add(p2);
set.add(p3);
set.add(p5);
set.add(p6);
for (Person p : set) {
System.out.println(p);
}
}
}
class Person implements Comparable<Person> {
private String id;
private String name;
private int age;
public Person(String id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
@Override
public String toString() {
return id + "---" + name + "---" + age;
}
@Override
public int compareTo(Person o) {
if (this.age != o.age) {
return Integer.compare(this.age, o.age);
} else if (!this.name.equals(o.name)) {
return this.name.compareTo(o.name);
} else {
return this.id.compareTo(o.id);
}
}
}
```
这个代码实现了一个名为`Main`的类,创建了一个`TreeSet`集合,并添加了6个`Person`对象。然后,遍历集合并输出每个`Person`对象的信息。`Person`类实现了`Comparable`接口,通过重写`compareTo()`方法,实现了按`age`、`name`、`id`的顺序进行比较,并且重写了`toString()`方法,输出了`Person`对象的信息。
person p person p = new person 的区别
在Java中,`person p` 和 `person p = new person` 有很大的区别。
`person p` 只是声明了一个名为p的person类型变量,但是并没有创建person对象。这意味着,在使用p之前需要先创建一个person对象。例如:
```
person p; //声明一个person类型变量p
p = new person(); //创建一个person对象并将其赋值给p
```
而 `person p = new person()` 则是声明并创建了一个person对象。这意味着,在使用p时,我们已经有了一个可用的person对象。例如:
```
person p = new person(); //声明并创建一个person对象p
p.setName("John"); //使用p对象的setName方法给p对象设置一个名字
```
因此,`person p` 只是声明变量,而 `person p = new person()` 则是声明变量并创建对象。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)