关于Java中形参与实参的理解
今天阅读了一个写的非常棒的博文,通过此博文再次复习了Java中参数传递的知识(即值传递与引用传递的区别)。参考网站http://www.cnblogs.com/binyue/p/3862276.html。下面我将通过次博文记录自己的理解,还望能够帮助再学Java或者复习Java的朋友们。
一、基本类型与引用类型在内存中的保存内容
Java中的变量分为基本类型和引用类型两种。基本类型的变量保存数值本身,而引用类型的变量保存的是引用值,即指向内存空间的地址。
基本类型包括:byte,char,int short,long,float,double,boolean;
引用类型包括:类类型,接口类型和数组。
二、基本类型与引用类型的区别
*基本类型在声明其变量时就为它分配了空间:
int value;
value = 10;//正确,因为声明a时就分配了空间
Date date;
//执行实例化,开辟数据空间存放Date对象,然后把空间的首地址传给today变量
//date=new Date();
//如果注释掉上一步操作
//The local variable date may not have been initialized
//也就是说对象的数据空间没有分配
date.getDate();
*初始化过程如下:
Date a,b; //在内存开辟两个引用空间
a = new Date();//开辟存储Date对象的数据空间,并把该空间的首地址赋给a
b = a; //将a存储空间中的地址写到b的存储空间中public class ReferencePkValue2 {
public static void main(String[] args) { ReferencePkValue2 t = new ReferencePkValue2(); int a=99; t.test1(a);//这里传递的参数a就是按值传递 System.out.println(a); MyObj obj=new MyObj(); t.test2(obj);//这里传递的参数obj就是引用传递 System.out.println(obj.b); } public void test1(int a){ a=a++; System.out.println(a); } public void test2(MyObj obj){ obj.b=100; System.out.println(obj.b); } }因为没有提供自身修改的函数,每次操作都是新生成一个对象,所以要特殊对待,可以认为是和基本数据类型相似,传值操作。
关于Java中形参与实参的理解的更多相关文章
- java 中形参与实参的转换
java中有两个参数,一个是形参,一个是实参. 形参:在函数定义中,整个函数体内部都可以使用,离开了该函数就不能继续使用. 实参:出现在主函数中,进入被调函数后,实参变量也就不能继续使用. publi ...
- 深入理解java的形参和实参
转载声明:本文转载自公众号「码匠笔记」. 前几天在头条上看到一道经典面试题,引发了一些思考.也是写这篇文章的导火索. 背景 请看题: public classMain{ publicsta ...
- 浅谈对java中传参问题的理解
之前用的c/c++比较多,在c/c++中对于传参类型,无外乎就是传值.传引用.传指针这几种.但在java中,由于没有指针类型,其传参的方式也发生了相应的变化.在网上找了找,按我之前的理解,java中传 ...
- js 函数中形参与实参的关系
函数中形参与实参的关系 对于形参和实参的定义,在 权威指南中有着明确的定义.但是,我们更在意的是它们之间的关系,到底形参会不会影响到实参? 形参到底会不会影响到实参? 对于这个问题的答案,请先看以下两 ...
- java中容器的学习与理解
以前一直对于java中容器的概念不理解,虽然学习过,但始终没有认真理解过,这几天老师提出了这样一个问题,你怎么理解java中的容器.瞬间就蒙了.于是各种搜资料学习了一下,下面是我学习后整理出来的的一些 ...
- java中传值方式的个人理解
前言 这几天在整理java基础知识方面的内容,对于值传递还不是特别理解,于是查阅了一些资料和网上相关博客,自己进行了归纳总结,最后将其整理成了一篇博客. 值传递 值传递是指在调用函数时将实际参数复制一 ...
- Java中的不可变类理解
一.Java中的不可变类 不可变类(Immutable Objects):当类的实例一经创建,其内容便不可改变,即无法修改其成员变量. 可变类(Mutable Objects):类的实例创建后,可以修 ...
- java的形参与实参的区别以及java的方法
package com.lv.study; public class Demo05 { public static void main(String[] args) { //我想要用什么分隔符进行分隔 ...
- 一道题带你搞定Python函数中形参和实参问题
昨天在Python学习群里有位路人甲问了个Python函数中关于形参和实参一个很基础的问题,虽然很基础,但是对于很多小白来说不一定简单,反而会被搞得稀里糊涂.人生苦短,我用Python. 为了解答大家 ...
随机推荐
- storm概念学习及流处理与批处理的区别
在过去10 年中,随着互联网应用的高速发展,企业积累的数据量越来越大,越来越多.随着Google MapReduce.Hadoop 等相关技术的出现,处理大规模数据变得简单起来,但是这些数据处理技术都 ...
- ADF_General JSF系列2_创建JSF类型的页面向导
2015-02-17 Created By BaoXinjian
- 把centos 的mysql 重装一下 把原来的lnmp删除,怎么备份还原数据库
mysqldump --lock-all-tables -u root -p --databases mydb > /opt/database/mydb.sql,或者直接备份mysql的数据存储 ...
- windows下脚本检测tomcat是否启动,没有启动则启动
最近有个服务需要部署到windows server2003上面,机房没有windows ser的机器,没办法搞了个阿里云服务,购买的配置比较低, 不知道什么原因,tomcat启动后总是容易自动退出,搞 ...
- python(17) 获取acfun弹幕,评论和视频信息
每天一点linux命令:新建文件夹
- Android之SQLite
在模拟器运行的情况下,进入cmd运行adb shell 可进入模拟器的linux系统输入 lite3 mars_test_db 可进入sqlite模式.schema或者.sch 查看有哪些表 SQLi ...
- bootstrap-输入框组
<!-- input-group 只能针对输入框,输入框组 input-group-addon 给输入框前后添加的额外元素 input-group-btn 添加的额外元素是按钮: --> ...
- Tomcat发布项目时,浏览器地址栏图标的问题
最近在做一个Java网络应用程序,服务器是tomcat.在默认情况下,当用户访问该网络应用时,地址栏图标显示为tomcat猫.我希望把它换成自己的图标,于是研究了一下.在研究过程中,我发现网上的资料大 ...
- .NET 文件相关的所有操作
public static class FileSystemHelper { #region 检测指定目录是否存在 /// <summary> /// 检测指定目录是否存在 /// < ...
- rand()和srand()区别
标准库<cstdlib>提供两个帮助生成伪随机数的函数: 函数一:int rand(void):从srand (seed)中指定的seed开始,返回一个[seed, RAND_MAX(0x ...