java语言参数传递介绍

Java不只是一种编程语言,它是一个完整的平台,拥有庞大的库,将诸如图形绘制、Socket连接、数据库存取等复杂操作进行了最大程度的简化。下面是小编分享的java语言参数传递介绍,一起来看一下吧。

1.按值传递(by value)

适用范围:8种基本数据类型、String对象

特点:在内存中复制一份数据,把复制后的数据传递到方法内部

作用:在方法内部改变参数的值,外部数据不会跟着发生改变

2.按址传递(by address)

适用范围:数组、除String以外的其他所有类型的对象

特点:将对象的地址传递到方法内部

作用:在方法内部修改对象的内容,外部数据也会跟着发生改变

基础示例代码:

public class Test1{

public static void t1(int n){

n = 10;

}

public static void t2(String s){

s = "123";

}

public static void t3(int array){

array[0] = 2;

}

public static void main(String args){

int m = 5;

1(m);

System.out.println(m);

String s1 = "abc";

t2(s1);

System.out.println(s1);

int arr = {1,2,3,4};

t3(arr);

System.out.println(arr[0]);

}

}

按照上面的参数传递规则,该代码的输出结果应该是:5 abc 2.因为int类型是按值传递,所以把参数m传递到方法t1时,相当于又复制了一份m的值,在方法t1内部修改的是复制后的值,所以m的值不变,s1的输出和m类似。而arr是数组,属于按址传递,也就是把arr的地址传递到了方法t3内部,在方法t3内部修改数组中的值时,原来的内容也发生改变。|||

以上特性是Java语言中的规定,在语法上无法指定参数传递是按值传递还是按址传递,但是可以通过下面的变换实现:

1.对于按值传递的参数,如果需要在方法调用以后修改参数的值,可以利用返回值来实现;对于按值传递的参数,如果需要在方法内部修改时原来的参数不改变,则可以在方法内部重新创建该对象实现。

示例代码

public class Test2{

public static int t1(int n){

n = 10;

return n;

}

public static String t2(String s){

s = "123";

return s;

}

public static void t3(int array){

//创建新的数组并赋值

int newArray = new int[array.length];

//数据拷贝

System.arraycopy(array,0,newArray,0,array.length);

newArray[0] = 2;

}

public static void main(String args){

int m = 5;

//重新赋值

m = t1(m);

System.out.println(m);

String s1 = "abc";

//重新赋值

s1 = t2(s1);

System.out.println(s1);

int arr = {1,2,3,4};

t3(arr);

System.out.println(arr[0]);

}

}

这样,程序的输出结果就将是:10 123 1.

在实际的程序开发中,可以根据需要使用类似的.结构来进行实现。

下面再介绍一个参数传递的常见应用,利用参数传递实现返回值,这样的功能在IO类设计的read方法中大量使用。

示例代码

public class Test3{

public static void initArray(int array){

for(int i = 0;i < array.length;i++){

array[i] = i;

}

}

public static void main(String args){

int a = new int[10];

initArray(a);

for(int i = 0;i < a.length;i++){

System.out.println(a[i]);

}

}

}

在该示例代码中,在initArray方法内部修改了数组的值以后,外部数组a的值也会发生改变,间接实现了返回值的效果。当然,在该示例代码中,因为只返回一个参数,所以作用体现的不明显,如果需要返回多个参数时,使用按址传递是一种不错的主意。

【java语言参数传递介绍】相关文章:

