目录:
6.使用 final 关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?
使用 final 关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改变的。例如,对于如这语句:final StringBuffer a=new StringBuffer("immutable");
执行如这语句将报告编译期错误:a=new StringBuffer("");
但是,执行如这语句则可以通过编译:a.append(" broken!");
final关键字的作用:
修饰类:不能被继承
修饰方法:引用的指向不能发生改变,引用指向对象可以
修饰变量:不能被重写
7."=="和 equals 方法究竟有什么区别?
==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类 ,型的数据或两个引用变量是否相等,只能用==操作符
equals 方法是用于比较两个独立对象的内容是否相同,就好比去比较两个人的长相是否相同,它比较的两个对象是独立的。例如, 对于下面的代码:
8.静态变量和实例变量的区别?
9.Integer 与 int 的区别?
1.Integer是int的包装类,int则是java的一种基本数据类型
2.Integer变量必须实例化才能使用,int变量不需要实例化
3.Integer的默认值是null,而int的默认值是0
4.Integer实际是一个对象的引用,当new一个Integer对象时,实际是生成一个指针指向该对象,而int是基本数据类型,直接存储数值
10.作用域 public,private,protected,以及不写时的区别
作用域
|
当前类
|
同一
package
|
子孙类
|
其他
package
|
public
|
√
|
√
|
√
|
√
|
protected
|
√
|
√
|
√
|
×
|
friendly
|
√
|
√
|
×
|
×
|
private
|
√
|
×
|
×
|
×
|
11.Overload 和 Override 的区别。Overloaded 的方法是否可以改变返回值的类型?
12.构造器 Constructor 是否可被 override?
“Constructor不能被继承,所以Constructor也就不能被override。每一个类必须有自己的构造函数,负责构造自己这部分的构造。子类不会覆盖父类的构造函数,相反必须负责在一开始调用父类的构造函数。”
13.面向对象的特征有哪些方面
面向对象,重写与重载
特点:封装:就是类的私有化。将代码及处理数据绑定在一起的一种编程机制,该机制保证程序 和数据不受外部干扰。
继承:就是保留父类的属性,开扩新的东西。通过子类可以实现继承,子类继承父类的所 有状态和行为,同时添加自身的状态和行为。
多态:是允许将父对象设置成为和一个和多个它的子对象相等的技术。包括重载和重写。 重载为编译时多态,重写是运行时多态。
列如:
class Animal{
public void eat(){
System.out.println("很多行,吃肉.....");
}
}
class laohu extends Animal{
public void eat(){
System.out.println("猛虎吃肉");
}
}
class long extends Animal{
public void eat(){
System.out.println("狼吃素");
}
}
14.abstract class 和 interface 有什么区别?
abstractclass在Java语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface。
如:
interface Father{
}
interface Mum{
}
class sonl implements Father,Mum{
}
abstract classAA{
void a(){
}
abstract void b();
}
interface BB{
abstract void a();
}
抽象类与接口:抽象类:单继承,可以有抽象方法也可以有具体实现的非抽象方法。
接口:多实现,只能由抽象方法。
15.String 是最基本的数据类型吗?