接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。
16.是否可以继承String类?
String类是final类故不可以继承。
17.面向对象的特征有哪些方面?
1)抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。
2)继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。
3)封装:封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。
4) 多态性:多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。
18.int 和 Integer 有什么区别?
Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。
Int是java的原始数据类型,
Integer是java为int提供的封装类。
Java为每个原始类型提供了封装类。
原始类型封装类booleanBoolean charCharacter byteByte shortShort intInteger longLong floatFloat doubleDouble
引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。
19.作用域public,private,protected,以及不写时的区别?
访问
Public
Protected
缺省的
Private
同类
√
√
√
√
同包
√
√
√
×
子类
√
√
×
×
通用性
√
×
×
×
20.用java写一个冒泡排序。
/**
* 对int数组进行升序排序
*
* @param intVal:要排序的数组
* @param asc:值为true,表示升序排序;传入值为false,表示降序排序
* @return 返回排序后的int数组
*/
public static int[] intArraySort(int [] intVal,boolean asc){
int [] vals=intVal;
int temp;
if(vals.length>0){
if(asc==true){
for(int i=0;i<=vals.length-2;i++){
for(int j=0;j<vals.length-i-1;j++){
if(vals[j]>vals[j+1]){
//升序排列
temp=vals[j];
vals[j]=vals[j+1];
vals[j+1]=temp;
}
}
}
}else{
for(int i=0;i<=vals.length-2;i++){
for(int j=0;j<vals.length-i-1;j++){
if(vals[j]<vals[j+1]){
//降序排列
temp=vals[j];
vals[j]=vals[j+1];
vals[j+1]=temp;
}
}
}
}
}
return vals;
}
21.short s1 =1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?