java 定义别名_Java 别名(Aliasing)
别名 (Aliasing)
别名,顾名思义,是有别于现在名字的另一个名字,但指的是不是同一个人或事物呢?比如,你上学的时候同学有没有给你起什么外号?如果有的话,你的名字和同学给你起的外号是不是都指的是你自己?肯定是的哦。
Java中的别名亦类似,Java 给某个变量起别名,其实就是赋值语句(Assignment Statement,如 b = a),只是这里的** 值 ** 要视情况而定。
一般分两种情况:
1。基本数据类型 (Primitive Type):这个是真正的赋值。
2。引用类型 (Reference Type):这个则是复制一份引用。
让我们分别开看一下。
基本数据类型 (Primitive Type)
if x and y are variables of a primitive type, then the assignment of y = x copies the value of x to y.
如果 x 和 y 是基本数据变量,那么赋值语句 y = x 是将 x 的 值 复制给 y。
这个比较好理解,代码示例:
int a = 2;
int b = a;
int c = 2;
System.out.println("a: "+ a);
System.out.println("b: "+ b);
System.out.println("c: "+ c);
System.out.println("a == b is: " + (a==b));
System.out.println("a == c is: " + (a==c));
运行结果:
a: 2
b: 2
c: 2
a == b is: true
a == c is: true
引用类型(Reference Type)
For reference types, the reference is copied (not the value)
对于引用类型的 x 和 y,y = x 表示将 x 的 引用复制一份给 y (不是 x 的值哦)
比如,给定一个数组 a,给它起一个别名 b(b = a),二者其实都指向 a 所指向的同一个对象。
代码演示:
int[] a = {1,2,3};
int[] b = a;
int[] c = {1,2,3};
System.out.println("a: "+ a);
System.out.println("b: "+ b);
System.out.println("c: "+ c);
System.out.println("a == b is: " + (a==b));
System.out.println("a != c is: " + (a!=c));
运行结果可以看出,b 是 a 的 别名,a 和 b 指向的是同一对象地址(1218025c),a 和 c 则不同。
a: [I@1218025c
b: [I@1218025c
c: [I@816f27d
a == b is: true
a != c is: true
在内存中的位置大概是这样的:
引申思考:
1。Java 中数组有个clone()方法,比如 b = a.clone(); 这与前面的 b=a 是否一样?为什么?
2。Java 别名的设计目的是什么?
java 定义别名_Java 别名(Aliasing)相关推荐
- java定义数组_java定义数组的方法有哪些
java定义数组的方法有:1.[数组类型[] 数组名 = new 数组类型[数组长度]]:2.[数组类型[] 数组名 = {数组元素}]:3.[数组类型[] 数组名 = new 数组类型[] {数组元 ...
- java定义构造方法_JAVA基础学习之路(三)类定义及构造方法
类的定义及使用 一,类的定义 classBook {//定义一个类intprice;//定义一个属性intnum;public static int getMonney(int price, intn ...
- java定义数组_java中数组的三种定义方式_java中数组的定义及使用方法(推荐)...
java中数组的三种定义方式 java中,数组是一种很常用的工具,今天我们来说说数组怎么定义 [java] view plain copy /** * 数组的三种定义方法 * 1.数组类型[] 数组名 ...
- java 定义方法_java如何定义方法
所谓方法,就是用来解决一类问题的代码的有序组合,是一个功能模块.(推荐:java视频教程) 一般情况下,定义一个方法的语法是:[修饰符] 返回值类型 方法名称(参数类型 参数名1,参数类型 参数名2, ...
- java定义负数_java定义一个负数
提示: InsufficientFundsException,NagativeFundsException 为自定义的类,分别产生余额不足异 常和取款为负数异常,需继承 Exception 类. 通过 ...
- java定义常量_JAVA中定义常量方法
JAVA中定义常量方法 (2013-01-28 14:30:19) 标签: it 一.常量定义的基本注意事项. 在Java语言中,主要是利用final关键字(在Java类中灵活使用Static关键字) ...
- java 定义构造器_java的构造器定义以及使用
构造器,是面向对象所特有的概念,是一种特殊的方法,与对象创建有关 1.构造器没有返回值类型 2.构造器方法名与类名相同,而且可以重载构造器 3.构造器不能手动调用,只能在创建对象时自动调用一次 4.如 ...
- java定义子类_java定义类和子类中的方法
展开全部 你好: 首先是62616964757a686964616fe78988e69d8331333335343337Parents类public class Parents { private S ...
- Go 学习笔记(27)— type 关键字(类型定义、类型别名、类型查询、定义接口、定义结构体)
1. 类型别名定义 定义类型别名的写法为: type TypeAlias = Type 类型别名规定: TypeAlias 只是 Type 的别名,本质上 TypeAlias 与 Type 是同一个类 ...
最新文章
- SAP MM 公司间STO里交货单PGI之后自动触发内向交货单功能的实现
- 关于Win7 内存变小处理方法
- 用pycharm写python老是提示错误_python pycharm错误集锦
- 【抽象代数】类方程和有限群
- 360公司2019秋招空中宣讲会开启,送海量面试直通卡!
- JAVA中for循环写杨辉三角_java使用for循环输出杨辉三角
- 在Reporting Services (RDL)中自动生成大量列
- [Web Chart系列之四] 图形布局-Layout 之js设计实现
- Photoshop 操作显示滞后问题及解决方法
- FusionChartsFree及其教程
- 工程流体力学笔记暂记33 (边界层动量积分方程)
- 关于RIGOL可编程电源连接说明(网口连接)
- Qt模仿360系统托盘
- 三星ml1660拆机图解_三星s6拆机图解介绍
- python按字母顺序排列_在python中检查字符串是否按字母顺序排列
- 管理角度看莫泊桑《项链》
- 微信定位精灵服务器或网络异常,微信定位精灵系统界面无法更新怎么办
- anaconda 安装 TensorFlow 过程记录
- mosquitto接口流程图
- HTML学习笔记~html学习需要准备什么