`
洛昱棠
  • 浏览: 1234 次
  • 性别: Icon_minigender_2
最近访客 更多访客>>
社区版块
存档分类
最新评论

参数分析

 
阅读更多
哈哈哈~时隔多(ban)年(xue qi), 终于又来写技术博客了 \(^o^)/~
今天学习的是参数分析,感觉解决了自己多年的困惑呢(✿◡‿◡)
1.数据类型
数据类型有两种:基本数据类型和引用数据类型
基本数据类型】8种:boolean , byte , short , long , int , float , double , char ;
引用数据类型】 4种:数组,类,接口,抽象类。

2.参数传递
(1)示例:传递int数据
◤代码◢

 

	int a = 10;
	int b = 10; 

 

 

	int a = 10;
	int b = a;
	a = 0;
	System.out.println("a--->"+a);
	System.out.println("b--->"+b);

 

◤输出结果◢
a--->0
b--->10

◤结果分析◢
    基本数据在内存中的存储方式:
    a和10都是存储在栈内存中的,且栈中的数据可以共享。这里a和b都是一个指向int类型的引用。
    编译器先处理 int a =10,首先他会在栈中创建一个变量为a的引用,然后去查找有没有字面值为10的地址
,没找到就开辟一个存放10这个值的地址,然后将a指向10的地址;在创建完b这个引用变量后,栈中已经有了
10这个字面值,所以b直接指向10的地址,这样就出现了a、b同时指向10的情况。
    而当处理a=0时,编译器会首先搜索栈内是否有值为0的地址,有则直接将a指向该地址,没有则开辟一个地
址来存放4这个值,所以并不会影响到b。

◤代码◢
public class Student {
	private String name;
	private int age;
	
	public Student(String name, int age){
		this.name = name;
		this.age = age;
	}
        public void setAge(int age){
		this.age = age;
		age++;//参数加一
		System.out.println("1--->"+age);//输出
	}
}
public class Main {
	public static void main(String[] args) {
		Student stu = new Student("张三",0);
		int age = 19;
		stu.setAge(age);
		System.out.println("2--->"+age);//输出
	}
}
◤输出结果◢ 
1--->20
2--->19

◤结果分析◢
   这里就是把age这个变量的19这个值传递给了setAge()方法中的age。

    (2)示例:传递对象
    ◤代码◢

 

public void change(Student stu){
		stu.setName("王五");
		System.out.println("1--->"+stu.getName());
	}
public class Main {
	public static void main(String[] args) {
		Student stu1 = new Student("张三");
		Student stu2 = new Student("李四");
		stu1.change(stu2);
		System.out.println("2--->"+stu2.getName());
	}
} 
◤输出结果◢
1--->王五
2--->王五

◤结果分析◢

  创建一个对象时,对象名存储在栈内存中,而new就开辟了一块堆内存,用来存放对象的内容,再将该地址

存储在栈内存中,所以相应的对象名就根据地址的指向找到了对应的内容。而传递对象的时候就是把这个对象

的地址传递给了方法中新的对象,所以两个对象指向同一块堆内存,那么在方法中改变内容的时候,原对象的

内容也一起改变了。

    (3)示例:传递字符串
 ◤代码◢
public void setName(String name){
		name = "李四";
		System.out.println("1--->"+name);
	}
public class Main {
	public static void main(String[] args) {
		Student stu = new Student();
		String name = "张三";
		stu.setName(name);
		System.out.println("2--->"+name);
	}
}
◤输出结果◢
1--->李四
2--->张三

◤结果分析◢
String传递时传递了一个地址给形参没错,但是String是不可修改的,所以当方法中的String修改时,就就开辟
了新的堆内存,而方法中的形参也就指向了新的地址,则原地址中的内容不会有任何修改。
※ 总结 ※
【值传递】 
    值传递适用于:基本数据类型及String;
    传递的是数据
    与实例进行类比,就像复印一份文件,把复印件上的信息修改并不会影响到原件上的内容,同理当基本数
据和字符串作为参数进行传递时,是传递值也就是数据的复制,无论这个复制值怎么修改也不会影响到原值。
【引用传递】
    引用传递适用于:引用数据类型,String除外;
    传递的是地址
    与实例进行类比,就像需要修改某个数据直接找到原文件,在原文件上修改,所以再看原文件时数据也已
经被修改了。
分享到:
评论

相关推荐

    华为LTE分析工具(参数解析工具)0616试用版

    华为LTE分析工具(参数解析工具)0616试用版

    电子电路CAD上机实验报告----实验四 电路的参数分析

    **电子电路CAD上机实验报告——电路的参数分析** 在电子工程领域,对电路进行参数分析是理解电路行为、优化设计的关键步骤。本实验报告详细记录了中南大学电信0903班学生于2011年10月28日进行的“电路的参数分析”...

    getopt多参数解析函数具体分析命令行参数解析

    `getopt()`函数是C语言中用于解析命令行参数的标准函数,主要应用于Unix/Linux系统,也可以在其他支持C语言的环境中使用。它简化了对带有选项和参数的命令行输入的处理,使得程序能够优雅地解析和理解用户提供的...

    DZB-718L 型便携式多参数分析仪系列使用说明书

    多参数分析仪系列使用说明书 本使用说明书旨在为用户提供DZB-718L型便携式多参数分析仪系列的使用指导,包括仪器介绍、安全提示、专业术语、仪器结构及安装、仪器操作等方面的详细信息。 仪器介绍 DZB-718L型...

    springmvc自定义属性编辑器和参数解析器

    在Spring MVC框架中,属性编辑器(PropertyEditor)和参数解析器(HandlerMethodArgumentResolver)是两个关键组件,用于处理数据转换和模型绑定的过程。它们是实现灵活性和扩展性的重要手段,尤其在处理用户输入...

    Linux启动bootargs参数分析

    Linux 启动 bootargs 参数分析 在 Linux 启动过程中,bootargs 参数扮演着重要的角色,该参数用于传递启动选项和配置信息给内核。Linux 内核在启动时对 bootargs 参数的解析可以分为两大块:setup_arch 函数和 ...

    Java参数分析

    在Java编程语言中,参数分析是一项关键的技能,它涉及到函数调用时的参数传递、类型检查、值的计算以及方法重载等多个方面。本文将深入探讨Java中的参数分析,结合给定的资源《参数分析总结.doc》,我们将涵盖以下几...

    ansoft参数扫描例子、参数化建模例子、参数化例子、参数设计例子、参数分析例子.pdf

    ansoft参数扫描例子、参数化建模例子、参数化例子、参数设计例子、参数分析例子.pdf

    TD-SCDMA 无线参数解析

    这份“TD-SCDMA无线参数解析”培训资料,由中兴通讯提供,旨在深入理解TD-SCDMA网络中的关键无线参数,提升网络优化与维护能力。 一、TD-SCDMA系统概述 TD-SCDMA采用了时分双工(TDD)模式,即上行链路和下行链路在...

    U-Boot启动参数解析

    U-Boot 启动参数解析 U-Boot 是一种开源的引导程序,广泛应用于嵌入式系统中。U-Boot 启动参数是指 U-Boot 在启动过程中的配置参数,这些参数决定了 U-Boot 的启动顺序和启动方式。在本文中,我们将详细解析 U-Boot...

    华为LTE分析工具(参数解析工具)

    华为LTE分析工具是一款专为移动通信工程师设计的强大工具,主要用于解析和分析LTE网络中的各种参数,帮助优化网络性能,提高服务质量。此工具以其对华为LTE设备的深度支持,提供了详尽的数据解析和可视化功能,使得...

    LTE参数解析工具-20150929

    2. **数据分析**:对收集到的参数进行统计分析,帮助找出性能瓶颈或异常。 3. **故障排查**:通过比较正常和故障状态的参数差异,辅助定位问题。 4. **参数优化**:提供建议或自动调整参数设置,改善网络性能。 5. *...

    qimai接口analysis参数解析

    《Qimai接口Analysis参数解析详解》\n\n在当今的互联网时代,API(Application Programming Interface)已经成为开发者之间沟通的桥梁,使得不同的软件系统能够高效地进行数据交换和功能调用。Qimai接口作为其中的一...

    论文研究 - 多发性骨髓瘤患者生存时间的参数和非参数分析

    多发性骨髓瘤(MM)是一种仍然无法治愈的癌症。... 参数生存分析更加健壮和高效,因为它基于定义明确的参数概率分布,因此优于非参数Kaplan-Meier。 这项研究为进一步增强多发性骨髓瘤癌症的治疗策略提供了治疗意义。

    bootargs参数解析2020-08-26.pdf

    bootargs参数解析 Bootargs参数是U-Boot环境变量中最重要的参数之一,它控制着Linux内核的启动过程和文件系统的加载。下面是对bootargs参数的详细解析。 Bootargs参数的种类非常多,主要可以分为三类:root、nfs...

    cpp-简单的可扩展的只包括头文件的C17参数解析器

    【cpp-简单的可扩展的只包括头文件的C17参数解析器】是一个轻量级的C++库,专门设计用于解析命令行参数。...阅读和分析这些源码将有助于我们更好地理解和应用这个参数解析器,同时也能加深对C++17新特性的理解。

    关于PSPICE仿真软件中如何使用PARAMETERS参数分析教程参考.pdf

    使用PARAMETERS参数分析在PSPICE仿真软件中的应用 PSPICE仿真软件是一种广泛应用于电子电路设计和仿真的软件,通过使用PARAMETERS参数分析,可以对电路中的参数进行灵活的调整和分析,从而快速观察到参数变化对输出...

    LTE参数解析工具(20170112).exe

    解析厂家DUMP文件, 可以解析华为 爱立信 诺基亚 中兴厂家数据为EXCEL表格,数据解析时间较长,请耐心等待

    Go 中基于结构体的参数解析.zip

    去参数Go 的基于结构体的参数解析 通过定义结构来声明程序的命令行参数。var args struct { Foo string Bar bool}arg.MustParse(&args)fmt.Println(args.Foo, args.Bar)$ ./example --foo=hello --barhello true安装...

    USB21.0-CABLE-技术参数解析

    USB 2.0-CABLE-技术参数解析 USB是Universal Serial Bus的简称,是一种可以同时处理计算机与具有USB接口的多种外设之间通信的电缆总线。这些连接到计算机上的外设共同分享USB的带宽。USB的分时处理机制真正在硬件的...

Global site tag (gtag.js) - Google Analytics