android复习路之java基础上
来源:互联网 发布:2016网络新词 日语 编辑:程序博客网 时间:2024/05/04 19:31
八种基本的数据类型,及其封装类:
八种基本的数据类型:int,double,long,float,short,character,boolean
对应的封装类型是:Integer,Double,Long,Float,Short,Character,Boolean
equals和==的区别:
1.==
在基础数据类型比较的时候==比较的是它们的值是否相同,如果是引用对象的时候==比较的就是它们在内存中的地址是否相同,也就是它们指向的同一个new出来的对象,此时它们==得到的结果是true否则都是false。
2.equals
equals是Object的一个方法,在该类中,也是仅仅实现了两个对象比较内存地址是否相同,但子类一般都会重写该方法。
3.==和equals的区别:
String在java虚拟中,java虚拟机会开辟一块空间来存字符串,这部分区域被称之为字符串缓冲池。如果使用string=''abc''语句的时候,首先会在缓冲池中检查是否存着在这变量,如果存在就返回这个变量的引用,如果不存在就新建一个变量并且返回引用给a。如果是用 string a =new string("abc");就算在java虚拟机中存在abc,java虚拟机仍然会产生一个新的string对象。
==在比较引用的情况下,会去比较两个引用的内存地址是否相等。
String str1 = "abc";
String str2 = "abc";
System.out.println(str1 == str2);
System.out.println(str1.equals(str2));
String str2 = new String("abc");
System.out.println(str1 == str2);
System.out.println(str1.equals(str2));
以上代码将会输出
true
true
false
true
第一个true:因为在str2赋值之前,str1的赋值操作就已经在内存中创建了一个值为"abc"的对象了,然后str2将会与str1指向相同的地址。
第二个true:因为String已经重写了equals方法
Object中的共有方法:
1.clone方法
保护方法,实现对象的浅复制,只有实现了Cloneable接口才能调用该方法。java中除了8种基本传参数的值传递,其他的类对象传参数都是引用传递,如果不希望改变方法中的参数。我们就需要在累重复写clone方法。
2.getClass
final方法,获得运行时类型。
3.toString
方法的用法特别多一般子类都有覆盖。
4.finalize
该方法用于释放资源,因为无法确定执行时间很少使用。
5.equals
在Object中equals和==是相同的,子类需要重写这个方法。
6.hashCode
该方法用于hash查找,可以减少equals的使用次数,一般重新equals都会重写hashCode 方法。
java中的四种引用
1.强引用:
只要在引用存在时。GC时就注定不会被回收。
2.软引用:
如果要发生OOM时就会回收软引用所指向的内存空间,如果内存空间仍然不足才会抛出OOM。
3.弱引用:
如果发生GC的时候必定会回收弱引用指向的内存。
4.虚引用:
被称幽灵引用,不会影响对象的生命周期,也无法通过虚引用来获得对象的实例。仅用于在发生GC时接收一个系统通知。 当一个对象的finalize方法已经被调用了之后,这个对象的幽灵引用会被加入到队列中。通过检查该队列里面的内容就知道一个对象是不是已经准备要被回收了. 虚引用和软引用和弱引用都不同,它会在内存没有清理的时候被加入引用队列.虚引用的建立必须要传入引用队列,其他可以没有。
String,StringBuffer与StringBuilder之间的区别:
String是只读字符串,String的引用是不能被改变的。而StringBuffer与StringBuilder表示字符串是可以直接进行修改的。StringBuilder是java1.5以后引入的,用法和StringBuffer一样,它的多线程是不安全的,它的效率高于StringBuffer。
try catch finally,try里有return,finally还执行么?
会执行,在方法返回调用者之前,java中允许修改finally中的返回值,try中的返回语句会等待finally语句执行执行完成后返回值,那就是说可以在finally中修改返回值。
- android复习路之java基础上
- android复习路之java基础下
- android复习路之java虚拟机
- java 复习之路
- android复习路之手打链表篇
- android复习路之SurfaceView
- Java基础上
- android 复习之路之Activity
- android复习路之布局篇
- android复习路之activity篇
- android复习路之Service篇
- android复习路之不死的service
- android复习路之BaseAdapter优化
- android复习路之handler篇
- android复习路之自定义View篇
- android复习路之tween动画篇
- android复习路之fragment篇
- android复习路之http网络访问
- vue2.0生命周期
- 关于对象的比较方法
- Hash算法
- 如何理解DT将是未来IT的转型之路?
- tensorflow在centos安装
- android复习路之java基础上
- SpringMVC的各种参数绑定方式
- MySQL5.7 linux二进制安装
- mysql 一个死锁的分析
- 大家都应该懂的设计模式——单例模式
- js jquery中的延时方法(set/clearTimeout)
- 四大php框架rbac功能分析
- web前端规范 通用规范
- 简要线程池工作原理