1.继承、多态、重写?
继承:如果子类继承了父类,那么子类便具有了父类的属性跟方法,如果继承了抽象类或借口就需要将抽象类或借口中的抽象方法实现。普通类跟抽象类的继承用关键字extends,
接口的继承用emplements如果子类继承了父类,子类就可以自动转型成父类,而父类需要要强制转型成子类
多态:用于继承和重写机制的存在。相同类型的对象,调用相同的方法。得到的结果可能不同
重写:当子类继承父类是便具有父类中的方法,当父类的方法子类不需要时,就要重写父类中的方法,而所谓重写就是方法的定义不变仅仅是方法的实现改变
2.数据类型、值传递和引用传递有什么区别,String是什么传递?
数据类型有原始类型和类类型。
原始类型遵守值传递:所谓值传递就是方法调用时,实际参数把它的值传递给对应的形式参数,方法执行中形式参数值的改变不影响实际参数的值。
类类型遵守引用传,也称为传地址。方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法中相对应的形式参数,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,方法执行中形式参数值的改变将会影响实际参数的值。
String :,虽然可以像原始类型那样使用,但是一个特殊的类,所以应该属于引用传递
3.Set如何遍历,有哪些子类、List如何遍历,有哪些子类、Map如何遍历,有哪些子类? Map中是否可以放入null的key或Vlaue?Set,List呢?
Set是是一个无序集合,所以要遍历Set首先要得到Set集合的迭代器:java.util.Iterator<数据类型> ite= str.iterator();然后就开始遍历,while(ite.hasNext()){数据类型 变量名=ite.next();}
List是一个有序集合,遍历List值需要用for语句便可以了for(int i=0;i<list.seze();i++)
{数据类型 变量名=list.get(i);}
Map提供了一个映射关系集合的数据结构,也是无序的。首先,要得到key的Set集合java.util.Set<数据类型> keys=map.keySet。其次,得到keys的迭代器java.util.Iterator<数据类型> iter=keys.itetator
最后遍历Set集合并根据key值得到value值while(iter.hasNext){数据类型 变量名=iter.nex();
数据类型 value=map.get(key)}
Set常用子类:
HashSet:不允许重复,顺序不定,可以add空。
LinkedHashSet:不允许重复。有顺序,可以add空。
TreeSet:不允许重复,有顺序,不可以add空。
List常用子类:
ArrayList:有顺序,可重复,可以add空。不同步,不安全。
LinkedList:和ArrayList基本一样。
Vector:同步,安全,其余的和ArrayList基本一样。
Map常用子类:
HashMap:无序存放的,是新的操作类,key不允许重复。
Hashtable:无序存放的,是旧的操作类,key不允许重复。
TreeMap:可以排序的Map集合,按集合中的key排序,key不允许重复。
IdentityHashMap:key可以重复的Map集合。
Null表示空无的意思,所以Map,Set,List中不能放null
5.递归与循环的区别?
递归在循环体中调用自身,而循环没有。
6.文件复制的实现,原始数据类型读写
首先是这创建一个输入流跟输出流
FileInputStream fis=new FileInputStream (输入路径)
FileOutputStream fis=new FileOutputStream (输出路径)
先读取一个字节int i=fis.read();
再在循环读出接下来的字节whilez(i!=1){将读取到的字节写出去fos.write(i)读取下一个字节i=fis.rea();
最后要将数据强制输出fos.flush();
关闭输入输出流fis.close fos.close
7.线程:线程有几种创建方式?线程在程序中有几种状态?
一种是extends Thread:继承 Thread 类,覆盖方法 run(),我们在创建的 Thread 类的子类中重写 run() ,加入线程所要执行的代码即可。
一种是implements Runable: Runnable 接口只有一个方法 run(),我们声明自己的类实现 Runnable 接口并提供这一方法,将我们的线程代码写入其中,就完成了这一部分的任务。但是 Runnable 接口并没有任何对线程的支持,我们还必须创建 Thread 类的实例,这一点通过 Thread 类的构造函数public Thread(Runnable target);来实现。
一个线程拥有四种可能的状态:New,runnable,blocked,dead.
8.static用法与注意事项,==和equals的区别?
static 用于属性跟方法中,可以由类直接调用,也可以有对象调用。static(静态)方法中不能调用非静态的变量,但是非静态方法可以调用静态变量。因为static是类方法,所以不能覆盖,也就是说,这个类的子类,不能有相同名、相同参数的方法。
equals 方法被用来检测两个对象是否相等,即两个对象的内容是否相等。
==用于比较引用和比较基本数据类型时具有不同的功能:
比较基本数据类型,如果两个值相同,则结果为true
而在比较引用时,如果引用指向内存中的同一对象,结果为true