java方法的参数传递规则_java语言参数传递介绍相关推荐

  1. java的默认值规则_Java 8:默认方法解析规则

    java的默认值规则 随着Java 8中默认方法的引入,一个类现在可以从多个位置(例如另一个类或接口)继承相同的方法. 在这种情况下,可以使用以下规则来确定选择哪种方法: 类或超类方法声明始终优先于默 ...

  2. java未知变量的类型_Java语言中类、变量及方法的声明 | 学步园

    类声明 [ public][ abstract][ final] class NameOfClass [ extends Super][ implements Interfaces] pubilc:声 ...

  3. java方法定义 与调用_Java方法的定义及调用

    Java方法的定义及调用 通过以上内容的学习,可以看出方法是一段可以完成某个特定功能的并且可以被重复利用的代码片段.接下来我们来学习一下方法应该怎么定义以及怎么调用. 定义/声明方法的语法格式如下所示 ...

  4. java 方法的入口地址_Java 方法

    语法 访问修饰符 返回值类型 方法名(参数列表){ 方法体 } 如果方法的返回类型为 void ,则方法中不能使用 return 返回值. 方法也分为实例方法和类方法,加上关键字 static 的就是 ...

  5. java方法传对象参数_Java方法中的参数太多,第2部分:参数对象

    java方法传对象参数 在上一篇文章中 ,我研究了与方法和构造函数的长参数列表相关的一些问题. 在那篇文章中,我讨论了用自定义类型替换基元和内置类型以提高可读性和类型安全性. 这种方法使方法或构造函数 ...

  6. 写出一下Java方法对应的签名_Java中的方法签名是否包含其返回类型?

    Java类/接口中的方法签名是否包括其返回类型? 例: Java是否知道这两种方法之间的区别: public class Foo { public int  myMethod(int param) { ...

  7. java的基础类库称为_JAVA基本类库介绍

    8.1 包的概念 包是由.class文件组成的一个集合,.class文件时可以用Java解释其解释执行的文件,它也是由Java源的文件,即.Java文件经编译而生成的.Java是一种面向对象的语言,它 ...

  8. java int 传引用吗_Java的参数传递是「值传递」还是「引用传递」?

    关于Java传参时是引用传递还是值传递,一直是一个讨论比较多的话题. 有人说Java中只有值传递,也有人说值传递和引用传递都是存在的,比较容易让人产生疑问. 关于值传递和引用传递其实需要分情况看待. ...

  9. java 标识符命名规则_java语言基础之标识符和命名规则详解

    免费资源网 - https://freexyz.cn/ 标识符Java 对各种变量.方法和类等要素命名时使用的字符序列称为标识符 技巧:凡是自己可以起名字的地方都叫标识符 定义合法标识符规则: 由26 ...

最新文章

  1. Java同一个类的不同实例_如何创建2个类实例注入不同类的依赖项实现(通过guice)?...
  2. 用户名字符串和密码字符串登录验证
  3. 【WPF】 打开本地的文件或者文件夹
  4. svn命令在linux下的使用
  5. HDOJ 1071 The area (纯数学题)
  6. 子页面跳转到父页面指定地方
  7. 人工智能、物联网和大数据如何拯救蜜蜂
  8. libpcre.so.1 cannot be found
  9. 即将举行的jQuery的培训活动
  10. [hgo学习]-tutorial 03
  11. 洛谷-P3975 弦论(后缀自动机板子题)
  12. sql server 参数探测(Parameter Sniffing)影响存储过程执行效率解决方案
  13. 不用PS也能设计出精美图片?这几个强大的在线设计网站了解一下~
  14. IOS 锁屏 状态下,看到歌手图片
  15. toi,atol,strtod,strtol,strtoul实现类型转换
  16. 阿里云部署Tiny Tiny RSS踩坑笔记
  17. winter 老师前端面试直播总结
  18. 做视频剪辑工作赚钱吗?
  19. 转行软件测试的最佳时机,一定要好好看看
  20. python课程设计----简单爬虫

热门文章

  1. 一种单独适配于NER的数据增强方法:DAGA
  2. 神经网络算法学习---mini-batch++++mini-batch和batch的区别
  3. 时间约束的实体解析中记录对排序研究
  4. 考研心路历程2021北京交通大学计算机学院软件工程
  5. JAVA:线程总结及多线程实现的两种方法
  6. 二叉树----数据结构:二叉树的三种遍历及习题
  7. 12月25晚-12月29日做的两个网页
  8. JavaScript基本概念(下)
  9. this的用法添加样式给tr或者div
  10. jQuery 1.7.1 代码研究 extend