关于java值传递的疑惑

我是大混子 2018-10-11 08:10:02
package List;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class Person implements Comparable<Person>{
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public int compareTo(Person p) {
return this.age - p.age;
}


public Person(String name, int age) {
this.name = name;
this.age = age;
}


@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
public static void main(String[] args) {
List<Person> pList = new ArrayList<Person>();
Person p1 = new Person("tom", 17);
Person p2 = new Person("keason", 13);
Person p3 = new Person("alice", 15);
pList.add(p1);
pList.add(p2);
pList.add(p3);
Collections.sort(pList);
System.out.println(pList);
Person.dec(pList);
System.out.println(pList);
}

public static void dec(List<Person> pList){
pList.remove(0);
}
}
求大神讲解 为何在静态方法dec中操作pList会影响到方法外的变量pList
...全文
108 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
有梦想的小白 2018-10-15
  • 打赏
  • 举报
回复
基本类型作为方法参数在执行操作后不会影响数据源,引用类型作为方法参数在执行操作后会影响数据源,因为操作的是同一个地址的变量。
yelinliner 2018-10-12
  • 打赏
  • 举报
回复
值传递与引用传递:https://blog.csdn.net/weixin_36027342/article/details/82824057
yelinliner 2018-10-12
  • 打赏
  • 举报
回复
pList是Person类的集合,操作的是对象,属于JAVA中的引用传递,操作的是对应的地址,所以在方法中改变的和方法外的是同一个对象,是剪切,直接影响的。而你说的值传递是指的对基本数据类型的操作,值传递是复制 副本,这两个传递不一样。


我有一个对值传递和引用传递简单总结的博客,欢迎评论
笑云遥 2018-10-11
  • 打赏
  • 举报
回复
static是静态修饰词,被static修饰的变量或方法是属于类的,它只有一个空间,所有对象共享,在一个地方修改其他地方都会修改,不知道我这样说你能不能明白!

51,412

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