Java 之多态
2024-08-30 13:39:43
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 提供思路和方向
最新文章
- ubuntu14 opencv python 安装
- Unity 利用NGUI做屏幕分辨率适配+学习UIDraggablePanel的使用
- LilyPad Arduino可穿戴技术和电子织物控制器板简介
- struts2,实现Ajax异步通信
- 如何在后台动态生成ASPxCheckBoxList标签并循环(数据调用存储过程)
- cf E. Fox and Card Game
- WPF使用Log4net.dll库的demo(转载加个人观点)
- sed和awk用法
- app测试中隐藏键盘
- 《Flask Web开发》学习笔记
- RabbitMQ消费者抛异常日志持续打印的问题
- openstack基础环境准备(一)
- Cracking The Coding Interview 4.1
- C# 源码 AForge.NET
- FIR基本型仿真_03
- [label][Apache] VirtualHost
- ZT extern ";C";的用法解析
- npm 可执行模块的开发&;&;私服发布
- Cheatsheet: 2017 03.01 ~ 03.31
- System and method to prioritize large memory page allocation in virtualized systems
热门文章
- python's is&;==区别
- Cassandra修改集群名称
- 【HDU4405】Aeroplane_chess
- 关于新建XIB去关联控制器,报错- the view outlet was not set
- NodeJS - npm WARN package.json : No repository field:can not open package.json
- 通过snmp监控linux
- 导入txt文件到SQL SERVER 2008
- Python爬虫实战五之模拟登录淘宝并获取所有订单
- java轻量级IOC框架Guice(转)
- rabbitMQ日常管理(转)