1,作用域public,protected,private,以及不写时的区别
1、public:public表明该数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用
2、private:private表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用,私有财产神圣不可侵犯嘛,即便是子女,朋友,都不可以使用。
3、protected:protected对于子女、朋友来说,就是public的,可以自由使用,没有任何限制,而对于其他的外部class,protected就变成private。
作用域 当前类 同一package 子孙类 其他package
public √ √ √ √
protected √ √ √ ×
friendly √ √ × ×
private √ × × ×
不写时默认为friendly
二.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半。
现在为什么要用ArrayList类来代替Vector了呢?原因很简单:Vector类的所有方法都是同步的。你可以用两个线程安全的访问Vector对象。但是,如果你只用单个线程来访问Vector对象——这是更加常见的情况——那么你的代码将会在同步操作上浪费相当多的时间。相反,ArrayList类的方法不是同步的。因此我们建议你在不需要同步时使用ArrayList而不是Vector。
jdk:ArrayList与Vector也都是实现相同的接口,并且继承自相同的AbstractList类;它们的方法几乎也一模一样。
ArrayList类:
java.lang.Object
java.util.AbstractCollection<E>
java.util.AbstractList<E>
java.util.ArrayList<E>
All Implemented Interfaces:
Serializable, Cloneable, Iterable<E>, Collection<E>, List<E>, RandomAccess
Vector类:
java.lang.Object
java.util.AbstractCollection<E>
java.util.AbstractList<E>
java.util.Vector<E>
All Implemented Interfaces:
Serializable, Cloneable, Iterable<E>, Collection<E>, List<E>, RandomAccess
就HashMap与HashTable主要从三方面来说。
一.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现
二.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的
三.值:只有HashMap可以让你将空值作为一个表的条目的key或value
Hashtable类的作用与HashMap类是相同的,实际上它们拥有相同的接口。与Vector类的方法一样,Hashtable类的各个方法也是同步的。如果你不需要同步也不需要与遗留代码相兼容,你就应该使用HashMap类。
jdk:HashMap与HashTable都实现了相同的接口,这两个类拥有一模一样的方法,不过它们不是继承自同一个类。
HashMap:
java.lang.Object
java.util.AbstractMap<K,V>
java.util.HashMap<K,V>
All Implemented Interfaces:
Serializable, Cloneable, Map<K,V>
Hashtable:
java.lang.Object
java.util.Dictionary<K,V>
java.util.Hashtable<K,V>
All Implemented Interfaces:
Serializable, Cloneable, Map<K,V>
3,char型变量能不能定义为一个中文?为什么?
能够定义成为一个中文的,因为java中以unicode编码,一个char占16个字节,所以放一个中文是没问题的
4,多线程有几种表示方法,都是什么?同步有几种实现方法,都是什么?
多线程有两种实现方法,分别是继承Thread类与实现Runnable接口同步的实现方面有两种,分别是synchronized,wait与notify
5,继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么?
父类:
package test;
public class FatherClass
{
public FatherClass()
{
System.out.println("FatherClass Create";
}
}
子类:
package test;
import test.FatherClass;
public class ChildClass extends FatherClass
{
public ChildClass()
{
System.out.println("ChildClass Create";
}
public static void main(String[] args)
{
FatherClass fc = new FatherClass();
ChildClass cc = new ChildClass();
}
}
输出结果:
C:>java test.ChildClass
FatherClass Create
FatherClass Create
ChildClass Create
6,内部类的实现方式?
使用匿名内部类课使代码更加简洁、紧凑,模块化程度更高。内部类能够访问外部内的一切成员变量和方法,包括私有的,而实现接口或继承类做不到。然而这个不是我说的重点,我说的很简单,就是匿名内部类的两种实现方式:第一种,继承一个类,重写其方法;第二种,实现一个接口(可以是多个),实现其方法。
7,垃圾回收机制,如何优化程序?
使用NEW对象时候,java虚拟机会自动对对象分配的内存进行跟踪,java虚拟机会自动判断出对象是否还被引用,对不再被引用的对象,java对他实行释放内存操作。8,float型float f=3.4是否正确?
不对,应该使用强制转换类型。float f=(float)3.4