`
jonllen
  • 浏览: 63427 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Java方法强制传递引用参数(做为返回值),改变被传递参数值。

    博客分类:
  • Java
阅读更多

    今天在Jsp页面内调用方法的时候碰到了一个问题,是一个服务器端分页的方法,本身是返回List集合的,但是还需要返回总记录数和总页面,没办法返回,想到Java内方法的传值传引用类型,在网上找了Java传递参数分为2种:

  • 值类型,Java里面也叫简单类型,这种参数类型的传递的是它的副本拷贝;
  • 引用类型,传递的是对象引用地址,如果在方法内改变该参数对象属性即是对原引用对象的改变;如果不想这样传递可传递 对象.clone() 即传递的是该对象的副本拷贝;

    那么,如果我想传递简单参数类型,但是我又想在方法内能改变原参数的值那如果传递呢?比如说一个方法是返回List集合但是我还需要传递一个总记录条数和总页面的参数,在该方法内进行赋值。Java内传递值还是引用类型还有一条规定,所有数组参数都是引用传递,即传递的是原地址,一旦改变数组参数值原引用数组值也回相应的改变,这样便能在一个有返回值的方法里还返回总记录条数和页数。

    举个例子:

public List<Product> GetProductList(int categoryid,int pageindex,int pagesize,int[] args)
	{
		List<Product> list = new ArrayList<Product>();
		args[0] = 100;
                                args[1] = 101;
		return list;
	}

//调用
int cid = 0,pageindex =1,pagesize = 10 ,recordcount = 0,pagecount = 0;
int[] args = new int[]{recordcount,pagecount};
plist = GetProductList(cid,pageindex,pagesize,args);
recordcount = args[0];
pagecount = args[1];
System.out.println("总记录数:"+recordcount);
System.out.println("总页数:"+pagecount);

 这里结果将会输出 总记录数:100 总页数:101

分享到:
评论
3 楼 lord_is_layuping 2011-08-17  
elyson_chen 写道
楼上说的不正确,Integer,Long同样是值传递的。
Integer,Long同样是值传递,对。
2 楼 elyson_chen 2009-11-25  
楼上说的不正确,Integer,Long同样是值传递的。
1 楼 hatedance 2009-04-19  
primary 类型比如int,long不是对象,不按引用的。
所以,你换成Integer,Long就可以了。

相关推荐

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    7.6.1 超车方法:使用类实例做参数 172 7.6.2 调用这个方法 173 7.6.3 发生了什么 174 7.7 加餐:局部变量和实例变量 175 7.7.1 什么是局部变量(Local Variable) 175 7.7.2 什么是实例变量(Instance ...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    7.6.1 超车方法:使用类实例做参数 172 7.6.2 调用这个方法 173 7.6.3 发生了什么 174 7.7 加餐:局部变量和实例变量 175 7.7.1 什么是局部变量(Local Variable) 175 7.7.2 什么是实例变量(Instance ...

    疯狂JAVA讲义

    学生提问:为什么我创建Java对象时从未感觉到java.lang.Object的构造器被调用过? 150 5.7 多态 151 5.7.1 多态性 151 5.7.2 引用变量的强制类型转换 152 5.7.3 instanceof运算符 154 5.8 继承与组合 154 ...

    java 面试题 总结

    如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。如果在一个类中定义了多个同名的...

    AIC的Java课程1-6章

     掌握定义方法(声明方法)和调用方法,通过参数和返回值传递数据。  理解实际参数与形式参数以及参数类型的提升(隐式转型)。  掌握方法重载(overload)的基本要求。  区别和掌握按值传递与按引用...

    Scala详细总结(精辟版++).docx

    函数式编程有两个指导思想:①函数是头等值,也就是说函数也是值,并且和其他类型(如整数、字符串等)处于同一地位,函数可以被当作参数传递,也可以被当作返回值返回,还可以在函数中定义函数等等;②程序的操作...

    【04-面向对象(上)】

    •如果在定义方法时,在最后一个参数的类型后增加三点…,则表明该形参接受多个参数值,多个参数值被当成数组传  入. •长度可变的形参只能位于最后一个参数,并一个方法里只能有一个可变长度的参数. 递归 •...

    超级有影响力霸气的Java面试题大全文档

    如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。如果在一个类中定义了多个同名的...

    xheditor-1.1.14

    参数:0(不做任何清理),1(简单清理Word),2(深入清理Word),3(强制转文本),默认为1简单清理Word 说明:若网站应用需要保留更多的Word样式效果,请设置此值为1,不过产生的HTML代码体积会大大增大 备注:1.1.4版本中新...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    本书是第II卷,以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心,介绍了应用Java进行桌面程序开发各个方面的知识和技巧,主要包括Java语法与面向对象技术、Java高级应用、窗体与控件应用、文件操作...

    JSTL详细标签库介绍

    因为一些程序员使用不支持异常处理语言编程时,往往拖延或忘记错误处理程序的编写,故,Java强制程序员从项目一开始就着手进行异常处理,程序员必须投入很大精力把异常处理的策略融合到软件产品中&lt;BR&gt;11、 ...

    正则表达式

    \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个单词的边界。 -或- 对正则表达式功能字符的还原,如"*"匹配它前面元字符0次或多次,/a*/将匹配a,...

    JavaScript笔记

    等号右边其实就是1个匿名方法对象 |--*必须在传递之前声明方法对象* C:var compare=new Function('a','b','return a-b') ---| --其实js底层就是new Function;构造函数中的参数都是字符串 结论:所有的方法都是...

    易语言程序免安装版下载

    修改扩展界面支持库一,为“超级列表框”增加“检查框状态被改变”事件。 15. 修改扩展界面支持库一,为“树形框”增加“是否已加粗()”方法。 16. 修改扩展界面支持库一,为“树形框”增加多态检查框功能,相应...

    VM.Labs:计算数学(ITMO,PI&KT,第二年)

    “ SLAE的线性代数方程组的解” 简单迭代法在程序中,数值方法必须实现为单独的子例程或类,初始数据作为参数传递给子例程或类,输出数据也作为参数传递给子方法或类(或返回值)。 矩阵的尺寸为n &lt;= 20(由文件...

    新版Android开发教程.rar

    � A ndroid 在设计初期就考虑了与现其有业务的融合,改变以往从计算机为主改成从手机使用为导向。新 生应用如:G oogle 地图及其衍生应用、 GMail 、 GTalk 等。 � GPS 卫星导航功能,手机照相, MP3 ,蓝芽等均...

Global site tag (gtag.js) - Google Analytics