1、为什么要有类的继承性
类的继承性可以减少代码冗余度,提高代码复用性,提高代码操作效率
2、继承的格式(语法)
子类 extends 父类
3、子类继承父类后有哪些不同
子类范围大于父类,子类的属性小于父类
4、java中继承的说明
1 - 继承在Java中代表extend拓展属性,子类继承父类属性,子类方法必须大于父类,一个父类可有多个子类继承是用过extends(扩展)实现的
2 - 通过继承,子类中无需再声明父类中已经存在的属性和方法,减
少的代码的冗余,提高的代码的复用性
3 - 子类和父类之间的关系不同于子集和集和之间的关系。子类的功
能更丰富,子类可以扩展父类没有的功能
4 - 子类继承了父类的所有属性和方法,包括私有属性,只是因为访
问权限的问题不能直接访问。可以间接访问get、set方法访问。
5 - 一个类可以被多个类继承
6 - java中的继承是单继承,即只能有一个父类,但子类下可以再有
子类,所有就有了间接继承和直接继承。
7 - 子类继承了父类后就可以获取到直接父类和间接父类的所有属性
和方法
5、java.lang.object的说明
是所有Java类的父类,所有子类都从object继承而来
6、static关键字可以修饰什么,如何理解static关键字
修饰类的属性和方法,类存在static就存在
7、abstract可以修饰什么、如何理解abstract
可以修饰对象的属性和方法,abstract必须被继承,不能被实例化
8、手写单例设计模式(两种方式)
单例模式基本实现
public class Singleton {
private Singleton(){
System.out.println("Singleton is create");
}
private static Singleton instance = new Singleton();
public static Singleton getInsatnce(){
return instance;
}
}
首先单例类必须要有一个 private 访问级别的构造函数,只有这样,才能确保单例不会在系统中的其他代码内被实例化,;其次,instance 成员变量和 getInstance 方法必须是 static 的。
上述代码唯一的不足是无法对 instance 实例做延时加载,例如单例的创建过程很慢,而由于 instance 成员变量是 static 定义的,因此在 JVM 加载单例类时,单例对象就会被建立,如果此时这个单例类在系统中还扮演其他角色,那么在任何使用这个单例类的地方都会初始化这个单例变量,而不管是否会被用到。
延迟加载的单例模式代码
public class LazySingleton {
private LazySingleton(){
System.out.println("LazySingleton is create");
}
private static LazySingleton instance = null;
public static synchronized LazySingleton getInstance(){
if(instance == null){
instance = new LazySingleton();
}
return instance;
}
public static void createString(){
System.out.println("create String");
}
public static void main(String[] args){
LazySingleton.createString();
}
}
9、static修饰的方法是否可以使用this和super关键字?为什么?
这里就引入了另外一个知识点,static修饰的方法内部是不允许出现非静态成员变量或成员方法,即static修饰的方法与该类相关,但是不跟该类的具体实例相关(具体可参考),而this(即对象)是具体类的对象实例,
this表示这个类的当前实例,super表示父类的当前实例,static是属于类的,this是类的一个对象,当然调用了不了他,static只有类名可以调用它,static叫静态方法,也叫类方法,就是在程序启动的时候,就会为这个方法分配一块内存空间,所以什么时候都可以调用这个方法。所以,静态方法里不能调用非静态方法,除非你先实例化那个类。如果在static修饰的方法中使用this关键字,而这个关键字就无法指向合适的对象;所以我们也说,静态成员不能直接访问非静态成员;
10.谈谈你对多态的理解
多态是同一父类,不同的实例化可以有不同的属性和行为
11.实现多态的思路?
继承,重写,向上转型(子类转父类)
12.基本类型和引用类型转换的方式? 不同引用类型如何转换?
基本类型通过自动转换,强制转换实现,不同引用类型强制转换(子父类,instanceof判断)但要明确转换过后的范围要比转换之前的范围大
13.重写和重载的区别?
重写是继承之后子类重写父类方法或属性,重载是同一类中构造方法传入不同的参数,形成不同的方法
14、写出“==”和equals的区别
是逻辑运算符,equals()是方法,在object类中equals使用的就是判断,String,failed和Date重写了equals方法,
15、写出8中基本数据类型的包装类
byte int short long char double boolean float
Byte Integer Short Long Character Double Boolean Float
16、字符串如何转换为包装类、基本类型?举例说明
字符串转换为包装类
通过包装类
的.pase静态方法
字符串转换为基本类型
Integer sr=(Integer)“a”;
int sr;
17、基本类型,包装类如何转换为字符串?举例说明
基本类型加空字符串
String sr=12+"";
包装类先转换
调用包装类的Value()方法
18、你所知道的哪些类重写了toString和equals方法。
toString 和equals在file,string,Date
19、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)
接口可以被继承,抽象类可以实现接口,抽象类可以继承实体类
20、抽象类和接口有哪些共同点和区别?
共同点:抽象类和接口都需要被重写;
区别:抽象类中方法体可以被具体实现,只能有一个父类,一个类可以实现多个接口,
21、谈谈你对面向接口编程的两种方式的理解?
面向接口可以类似于多态,
关心类有何能力而不关心接口实现细节
面向接口约定而不考虑具体实现
22 、instance是声明接口的关键字,可以把它看成一个特殊类。接口中的数据成员默认的修饰符是private static final,接口中的成员方法默认的修饰符是static。
23、java中集合框架的体系结构?
collection ------>list,set------>arrylist,kinderlist,
24、Collection接口中的常用方法?(>=10个)
add,remove,addall,removeall,set,get,clean, size, hashcode,
25、使用迭代器遍历集合。(示例代码)
iterator
Iterator iterator = coll.iterator();
while(coll.iterator()hasNext()){
system.out.println(coll.iterator()Next());
}
26、List集合的常见实现类及特点(面试内容)
arrylist,有序可重复
kinderlist,双向链表,增加删除很方便
vector古老
27、set集合的实现类和特点
hashset高效不重复、linkedhashset链表结构
treeset红黑树模型
28、map集合的实现类和特点
map集合实现类hashmap存取高效,线程安全
treemap搜索高效
29、map集合的常用方法和迭代方式
map集合常用get,hashcode,isEmpty,clean,size,put,putall
迭代方式、获取entryset方式、for——entry循环方式(类型 输出元素:集合)、迭代器取得key通过遍历key获取value
###30、如何理解字符串的不可变性?
字符串String被定义为final类型实例化对象不可修改相同对象内容在静态区存储
31、String str = “abc” 和 new String(“abc”)区别?
区别在于前者定义str变量,后者新建String对象,但二者存储内容相同都在静态区
32、String s = new String(“xyz”);创建了几个String Object?
两个,一个创建String对象另一个创建String变量
33、JAVA语言如何进行异常处理,关键字
Exception
try{
异常可能出现的内容
}
catch(exception e){
对异常的处理
}
finally{
总是会执行
}
2、throws 和throw的区别
throws用来声明一个方法可能抛出的各种异常,可能出现的异常不一定出现
一般情况下是用try来执行一段程序,如果系统会抛出(throw)一个异常对象,可以通过它的类型来捕获(catch)它,或通过总是执行代码块(finally)来处理
3、常见的异常有哪些
ioexception;
filenotFoundException;
nullprinterException;
arryindexoutofboundsexception;
classcastException;
negativearryexception;
secturityexception;
eofexception;
已知有下列Test类的说明,则下列哪个语句是正确的?(_______ )
public class Test
{
private float f = 1.0f;
int m = 12;
static int n=1;
public static void main(String args[]){
Test t = new Test();
}
}
A)t.f;f 虽然是 Test 类的私有成员属性,但因为 main 方法就在 Test 类内,因此可以通过 “对象名.属性名” 的方式调用,所以 A 对。
B)this.n;static 静态成员属性不能使用 this 关键字调用,B 错
this是指向对象的的引用,而静态方法在类加载的时候创建加载,此时没有创建对象。
C)Test.m;m 和 f 都是普通成员属性,而 “类名.” 方式只能调用 静态成员属性,因此 C 和 D 都错。
D)Test.f;
##substring为左闭右开。
string.substring(from):此时相当于从from位置截取到原字符串末尾
1、String.substr( ):作用也是抽去一个子串,但是它和上面的String.substring( )有所不同
用法如下:string.substr(start, length)
start:指代截取子串开始下标
length:截取子串的长度(可省略)
Substr补充两种特殊情况:
a、第二个参数超过了剩余字符长度,这种情况下默认从,start位置到原字符串末尾,即返回:"ello"
b、第一个参数为负数
这种情况,从字符串尾部开始计算,-1指字符串最后一个字符,-2指倒数第二个字符...依次类推
2、String.substr(start):不带length参数,默认指代从start位置截取到字符串末尾
下列整型的最终属性 i 的定义中,正确的是(_B )。
A) static final int i=100; B) final i;
C) static int i; D) final float i=1.2f;
题目要点:
一:整形
二:最终属性(final)
三:定义,而不只是声明
给定下列表达式
Integer I= new Integer(42);
Long L= new Long(42);
Double D= new Double(42.0);
则下列表达式输出为true的是__D___
(A) (I==L) (B) (I==D) (C) (D==L) (D) (I.equals (D))
此处无正确答案
ABC不同类型使用 == 编译出错
D中包装类使用equals会先判断是否instance,不是的话直接返回false
(用instanceof判断传入的对象和this是不是一个类的对象)
给定下列代码:
class Temp
{
static String test[]=new String[10];
public static void main(String a[])
{
System.out.println(test[0]);
}
}
下列说法正确的有( )。
A 编译时将发生错误
B 编译时正确但是运行时出错
C 输出为0。
D 输出为null。 \/
下列程序代码片断执行后的结果是( )。
String str=new String("Hello");
str="World";
System.out.println(str);
A Hello
B World \/
C Hello World
D 编译错误
定义字符串:String str="abcdefg";则str.indexOf('d')的结果是( )。
A 'd'
B true
C 3 \/
D 4
以下语句输出的结果是( )。
String str="123";
int x=4,y=5;
Str=str+x+y;
System.out.println(str);
A 1239
B 12345 \/
C 会产生编译错误
D 123+4+5
一个可直接运行的Java源文件中只能有一个且和文件同名的public类。
为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类名AB作为前缀就可以调用它,该方法头的形式为( )
A static void method( ) \/
B public void method( )
C final void method( )
D abstract void method( )
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)