编程基础(3)
1、c++与java的相似点以及不同点?(不全)
Java支持类,但不支持结构体;所有的类继承自Object类;所有的函数及方法必须定义在类中;
Java支持接口(interface),可以创建出一种只包含方法申名与常量的接口。c++不支持interface。
Java不支持多继承,在某中程度上接口机制实际上可以提供多继承的某些特性,同时又能避免多继承带来的底层问题。
Java不支持自动类型转换。不支持指针;拥有String类型,该对象是不可变得字符串常量,支持StringBuffer该类型的对象是可修改的。
2、Java抽象类和接口的区别:
接口中的方法都是抽象的,不能包含实现代码;而抽象类里面的实例方法,则可以提供默认的实现代码。这是抽象类与接口在方法上的主要区别。
3.Java中,ArrayList与Vector之间的重要区别是什么?
数组比ArrayList和Vector都快。如果能提前知道元素的个数,那么可以考虑使用数组。(数组的大小,不能向List那样,随着元素个数而增长。)
ArrayList和Vector在内部也使用数组,提供add(),remove()等方法。
4.Java中的HashMap和Hashtable有什么区别?
HashMap和HashTable都实现了Map接口,主要区别有:线程安全性、同步、速度
1、线程安全:HashMap是非synchronization(同步)的,HashTable是synchronization的,这意味着HashTable是线程安全的。
2、同步:因为HashMap是非synchronization的,HashTable是synchronization的,所以需要同步的话用HashTable。
3、速度:由于HashTable是线程安全的也是synchronized,所以在单线程环境下它比HashMap要慢
5.String、StringBuffer、StringBuilder的区别
String是字符串常量,内容是不可修改的;StringBuffer 和 StringBuilder 是字符串变量,可用来字符串拼接。
在执行速度上,String < StringBuffer < Stringbuilder 。每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,因此会有较大的影响。其次因为StringBuffer是 线程安全的,StringBuilder不是,因此StringBuilder要比StringBuffer快一些。
6.Java中 == 和 equals 区别
==比较的是引用相等,比较的是两个对象是否相等,也可能是int 型得常见类型的值;
equals 若对象没有重写equals方法,则与==作用是相同的;若重写了eg:String那么比较的就是值相等。或其他自定义的相等比较。