直接操作形参和下面这种操作有区别吗?

问题描述

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-07-31 16:39:50

直接操作形参和下面这种操作有区别吗?的相关文章

LINQ那些事儿(2)- 简单对象的CRUD操作和Association的级联操作

从(1)我们看到,当生成entity class定义时,entity class或xml mapping文件中都已经完整的包含了entity和关系数据库的映射信息了,LINQ2SQL会根据这些信息来把CRUD操作转化为SQL提交给数据库,并且把数据库的返回DataTable封装成我们想要的对象. 所谓简单对象,就是数据表定义中没有Foreign-key的entity class,在操作这类对象时不会涉及级联的操作. 简单对象的CRUD操作,可参考MSDN:http://msdn.microsof

并行计算-linux 下用p,V操作对两线程的操作

问题描述 linux 下用p,V操作对两线程的操作 计算/打印线程的同步:两个线程共享公共变量a线程1负责计算(+1)线程2负责打印 解决方案 我不太理解你问的问题的意图!公共变量a,在满足什么条件下,两线程的开始分配工作,你没有说清楚我假设你a==1时生产者工作,当a==2时,生产完成,线程2(即消费线程)开始工作即,打印a那么代码如下: #include <stdio.h>#include <stdlib.h>#include <pthread.h>pthread_

opengl-文件操作,我将文件操作部分的代码放在,myDisplay函数内部就没有问题了。。这是为什么

问题描述 文件操作,我将文件操作部分的代码放在,myDisplay函数内部就没有问题了..这是为什么 F:WORKopengl test tempdashBoard.cpp(8) : error C2501: 'fp' : missing storage-class or type specifiers F:WORKopengl test tempdashBoard.cpp(8) : error C2040: 'fp' : 'int' differs in levels of indirecti

记录每个用户的操作 记录每个用户的操作

问题描述 记录每个用户的操作 记录每个用户的操作 1.JoinPoint和ProceedingJoinPoint(aspectjrt-1.6.11.jar包):采用AOP的方法,记录每个用户的操作. (1)记录用户操作主要记录用户对系统进行操作时,对后台controller中的方法进行调用进行记录. 首先对要记录的方法进行配置(针对controller中的方法调用进行调用),即: aop:config /aop:aspect/aop:config 这样,当调用com.paic.mercury.v

与众不同 windows phone (25) - Input(输入)之捕获 UIElement 之外的触控操作, Silverlight 方式捕获手势操作, XNA 方式捕获手势操作, 多点触控

原文:与众不同 windows phone (25) - Input(输入)之捕获 UIElement 之外的触控操作, Silverlight 方式捕获手势操作, XNA 方式捕获手势操作, 多点触控 [索引页][源码下载] 与众不同 windows phone (25) - Input(输入)之捕获 UIElement 之外的触控操作, Silverlight 方式捕获手势操作, XNA 方式捕获手势操作, 多点触控 作者:webabcd 介绍与众不同 windows phone 7.5 (

重新想象 Windows 8 Store Apps (24) - 文件系统: Application Data 中的文件操作, Package 中的文件操作, 可移动存储中的文件操作

原文:重新想象 Windows 8 Store Apps (24) - 文件系统: Application Data 中的文件操作, Package 中的文件操作, 可移动存储中的文件操作 [源码下载] 重新想象 Windows 8 Store Apps (24) - 文件系统: Application Data 中的文件操作, Package 中的文件操作, 可移动存储中的文件操作 作者:webabcd 介绍重新想象 Windows 8 Store Apps 之 文件系统 Applicatio

MFC对于static控件在界面上的绘图操作,绘图的擦除操作

问题描述 MFC对于static控件在界面上的绘图操作,绘图的擦除操作 在MFC中画波纹图,需要先事先擦除旧的数据,具体的函数调用是什么? 解决方案 在Static控件上画图的方法.. 声明两个变量在view或Dialog的头文件中. CWnd* pWnd; //表示控件窗口的变量 CDC* pControlDC; //表示控件窗口的设备描述表.DC 在OnInitialUpdate()函数中进行赋值(View) pWnd=GetDlgItem(IDC_STATICRCT); pControlD

jQGrid Table操作列中点击【操作】按钮弹出按钮层的实现代码_jquery

在使用JqGrid时,Table中最后一列是操作列,在操作列中每一行都一个操作按钮,该操作按钮类似下拉菜单,如下图: 在点击Table中[操作]一列时需要弹出一个Div层,该Div层中包含一堆按钮,用于对Table行进行操作,如下: 解决步骤如下: 1.首先,在colModel中的列上添加属性edittype:'select'和方法formatter:groupGrid.formatOptions,如下图: 方便复制,代码如下: {label:'操作',name: 'operations',in

C#利用WMI操作DNS服务器(可远程操作,需要相应权限)_C#教程

using System; using System.Collections.Generic; using System.Text; using System.Data; namespace Yaosansi {     class Test     {         static void Main()         {             MyDnsTEST();         }     /// <summary>     /// MyDnsTEST功能测试   /// C#利