线程和进程的区别?
进程和线程都是由操作系统所控制的程序运行的基本单位,进程和线程区别如下:
进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。
线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位,线程本身基本上不拥有系统资源,只拥有一点在运行中必不可少的资源,但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。线程不能独立执行,必须依存在应用程序中。
一个线程可以创建和撤销另一个线程,同一个进程中的多个线程之间可以并发执行。
从逻辑角度来看,多线程的意义在于一个应用程序中有多个执行部分可以同时执行,操作系统并没有将多个线程看做是多个独立的应用来实现进程调度和管理以及资源分配!
String和StringBuffer的区别?
JAVA提供了两个字符串类:String和StringBuffer。它们可以储存和操作字符串,字符串String类提供了数值不可改变的字符串,而StringBuffer类提供的字符串对象可以进行修改。当知道字符串数据要改变的时候就可以使用StringBuffer类创建,可以使用StringBuffer 来动态构造字符数据。
final,finally,finalize 的区别?
final用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承
finally是异常处理语句结构的一部分,表示总是执行。
finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其它资源回收,例如关闭文件!
面向对象的特征有哪些?
抽象:抽象就是忽略一个主题中与当前目标无关的方面,而将目标的某个特征进行提炼
继承:继承是一种连接类的层次模型,他提供了一种明确表述共性的方法
封装:封装就是把数据和过程包围起来,对数据的访问只能调用已定义的接口
多态性:就是允许不同类的对象对同一消息作出相应。
is a和 has a的区别?
is a(是一个)
has a(有一个)
例如:
public class A{
void dosomething(){
//do soming
}
}
public class B extends A{
......
}
在上面两个类中是B类继承A类而不是B类仅仅拥有A类的部分特征变量。所以类B和类A的关系式:is a
在JAVA中父类构造函数式先于子类构造函数运行的 如下例子:
class MyTest extends Test{
public MyTest(){
System.out.println("sss");
}
}
public class Test{
public Test(){
System.out.println("aaaa");
}
public static void main(String args[]){
new MyTest();
}
}
super和this用法
super(参数):调用基本类中的某一个构造函数(应该为构造函数中的第一条语句,可以不写)
this(参数):调用本类中另一种形成的构造函数(应该为构造函数中的第一条语句)
super:它引用当前对象的直接父类中的成员(用来访问直接父类中被隐藏的父类中成员变量或方法,基类与派生类中有相同的成员定义时)
this:它代表当前对象