问题描述
public void changPwd(User user){ User u=user; u.setName("zs");}和public void changPwd(User user){ user.setName("zs");}有区别吗?尤其是在多线程的时候 问题补充:lanrenjun 写道
解决方案
从效果上讲 应该是没有区别因为定义的User u=user; 相当于变量u对 user的引用 所以u.setName("zs"); 就相当于 user.setName("zs"); 另外在多线程下 要看传入的user的具体情况了 假如是线程安全的就没有问题假如是多个线程共享一个user可能会出现问题单单从上面两段代码来讲 是没有区别的
解决方案二:
我的理解如下根据代码规范 形参传入来的默认都 是带final的既如下public void changPwd(final User user){ User u=user; u.setName("zs"); //这里 u = new User();} 这样做的好处是u还会在下面赋予其他的值 这样对于final的 user 是不允许的
解决方案三:
引用我看了几个java类的源码,他们一般用的都是上面这种写法 这就难以理解,因为上面写法多了临时变量的创建,属于浪费
解决方案四:
你这样写完全一样的。多线程下也是一样的。
解决方案五:
毫无区别,线程看调用,方法本身没区别
时间: 2024-10-06 20:34:19