编程基础(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那么比较的就是值相等。或其他自定义的相等比较。

一切美好的都是值得等待的。
原文地址:https://www.cnblogs.com/minghua-b/p/9695922.html