Java再谈_变量
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java再谈_变量,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2666字,纯文字阅读大概需要4分钟。
内容图文
![Java再谈_变量](/upload/InfoBanner/zyjiaocheng/633/de7741c1b95b4ea397c8d95df1583eb0.jpg)
1. 变量里存的什么
Java通过[类型 变量名]的方式声明了一个变量。
当我们声明一个变量的时候,相当于在内存中为它指定了一个地址,通过变量我们可以访问到它代表的这块内存空间。
我们可以理解成,变量里存的就是它代表的这块内存空间里存储的值。
- 对于基本类型的变量来说,存的就是其具体的数值、字符或布尔值。
- 而对于引用类型(对象)来说,存的是能够访问这个对象的内存地址,通过这个地址,我们可以访问到对象实际的内存,从而对它进行操作。
int a;// 这时只声明了一个变量,还没有初始化,Java是不能使用未初始化的变量的。
int b = 10;// 在声明变量的同时对它进行初始化。
Object c = new Object();// 声明了一个对象类型的变量,并通过new操作符创建了一个Object类型的实例,并将这个实例的引用赋给了变量c。
2. 变量的区别
Java中的变量,根据作用域不同,可以分为三类:
- 静态变量:静态变量属于类,同时,所有该类的实例都可以访问这个变量。
- 实例变量:实例变量属于实例所有,不同实例持有自己的实例变量,互不影响。
- 局部变量:局部变量为方法块中的变量,方法块执行完毕,则变量销毁。
默认值
如果不对变量进行初始化,Java不会给局部变量指定默认值,对静态变量和实例变量会指定初始值。
数值型为0,布尔型为false,引用型为null。
3. 变量传给方法的是什么
这里首先明确一个概念。
方法签名里的参数叫做形参,它们相当于只声明而没有初始化的变量。
调用方法时,括号里的参数叫做实参。
调用方法的过程。
- 按照方法名和传递进来的参数列表,找到对应的方法签名。
- 用你传递进来的实参的拷贝给对应的形参赋值。
- 执行方法中的代码。
有这么一句话,对于学习Java的人来说是比较熟悉的。
基本类型传递值,类类型传递引用。(引用是什么?就是地址啊,通过它可以访问对象啊。)
打个比方,声明一个变量,相当于开了个房(咳!咳咳咳!)。
基本类型的变量,存进去的就是个娃娃(0101这种二进制数);而类类型呢,存进去的是一个钥匙(地址)。
当把变量当做实参传递给方法的时候,基本类型给了你一个娃娃的复制品,而类类型给了你一把复制的钥匙。实际上它们给你的都是他们房间里放的东西的复制品。(也就是变量内存中存的数据的拷贝)
对于基本类型来说你用的只不过这些房间里东西的复制品,所以,这些房间里方的东西该是什么还是什么。这就是为什么对于基本类型来说,在方法中怎么操作形参的值,都不会影响到外边实参的值。
再说说类类型哈,你拿到复制好的钥匙,去开了那个房间的门,发现里边是个美女......然后你改变了这个房间里的状态,当有人用房间里的钥匙开了这个房间的门之后,看到的肯定是你改变后的状态呀。这就是为什么当我们传递一个类类型给方法时,方法内部修改这个对象的属性时,会影响实参所代表的对象的原因。
有人说,我在方法内部再创建一个对象给形参,会不会影响外面的实参呢?当然不会,你只不过是换了一把钥匙而已,不影响实参房间中存的那把钥匙。
有点乱,总结下:
- 对于传参,我的理解是,实参变量中存的是什么就传什么给方法。
- 修改形参的值,不会影响实参的值。
- 在方法内修改类类型的数据,可以对方法外的对象造成影响。
- 如果不想让方法内的操纵影响到实参代表的对象,可以传递一个对象的拷贝(一个与原有对象状态相同的新对象)给方法。
内容总结
以上是互联网集市为您收集整理的Java再谈_变量全部内容,希望文章能够帮你解决Java再谈_变量所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。