`
Scliu123
  • 浏览: 41385 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

JDK_实例(Java 参数传递)

阅读更多
package book.oo;

public class PassParamter {

	public PassParamter() {
	}

	public void methodA(ComplexNumber comNum) {
		// comNum这个引用指向了一个新new出来的对象。
		comNum = new ComplexNumber(1, 2);
	}

	public void methodB(ComplexNumber comNum) {
		// comNum这个引用指向的还是同一个对象,但是,这里修改该对象的值。
		comNum.setRealPart(1);
		comNum.setRealPart(2);
	}

	public void methodC(int num) {
		// 将num的值加1
		num++;
	}

	public static void main(String[] args) {

		PassParamter test = new PassParamter();
		ComplexNumber comNum = new ComplexNumber(5, 5);
		System.out.println("调用methodA方法之前,comNum: " + comNum.toString());
		test.methodA(comNum);
		System.out.println("调用methodA方法之后,comNum: " + comNum.toString());
		System.out.println("调用methodB方法之前,comNum: " + comNum.toString());
		test.methodB(comNum);
		System.out.println("调用methodB方法之后,comNum: " + comNum.toString());
		int num = 0;
		System.out.println("调用methodC方法之前,num: " + num);
		test.methodC(num);
		System.out.println("调用methodC方法之后,num: " + num);

//		 调用methodA方法之前,comNum: 5.0 + 5.0i
//		 调用methodA方法之后,comNum: 5.0 + 5.0i
//		 调用methodB方法之前,comNum: 5.0 + 5.0i
//		 调用methodB方法之后,comNum: 2.0 + 5.0i
//		 调用methodC方法之前,num: 0
//		 调用methodC方法之后,num: 0

		/**
		 * Java的参数传递策略:
		 * 0,所谓传值的意思是:在调用方法时,将参数的值复制一份,方法里面用复件,方法外面用原件,复件改变了,不影响原件;原件改变了,不影响复件。
		 * 1,对于基本数据类型,比如int,long等类型,采用传值的策略。将参数的值复制一份后传给方法,方法可以改变参数值的复件,但不会改变参数值的原件。
		 * 2,对于对象类型,也采用的传值策略,不过,是将参数的引用复制(2个引用指向同一个对象)一份传给方法,方法可以改变参数引用的复件,但不会改变参数引用的原件。
		 * 
		 * 解释三个输出:
		 * 1,调用methodA方法时,首先将comNum对象的引用复制一份,将引用的复件传递给methodA方法,main方法保持引用的原件,此时,引用原件和引用复件都指向comNum对象。
		 * 执行comNum = new ComplexNumber(1,2);语句后,将引用复件指向了另外一个新的对象,此时,引用复件和引用原件指向的是不同的对象。回到main方法时,操作的仍然是引用原件指向的comNum对象。
		 * 2,调用methodB方法时,首先将comNum对象的引用复制一份,将引用的复件传递给methodB方法,main方法保持引用的原件,此时,有引用原件和引用复件都指向comNum对象。
		 * 执行comNum.setRealPart(1);comNum.setRealPart(2);语句后,修改了引用复件所指对象的内容,而此时,引用复件和引用原件指向的是同一个对象,因此,引用原件指向的对象的内容也改变了。回到main方法时,comNum对象也改变了。
		 * 3,调用methodC方法时,首先将num的值复制一份,将值的复件传递给methodC方法,main方法保持值的原件。 执行num
		 * ++;语句后,复件的值会加1。回到main方法时,操作的仍然是原件,值保持不变。
		 */

	}
}

 

分享到:
评论

相关推荐

    jdk1.8.0_291.zip

    Lambda可以作为参数传递,返回值也可以是Lambda,增强了函数式编程的能力。 2. **方法引用和构造器引用**:与Lambda表达式配合使用,方法引用允许直接引用类的静态方法或实例方法,而构造器引用则可以直接创建对象...

    jdk_1.8.1310.11_x64安装包

    它们允许将函数作为参数传递给方法,或者将代码视为数据进行操作。 2. **方法引用来替代匿名内部类**:在Java 8中,你可以直接引用一个静态方法或实例方法,而无需创建匿名内部类。 3. **默认方法**:接口中可以...

    jdk1.8.0_172.zip

    10. **Type Inference for Generic Instance Creation**:Java 8允许在创建泛型实例时省略类型参数,编译器会自动推断出类型。 这些是Java 8,尤其是JDK 1.8.0_172版本中的关键知识点。使用这个版本的JDK,开发者...

    jdk1.8.0_291.rar

    1. **Lambda表达式**:Java 8引入了函数式编程的关键元素——lambda表达式,它允许将匿名函数作为方法参数传递,使得代码更简洁,特别是在处理集合操作时。 2. **方法引用来替代匿名类**:在Java 8中,你可以直接...

    jdk_8.0.1310.11_64.zip

    10. **类型注解**:JDK 1.8扩展了注解的使用范围,现在可以在类型参数、类型变量、泛型通配符、方法和构造器返回类型、数组维度以及类的实例初始化器上使用注解。 要安装JDK 1.8,用户可以找到压缩包中的"jdk_8.0....

    JAVA_API5.0.rar_api jdk5.0_java api5_java api5.0_jdk 5.0 API_jdk

    Java API 5.0是Java开发工具包(JDK)5.0版本的重要组成部分,它提供了丰富的类库和接口,供开发者使用。这个版本引入了许多关键的改进和新特性,对于理解和开发Java应用程序至关重要。以下将详细介绍Java API 5.0的...

    jdk1.8.0_301 64位 免安装

    Lambda表达式可以被视为匿名函数,它可以作为方法参数传递,也可以存储在变量中。 2. **方法引用和构造器引用**:与Lambda表达式紧密相关,这些新特性允许开发者直接引用已有方法或构造器,而无需编写新的匿名类...

    JDK1.8.0_20

    JDK,全称为Java Development Kit,是Oracle公司提供的用于开发和运行Java应用程序的软件包。在Java编程世界中,JDK扮演着至关重要的角色,它是开发者的必备工具,为编写、编译、调试以及运行Java程序提供了完整的...

    Multi person chat_jdk1.8_java编程_

    然后将Runnable对象作为参数传递给Thread的构造器,创建Thread对象并启动。这种方式更为灵活,因为类可以同时实现多个接口。 3. **使用ExecutorService和Callable接口**:JDK 1.5引入的Executor框架允许更高级别的...

    JDK API 1.8.0_jdkapi1.8.0_jdk提取_jdk8u241_jdk1.8.0241下载_jdk8u241下

    1. **Lambda表达式**:引入了函数式编程的概念,允许将匿名函数作为参数传递,简化了回调和事件处理的代码。 2. **Stream API**:提供了一种新的集合操作方式,支持序列化处理,可用于过滤、映射、聚合等操作,使得...

    JDK_8_API帮助文件(英文原版)

    Lambda可以作为参数传递,也可以作为返回值,大大简化了处理集合的操作,如Stream API的使用。 2. **Stream API**:Stream API提供了一种新的数据处理方式,支持序列化操作,如过滤、映射、排序等。它允许开发者以...

    Java数组传递及可变参数操作实例详解

    Java 可变参数是指在方法中可以传递同类型的可变参数,JDK 1.5 开始支持这种特性。可变参数可以使得方法更加灵活、方便使用。可变参数的使用规则包括:可以不写参数,即传入空参;可以直接在里边写入参数,参数间用...

    JDK_1.8_api chm中文版 查询工具下载

    1. **Lambda表达式**:Java 8引入了lambda表达式,这是一种简洁的函数式编程语法,允许将匿名函数作为参数传递给方法,简化了多线程编程和处理集合数据的操作。 2. **函数式接口**:为了支持lambda表达式,Java 8...

    jdk1.8.0_65

    Lambda允许将代码块作为参数传递给方法,这在实现函数式编程风格时非常有用,特别是在处理集合操作时。 2. **函数式接口**:为了支持Lambda,Java 8引入了函数式接口的概念。这些接口只能包含一个抽象方法,比如`...

    jdk1.8.0_191压缩版

    1. **Lambda表达式**:引入了函数式编程概念,允许将代码作为参数传递,简化多线程和集合操作。 2. **Stream API**:提供了处理集合的新方式,可以进行高效的并行计算,支持过滤、映射、归约等操作。 3. **默认...

    jdk1.5.0_11

    7. **可变参数(Varargs)**:允许方法接受任意数量的相同类型的参数,以数组的形式传递。 8. **静态导入(Static Import)**:可以静态地导入一个类的所有静态成员,避免重复的类名前缀。 9. **集合框架的改进...

    jdk1.8版本免安装

    Lambda表达式允许将匿名函数作为方法参数传递,或者直接定义为变量,使得代码更加紧凑和易读。 其次,Java 8引入了Stream API,这是处理集合数据的新方式。Stream API提供了大量操作符,如filter、map和reduce,...

    jdk1.8.0_60_64.rar

    Lambda表达式允许你将匿名函数作为参数传递,或者用作返回值。例如,你可以用lambda来定义一个简单的函数,如 `(int a, int b) -> a + b`,表示两个整数相加。 2. **方法引用**:方法引用是与lambda表达式相关的另...

    jdk-8u221安装包.zip

    Java Development Kit(JDK)是Oracle公司提供的用于开发和运行Java应用程序的软件工具包。这个"jdk-8u221安装包.zip"文件包含了JDK 8的更新221版本,它是一个免费的版本,适用于那些需要进行Java编程或者需要在系统...

    jdk-1_5_0-windows

    可变参数允许方法接收任意数量的相同类型参数,通过数组的形式传递。这对于函数式编程风格的实现提供了便利。 9. **类型安全的异常(Checked Exception)** Java 5.0改进了异常处理机制,引入了类型安全的异常...

Global site tag (gtag.js) - Google Analytics