《java编程思想》--基础知识
来源:互联网 发布:linux开机启动mysql 编辑:程序博客网 时间:2024/06/05 04:40
==和equals
先看一段代码:
public class Equivalence { public static void main(String[] args) { Integer n1 = new Integer(50); Integer n2 = new Integer(50); System.out.println(n1 == n2); System.out.println(n1 != n2); }}输出结果是:falsetrue
原因是==和!=都是比较的引用,而不是比较值,所以,如果是对象之间(非基本数据类型)想比较内容是否相同,需要用eauqls()方法,如下:
public class Equivalence { public static void main(String[] args) { Integer n1 = new Integer(50); Integer n2 = new Integer(50); System.out.println(n1.equals(n2)); }}输出结果是:true
然而事情并不是这么简单,再看下一段代码:
class Value{ int i;}public class Equivalence { public static void main(String[] args) { Value n1 = new Value(); Value n2 = new Value(); n1.i = n2.i = 50; System.out.println(n1.equals(n2)); }}输出结果是:false
是false的原因是equals()默认也是用来比较引用的,Object类中的源码如下:
public boolean equals(Object obj) { return (this == obj); }
你自己定义的类中必须覆盖equals()方法才可以用自己希望的方式去比较,如下:
class Value{ int i; public boolean equals(Value obj) { return (this.i == obj.i); }}public class Equivalence { public static void main(String[] args) { Value n1 = new Value(); Value n2 = new Value(); n1.i = n2.i = 50; System.out.println(n1.equals(n2)); }}输出结果是:true
窄化转换和扩展转换
窄化转换:将容纳更多信息的数据类型转换成无法容纳那么多信息的类型,反之为扩展转换
java中对基本数据类型的操作默认是扩展转换,即在对基本数据类型做算术运算或按位运算时,都是默认转换成操作数总最大的那个类型
java中为什么没有sizeof()
在c和c++中sizeof()操作符可以告诉你为数据项分配的字节数,主要用于“移植”,因为不同数据类型在不同机器上可能有不同的大小,然而java不需要这个操作符来满足移植性,它的移植性已经被设计在语言中了
switch()和enum
switch被称为选中语句,参数只能为int或char那样的整数值,对于非整数,则必须使用一系列的if来进行选则,我们可以通过enum来减弱这种限制,因为enum和switch()可以协调工作
注:enum定义是构造函数最好是private的,因为枚举只是列举几个常量选项,并不需要你去修改它(个人理解)
enum MyEnum{ ZHANGSAN("10","zhansang"),LISI("20","lisi"),WANGWU("30","wangwu"); private MyEnum(String age , String name) { this.age = age ; this.name = name; } private String age; private String name; public String getAge() { return age; } public void setAge(String age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; }}public class Equivalence { public static void useEnum(MyEnum enumType) { switch(enumType) { case LISI: System.out.println("LISI的名字是:"+ enumType.getName()); return; case WANGWU: System.out.println("WANGWU的名字是:" + MyEnum.WANGWU.getName()); return; default: System.out.println("this is default"); return; } } public static void main(String[] args) { useEnum(MyEnum.LISI); useEnum(MyEnum.WANGWU);// 运行 default 语句 useEnum(MyEnum.ZHANGSAN); }}输出结果:LISI的名字是:lisiWANGWU的名字是:wangwuthis is default
0 0
- 《java编程思想》--基础知识
- 《Java编程思想》数组基础知识
- java基础知识整理(java编程思想1-6章)
- java oop思想编程思想
- 关于编程思想和《java编程思想》
- Java编程思想读书笔记
- Java编程思想:引言
- java编程思想:
- Java编程思想学习
- Java编程思想 笔记
- java编程思想读书笔记
- java编程思想
- java 编程思想 读书笔记
- 学习java编程思想
- 《java编程思想》
- java编程思想 记
- java编程思想chapter1
- java编程思想chapter3
- 磁盘阵列(RAID)和逻辑卷管理器(LVM)
- WinMTR网络ip追寻工具
- nginx设置不同的域名访问到不同的端口上
- OJ1100: 求组合数(函数专题)
- iOS侧滑返回
- 《java编程思想》--基础知识
- Lucene 索引库的操作
- Linux操作以及c编程规范 、附带个问题
- RT5350原厂SDK及AP移植步骤详解
- flannel 实战与源码分析(五)
- Node.js 切近实战(九) 之Excel在线(在线编辑)
- myeclipse 内存溢出解决
- Could not parse mapping document from input stream
- ssh免密码登入