Java的方法的参数传递,值传递和引用传递还有String字符串传递

方法的参数传递

1、值传递

a) 方法调用时,实际参数把它的值传递给对应的形式参数,方法执行中形式参数值的改变不影响实际参数的值。传到方法里的参数类型是基本数据类型的都叫值传递

2、引用传递

a) 也称为传地址。方法调用时,实际参数的地址而不是参数的值被传递给方法中相对应的形式参数,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,方法执行中形式参数值的改变将会影响实际参数的值。传到方法里的参数类型是引用数据类型的都叫引用传递

值传递例子:

1 public class test { 2 3 /** 4 * @param args 5 */ 6 public static void main(String[] args) { 7 // TODO Auto-generated method stub 8 int a=5; 9 //未调用方法前输出10 System.out.println("第一次输出:"+a);11 swap(a);12 //调用完方法后输出13 System.out.println("第三次输出:"+a);14 }15 public static void swap(int a)16 {17 a=10;18 //改变参数a的值后输出19 System.out.println("第二次输出:"+a);20 }21 }

上面的例子输出结果为: 第一次输出:5

第二次输出:10

第三次输出:5

看,虽然在swap方法里改变了a的值,但是在main方法里的变量a的值仍然没有改变这就验证了上面的话,基本数据类型传递的话在方法里改变形参的值但是改变不了实际参数的值。。。

在这里我还要说明一个事,那就是String 字符串类型 不属于基本数据类型,但它也不是引用数据类型,它是特殊引用数据类型。例子如下:

1 public class test { 2 3 /** 4 * @param args 5 */ 6 public static void main(String[] args) { 7 // TODO Auto-generated method stub 8 String a="您好!"; 9 //未调用方法前输出10 System.out.println("第一次输出:"+a);11 swap(a);12 //调用完方法后输出13 System.out.println("第三次输出:"+a);14 }15 public static void swap(String b)16 {17 b="Hello,Word";18 //改变参数a的值后输出19 System.out.println("第二次输出:"+b);20 }21 }

结果为:第一次输出:您好!

第二次输出:Hello,Word

第三次输出:您好!

为什么改变不了?因为传字符串的话实际上就是值传递,所以改变不了..........

引用传递例子:

1 public class test { 2 3 /** 4 * @param args 5 */ 6 public static void main(String[] args) { 7 // TODO Auto-generated method stub 8 int[] a={1,2,3}; 9 System.out.print("未调用方法前输出的结果:");10 for (int i = 0; i

方法的参数传递

1、值传递

a) 方法调用时,实际参数把它的值传递给对应的形式参数,方法执行中形式参数值的改变不影响实际参数的值。传到方法里的参数类型是基本数据类型的都叫值传递

2、引用传递

a) 也称为传地址。方法调用时,实际参数的地址而不是参数的值被传递给方法中相对应的形式参数,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,方法执行中形式参数值的改变将会影响实际参数的值。传到方法里的参数类型是引用数据类型的都叫引用传递

值传递例子:

1 public class test { 2 3 /** 4 * @param args 5 */ 6 public static void main(String[] args) { 7 // TODO Auto-generated method stub 8 int a=5; 9 //未调用方法前输出10 System.out.println("第一次输出:"+a);11 swap(a);12 //调用完方法后输出13 System.out.println("第三次输出:"+a);14 }15 public static void swap(int a)16 {17 a=10;18 //改变参数a的值后输出19 System.out.println("第二次输出:"+a);20 }21 }

上面的例子输出结果为: 第一次输出:5

第二次输出:10

第三次输出:5

看,虽然在swap方法里改变了a的值,但是在main方法里的变量a的值仍然没有改变这就验证了上面的话,基本数据类型传递的话在方法里改变形参的值但是改变不了实际参数的值。。。

在这里我还要说明一个事,那就是String 字符串类型 不属于基本数据类型,但它也不是引用数据类型,它是特殊引用数据类型。例子如下:

1 public class test { 2 3 /** 4 * @param args 5 */ 6 public static void main(String[] args) { 7 // TODO Auto-generated method stub 8 String a="您好!"; 9 //未调用方法前输出10 System.out.println("第一次输出:"+a);11 swap(a);12 //调用完方法后输出13 System.out.println("第三次输出:"+a);14 }15 public static void swap(String b)16 {17 b="Hello,Word";18 //改变参数a的值后输出19 System.out.println("第二次输出:"+b);20 }21 }

结果为:第一次输出:您好!

第二次输出:Hello,Word

第三次输出:您好!

为什么改变不了?因为传字符串的话实际上就是值传递,所以改变不了..........

引用传递例子:

1 public class test { 2 3 /** 4 * @param args 5 */ 6 public static void main(String[] args) { 7 // TODO Auto-generated method stub 8 int[] a={1,2,3}; 9 System.out.print("未调用方法前输出的结果:");10 for (int i = 0; i


相关文章

  • 3面向对象的基本思想
  • 1.面向对象是相对于面向过程而言的,面向过程是一种谓语与宾语的关系,面向对象的是主语与谓语的关系. 面向对象三大特征: 封装:对外部不可见,可以保护程序中的某些内容: 继承:扩展功能 多态:方法的重载,对象的多态性 类与对象的关系(最重要) ...查看


  • 借助HotSpot SA来一窥PermGen上的对象
  • (Disclaimer:如果需要转载请先与我联系: 作者:RednaxelaFX -> rednaxelafx.iteye.com) 接着与,今天也来介绍一个的(以下简称SA)的玩法例子. 昨天用SA把x86机器码反汇编到汇编代码,或 ...查看


  • 企业面试题集绵
  • (一) Java中有没有goto关键字? (二) 基本数据类型有哪些?String是不是基本数据类型? 基本数据类型:byte, char, short, int, long, float, double, boolean String不属 ...查看


  • infosys面试总结
  • 1. 作用域public,private,protected,以及不写时的区别 区别如下: 作用域 当前类 同一package 子孙类 其他package public √ √ √ √ protected √ √ √ × friendly ...查看


  • 关于String类型的一点讲解
  • 友情提示:希望在阅读之前,你已经对String对象有了基础的了解.并且已经熟知"类型"."引用"."对象"."实例化"."堆栈"和关于Obj ...查看


  • Android实训报告
  • Android 学院:****** 班级:****** 学号:****** 姓名:****** 实训报告 目录 一.实训背景及目的要求 .................................................... ...查看


  • 有关JAVA异常和错误(ERROR)的处理
  • 最近遇到有关ERROR的处理问题,下面这篇文章 转至:http://www.cnblogs.com/deepnighttwo/archive/2006/12/11/1964305.html LinkageError是一个比较棘手的异常,准确 ...查看


  • 罗滔学生网上选课系统毕业设计
  • 别: 级: 号: 实训报告 学生网上选课系统 经济与信息管理系 13级软件班 罗 滔 殷艳菊老师 课题名称:系班学学生姓名:指导老师:完成日期: 目录 一.设计任务与目的-------------------3 二.需求分析 ------- ...查看


  • 武汉大学java期末考试试题和答案
  • --------- 号-学-----线------姓--------封---班------------专-密----------编--<Java程序设计基础>期末考试试卷(武汉大学试题) 2. 在程序中定义Student类,St ...查看


热门内容