Think in Java学习总结(一)之对象
2016-07-13 09:06
357 查看
一切皆对象
1. 主成员的默认值若某个主数据类型属于一个类成员,那么即使不明确(显式)进行初始化,也可以保证它们获得一个默认
值。
主类型 默认值
Boolean false
Char ‘\u0000’(null)
byte (byte)0
short (short)0
int 0
long 0L
float 0.0f
double 0.0d
然而,这种保证却并不适用于“局部”变量——那些变量并非一个类的字段。所以,假若在一个函数定义中,则需要对其赋初始值。
因此,并不是在任何情况下变量都会得到默认值的;这应该是基于对象用new关键字创建的时候,其字段都赋予初始值并分配了相应的内存空间,而方法并没有完全被创建出来,那么方法中的局部变量就无法得到其初始值;
2.Java中 == 和equals()的区别
== 作用于基本数据类型的时候是完全正确的,符合逻辑的,完全可以达到我们期望的结果,但对于非基本类型的数据,即对象时, ==比较的是两个对象所持有的句柄,即地址;
equals 是为了面向对象的设计而产生的,此方法源于Object类中,因此,所有的类对象都可以使用此方法;但是此方法在Object中的实现也只是比较两个对象的地址的,如果我们想要在自己的定义的类中保证两个对象比较的值相等,就需要重写此方法,根据我们自己判断两个对象相等的方法来添加代码,实现我们所希望的功能;
比如String 和 StringBuffer的equals方法的区别:
Stirng 方法中的equals作了实现,而StringBuffer中的equals方法并未进行重写,因此当我们利用StringBuffer中的equals方法进行比较时,得到的永远都是false,除非是比较他本身;
相关文章推荐
- Spring定时器--时间设置规则
- Java 九九乘法表
- cxf 方式三 是java客户端调用.net服务端 好使代码
- 详解Java多线程编程中CountDownLatch阻塞线程的方法
- 第一章:java概述与开发环境搭建
- Java线程生命周期及其使用,sleep与interrupt的使用,wait与notify
- eclipse 向下复制无效 ctrl+alt+down
- java学习之路
- Java学习- 他人的 总结 printf总结
- java开发中的一些好的原则和习惯
- Java FutureTask正确使用姿势
- 北交-程序设计II-个人训练报告
- Java中IO流的File类
- java中的对象序列化
- JAVA开发过程中的各种小坑
- java控制台输出print和println详解
- java之内部类(InnerClass)----非静态内部类、静态内部类、局部内部类、匿名内部类
- Spring Framework笔记(二)
- java静态与非静态区别
- java链式编程设计