Java 之多态(包含封装)

基础知识:

Java 在处理基本数据类型(例如int ,char,double)时,都是采用按值传递的方式执行,除此之外的其它类型都是按引用传递的方式执行。对象除了在函数调用时时引用传递,在使用“=”赋值时也是采用引用传递。

代码示例:

class TempTest1 {
static class A {
int age = 0; // 值传递
// num是基本类型,值就直接保存在变量中。
}
public static void main(String[] args) {
A a = new A();
// 这个a就是一个引用类型变量。引用指向实际对象,实际对象中保存着内容。
a.age = 20;
System.out.println(a.age);
}
} class TempTest2 {
private void test1(int a){ // 值传递
a = 0; // 值传递
System.out.println(a);
}
public static void main(String[] args) {
TempTest2 t = new TempTest2();
// 这个t就是一个引用类型。引用类型指向一个对象而不是原始值,指向对象的变量是引用变量。
int a = 20; // 值传递
t.test1(a);
}
}

前辈原话:

一:搞清楚 基本类型 和 引用类型的不同之处

int num = 10;
String str = "hello";

如图所示,num是基本类型,值就直接保存在变量中。而str是引用类型,变量中保存的只是实际对象的地址。一般称这种变量为"引用",引用指向实际对象,实际对象中保存着内容。

二:搞清楚赋值运算符(=)的作用

num = 20;
str = "java";

对于基本类型 num ,赋值运算符会直接改变变量的值,原来的值被覆盖掉。

对于引用类型 str,赋值运算符会改变引用中所保存的地址,原来的地址被覆盖掉。但是原来的对象不会被改变(重要)。

如上图所示,"hello" 字符串对象没有被改变。(没有被任何引用所指向的对象是垃圾,会被垃圾回收器回收)

后续请参考原文


注:本人正在学习状态,文中多有引用,也有解释纰漏之处,敬请包涵、指正!

参考:

https://www.zhihu.com/question/31203609

http://blog.csdn.net/wenwen091100304/article/details/46673865

感谢:usna 提供思路和方向

最新文章

  1. ubuntu14 opencv python 安装
  2. Unity 利用NGUI做屏幕分辨率适配+学习UIDraggablePanel的使用
  3. LilyPad Arduino可穿戴技术和电子织物控制器板简介
  4. struts2,实现Ajax异步通信
  5. 如何在后台动态生成ASPxCheckBoxList标签并循环(数据调用存储过程)
  6. cf E. Fox and Card Game
  7. WPF使用Log4net.dll库的demo(转载加个人观点)
  8. sed和awk用法
  9. app测试中隐藏键盘
  10. 《Flask Web开发》学习笔记
  11. RabbitMQ消费者抛异常日志持续打印的问题
  12. openstack基础环境准备(一)
  13. Cracking The Coding Interview 4.1
  14. C# 源码 AForge.NET
  15. FIR基本型仿真_03
  16. [label][Apache] VirtualHost
  17. ZT extern "C"的用法解析
  18. npm 可执行模块的开发&&私服发布
  19. Cheatsheet: 2017 03.01 ~ 03.31
  20. System and method to prioritize large memory page allocation in virtualized systems

热门文章

  1. python's is&==区别
  2. Cassandra修改集群名称
  3. 【HDU4405】Aeroplane_chess
  4. 关于新建XIB去关联控制器,报错- the view outlet was not set
  5. NodeJS - npm WARN package.json : No repository field:can not open package.json
  6. 通过snmp监控linux
  7. 导入txt文件到SQL SERVER 2008
  8. Python爬虫实战五之模拟登录淘宝并获取所有订单
  9. java轻量级IOC框架Guice(转)
  10. rabbitMQ日常管理(转)