`
jonllen
  • 浏览: 64101 次
  • 性别: 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就可以了。

相关推荐

    14_Java面向对象_第6天(Eclipse高级、类与接口作为参数返回值)_讲义

    - **类作为参数**:传递类的对象作为方法参数,允许在方法内部操作这些对象,实现灵活的功能设计。 - **接口作为参数**:使用接口作为参数,可以接收任何实现了该接口的类的对象,增强了代码的扩展性和灵活性。 -...

    java基础面试题目详解

    Java是一种面向对象的编程语言,它的最大特点在于其“一次编写,到处运行”的特性,能够跨越不同的操作系统平台。Java的基础由三个主要...在Java中,所有对象参数的传递实际上是引用传递,而基本类型参数则是值传递。

    java 核心技术 高级部分第10版 java 8 介绍

    Lambda表达式可以作为参数传递,也可以作为返回值,这极大地简化了对集合的操作,尤其是与Stream API结合使用时。Stream API提供了声明性处理数据的方式,使得对数组和集合的过滤、映射、归约等操作更加高效和直观。...

    java-数据类型转换、运算符、方法入门_java_

    - 参数传递:方法可以接收参数,传递值或引用。 - 返回值:方法可以返回一个值,或者无返回值(void)。 - 方法重载:同一个类中可以有多个同名方法,只要参数列表不同即可。 - 方法递归:方法调用自身,用于...

    Java基础知识面试题(2020最新版).pdf

    值传递是指参数的副本被传递,而引用传递是原始对象的引用被传递。Java只支持值传递,但对象作为参数实际上是传递引用的副本。Java包系统帮助组织类和接口,如java.lang、java.util和java.io等,import导入包中的类...

    CoreJava视频课程(百度云链接)

    Java中的方法支持参数传递,可以传递基本类型数据也可以传递对象引用。方法还可以有返回值,通过return语句指定。 #### 控制结构 Java中的控制结构包括循环结构(for、while)和分支结构(if-else、switch-case)。...

    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 ...

    James Gosling,Bill Joy,Guy Steele 等 著;陈昊鹏 译 Java语言规范 (基于 Java SE 8).pdf

    Lambda表达式可以作为参数传递,也可以作为返回值,使得代码更加简洁和可读。 2. **方法引用和构造器引用**:这些是与Lambda表达式相关的特性,它们允许直接引用类的方法或构造器,进一步减少了代码量。 3. **接口...

    SCJP学习笔记.doc文档

    - 在方法内部,可以通过引用改变对象的属性,但不能改变引用本身的指向。例如,在`ObParm`类中,`another`方法内的`v`引用被改变,但当方法结束,`v`又恢复为原来的对象引用。 3. **方法重载(Overloading)**: - ...

    JAVA基础练习题.docx

    Java编程基础是所有Java开发者的基石,其中包括方法的定义、重载以及返回值类型等重要概念。在这份JAVA基础练习题中,我们可以看到几个关键的知识点: 1. **方法的定义**:方法`fun`的功能是求两参数之积。在Java中...

    javajava基础基础

    3. Java 中参数传递是按值传递,原始类型(如 int、double 等)传递的是实际值,而对象类型(如 Point)传递的是对象的引用,意味着对参数对象的修改会影响到原始对象。 这些知识点涵盖了 Java 的基础知识,包括...

    Java 基础(数据类型)

    - Java中,方法参数的传递总是按值传递,这意味着当一个变量传递给方法时,方法得到的是该变量值的一个副本,对方法内部变量的修改不会影响到方法外部的原始变量。例如,`count`方法中`countNumber`参数的改变不会...

    java8的64位安装包jdk-8u181-windows-x64

    Lambda表达式可以被理解为匿名函数,它们可以作为参数传递,或者作为返回值。这使得处理集合数据和事件驱动编程变得更加方便。 2. **方法引用和构造器引用**:这些是与lambda表达式紧密相关的功能,允许直接引用已...

    JAVA函数使用手册

    1. **函数定义与调用**:在Java中,函数通过`public void functionName参数列表(){...}`来定义,其中`public`是访问修饰符,`void`表示函数没有返回值,`functionName`是函数名,`参数列表`是传递给函数的变量。...

    java入门编程代码 java教科书课后习题代码

    理解方法的定义、参数传递和返回值是提升代码复用性和模块化设计能力的重要步骤。 7. **异常处理**: Java强制使用try-catch-finally语句来处理可能出现的异常。虽然在提供的文件名中没有明确提到,但初学者应学会...

    java面试试题,精挑细选

    将 double x = 2,传递进去,将选择参数为 double 的方法。 19. ClassLoader 如何加载 class? ClassLoader 负责加载类,ClassLoader 首先会检查类是否已经加载,如果没有加载,则会从文件系统中加载类,并将其...

    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面向对象考题和答案.pdf

    由于`Cat`类继承自`Animal`类,并且`Animal`类的`noise`方法被重写了,所以会调用`Cat`类中的`noise`方法,因此输出为"meow"。 根据文件内容,尽管存在一些OCR扫描错误,我们还是可以解析出这些关键的Java面向对象...

    java8 api文档

    Lambda表达式可以作为参数传递,也可以用作返回值。 - **函数式接口**:为了支持lambda,Java 8引入了函数式接口,这些接口只有一个抽象方法。例如,`Runnable`、`Callable`和新添加的`Function`、`Predicate`、`...

    代正飞投稿1

    5. **参数组合**:在Python中,可以同时使用位置参数、关键字参数、默认参数值和可变长度参数,但需要注意的是,它们的顺序是固定的:位置参数、默认参数、星号参数、双星号参数。 6. **命名关键字参数**:这是一种...

Global site tag (gtag.js) - Google Analytics