(1)作用域public,protect,private以及不写时的区别
主要是作用域的不同,这里我用一个财产分配的例子来说明这个问题。首先我们先来了解一下有哪些作用域:
当前类 财产所有者
同一Package下的类 财产所有者的配偶(这里我们允许该财产所有者有一个或多个配偶)
子孙类 财产所有者的子孙
其他package下的类 财产所有者的旁系亲属,朋友或者甚至没有相关关系的人
public定义的对于当前类,同一package下的类,子孙类,其他package下的都能都使用,即作用域范围不受什么限制
protected 受保护的,那么要保护的对象是什么呢?就像地方保护主义一样,我们要防的只是外来的,因此它的作用域范围除了其他package类都是可以的
friendly 友好的(在C++中有友元类)但是只对他自己和妻子友好,也就是作用域范围只能在当前类和同一Package类
private私有的,比较保守,它呢,只关心当前类,连子孙类也是不可以的,也就是说private方法是不可继承的。(即使我死了,但是我的财产我还要带走,不传给后代,妻子)
不写的时候默认为friendly
(2)ArrayList和Vector的区别
区别主要在同步性(线程安全)和数据增长
1.Vector是线程安全的,也就是说是同步的,而ArrayList是线程不安全的,也就是说不是同步的。
2.当需要增长时,Vector默认增长为原来的一倍,而ArrayList默认增长为原来的一半
Vector vector = null
Vector vector = new Vector();
(3)HashMap和Hashtable的区别
区别主要在历史原因、同步性(线程安全)和能否为空值
1.Hashtable是基于陈旧的Dictionary类,而HashMap是java 1.2引进的Map接口的一个实现
2.Hashtable是线程安全的,也就是说是线程同步的,而HashMap是线程不安全的,即不是同步的
3.Hashtbale是不允许空值作为一个表的条目的Key或者Value的(容易引起数组越界的错误),而HashMap是允许的
(4)char型变量能不能存贮一个中文汉字?为什么?
可以的,因为Java是用unicode编码的,一个char占16个字节,所以放一个中文是完全没有问题的
(5)float型 float f = 3.4是否正确?
是不正确的。精度不正确,应该用强制类型转换,如下所示:float f = (float)3.4 或者float f = 3.4f
float的精度是6~7位有效数字,取值范围是10的-38次方到10的38次方,float占用4字节空间
double的精度是14~15位有效数字,取值范围是10的-308次方到10的308次方,double占用8字节空间