java 参数的数据类型_关于java数据类型和参数

最近看了一些资料,清理了一下java基础方面的知识,现写下点笔记,待以后查阅。

1: java的数据类型可以分为引用类型和原始类型(或内置类型)。

2:java编程语言只有值传递参数。

参考了网上的一些说话,边的两点其实可以通过一个例子来解释。

1fa987a29c6482f53d401256f96355eb.png

ca75c07623e1b494fee67e8f316fc310.gifclassTblBsUserType()9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.pngprivateLong butyId;

d18c02628675d0a2c816449d98bda930.pngprivateTblBsDepartmentType tblBsDepartmentType;

d18c02628675d0a2c816449d98bda930.pngprivateString butyName;

d18c02628675d0a2c816449d98bda930.pngprivateString butyPassword;

d18c02628675d0a2c816449d98bda930.pngprivateString butyRemark;

d18c02628675d0a2c816449d98bda930.pngprivateString butyEmail;

d18c02628675d0a2c816449d98bda930.png     

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicLong getButyId()9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.pngreturnthis.butyId;

ecedf933ec37d714bd4c2545da43add2.png    }d18c02628675d0a2c816449d98bda930.png    

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicvoidsetButyId(Long butyId)9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.pngthis.butyId=butyId;

ecedf933ec37d714bd4c2545da43add2.png    }d18c02628675d0a2c816449d98bda930.png//为了保持简洁,其他的属性与上相似8f1ba5b45633e9678d1db480c16cae3f.png}

上边我创建了一个间单的用户实体类,现在我们来构建这个实体类的对象,代码如下:

1fa987a29c6482f53d401256f96355eb.png

ca75c07623e1b494fee67e8f316fc310.gifpublicclassTestUserextendsTestCase9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.png

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicvoidtestAddUser()throwsException9b8a8a44dd1c74ae49c20a7cd451974e.png{

d18c02628675d0a2c816449d98bda930.png            

d18c02628675d0a2c816449d98bda930.png        TblBsUserType user=newTblBsUserType();

ecedf933ec37d714bd4c2545da43add2.png}d18c02628675d0a2c816449d98bda930.png

8f1ba5b45633e9678d1db480c16cae3f.png}

上边我创建了一个用户对象,实际上上边这个过程,可以理解成这么几个步骤或状态:

a: 右边    new TblBsUserType(),这句是在内存中创建了一个用户实例,并通过“()”这对小括号去调用了不带参数的构造函数来初始化这个对象

b: 并用 user这个变量。指向了这个对象,所以user就可以说是对这个对象的引用。

c: 当有一句user=null;的时候,表明user不再指向上边这个对象,上边这个对象此时就不在被任何对象牵制,这个时候的它就成为了垃圾回收机制关注的对象,等待被其回收。至于什么时候回收,就看垃圾回收机制什么时候执行了。

所以在把user作为参数传给某个方法的时候,user是被值copy过去的,因此我们可以去改变user引用的这个对象里的任何东西,但是,我们在方法里头改变了user参数的引用,跳出函数后,user变量还是指向上边这个对象的。

参考资料如下:

/以下内容来自http://www.ibm.com/developerworks/cn/java/passbyval/index.html

Java 应用程序中的变量可以为以下两种类型之一:引用类型或基本类型。当作为参数传递给一个方法时,处理这两种类型的方式是相同的。两种类型都是按值传递的;没有一种按引用传递。这是一个重要特性,正如随后的代码示例所示的那样。

在继续讨论之前,定义 按值传递和 按引用传递这两个术语是重要的。 按值传递意味着当将一个参数传递给一个函数时,函数接收的是原始值的一个副本。因此,如果函数修改了该参数,仅改变副本,而原始值保持不变。 按引用传递意味着当将一个参数传递给一个函数时,函数接收的是原始值的内存地址,而不是值的副本。因此,如果函数修改了该参数,调用代码中的原始值也随之改变。

关于 Java 应用程序中参数传递的某些混淆源于这样一个事实:许多程序员都是从 C++ 编程转向 Java 编程的。C++ 既包含非引用类型,又包含引用类型,并分别按值和按引用传递它们。Java 编程语言有基本类型和对象引用;因此,认为 Java 应用程序像 C++ 那样对基本类型使用按值传递,而对引用使用按引用传递是符合逻辑的。毕竟您会这么想,如果正在传递一个引用,则它一定是 按引用传递的。很容易就会相信这一点,实际上有一段时间我也相信是这样,但这不正确。

在 C++ 和 Java 应用程序中,当传递给函数的参数不是引用时,传递的都是该值的一个副本(按值传递)。区别在于引用。在 C++ 中当传递给函数的参数是引用时,您传递的就是这个引用,或者内存地址(按引用传递)。在 Java 应用程序中,当对象引用是传递给方法的一个参数时,您传递的是该引用的一个副本(按值传递),而不是引用本身。请注意,调用方法的对象引用和副本都指向同一个对象。这是一个重要区别。Java 应用程序在传递不同类型的参数时,其作法与 C++ 并无不同。Java 应用程序按值传递所有参数,这样就制作所有参数的副本,而不管它们的类型。

-----------------具体请到该网站察看------------------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值