Java基础50问与答

来源:互联网 发布:js格式化代码插件 编辑:程序博客网 时间:2024/06/06 00:26
1、什么是面向对象?什么是面向过程?
面向对象:最小单元应该是类
最小单元是方法,由方法组成的程序


2、什么是面向对象的三大特征?
封装,继承,多态
private  extends  父类的变量接收子类对象


3、在Java中是否可以直接访问类?为什么?
类是不能直接访问的,但是可以获取对象,根据对象来运行类中方法等。
静态属性,可以没有对象的基础上,直接调用类的静态属性和静态方法。

4、成员变量和局部变量是否可以默认初始化?不同类型的变量默认初始化的值是什么?
成员变量可以
局部变量不可以默认初始化,必须显式的赋值


int   0
byte  0
short 0
long  0L
float  0.0F
double 0.0


char    \u0000  ''
boolean  false


引用(String ,数组,对象) null


-------------------------------------------


5、局部变量的赋值不一定非要在声明变量时进行,只要在调用变量前完成就可以,这句话对么?
对  int i;  i=100;  System.out.println(i);


6、this关键字在什么情况下使用?
当在一个方法内部、局部变量和成员变量发生命名的冲突的时候,使用this,代表类所产生的对象


7、包有什么作用?
多人开发,避免类名的冲突的解决机制


package  打包


import   导包


8、什么是静态引入?
可以再导入包的时候将某一个类中所有的static的成员一次性引入。可以在调用的静态的方法和属性,不需要类名


import static 包.类.*;


9、类有几种访问你权限?成员变量和方法有几种访问权限?分别代表什么含义?

类有两种 public  默认


成员属性和方法有 4种


public


protected


默认


private


10、一个文件中是否可以有多个类? 可以,但是实际开发的时候,不建议
    一个文件中是否可以有多个public类?不可以,一个文件有且只能有一个public类
    文件名是否可以和类名不一致? 可以
    声明包的语句是否必须放在程序的第一句?是
    导入包的语句是否可以放在第一句?先打包,在导包




11、在封装时?访问器是否必须叫做set<成员变量>和get<成员变量> 对


12、final类型的非静态成员变量一旦初始化就不能修改吗?  
final 表示最终的


13、final类型的非静态成员引用变量一旦初始化后,就意味着指向的对象内容不能改变,这句话对么?




14、类的成员包括哪几种?


属性 方法 代码块 内部类


代码块(很少):静态的代码块(绝大多数,给静态属性变量赋值);


代码块在编译的时候只会执行一次。


static{





}


15、final类型的非静态成员变量的初始化在什么时候进行?
有两种:
定义常量的时候初始化


通过构造函数初始化


16、static类型的成员变量初始化在对象产生之前进行,对吗?



17、静态成员的调用有几种方法?建议是用哪种方法?

两种


一种:通过类名调用(推荐)


另一种:通过引用调用(不推荐)


18、静态方法是否可以直接访问非静态成员?不行


19、非静态方法中是否可以直接访问静态成员?


可以


20、final和static是否可以一起使用?


可以,如果是常量的话,建议这么使用


21、静态的最终变量是否可以默认初始化?


final static int i; 错的




22、方法中是否可以声明静态变量? 绝对不可以




23、Java中所有的类都直接或间接继承自Object类,这句话对么?


是的




24、子类只能有一个父类,但是一个类可以有多个子类,这句话对吗?  对


25、是不是所有的成员变量都可以被继承?请列举所有可能发生的情况。


private  不可以


final   变量:不可以改
方法:不可以重写
类 :继承


protected  可以


默认:可以


public 可以


static 可以


26、成员变量是否可以被重写?重写和隐藏有什么区别?方法是否可以被重写?方法是否可以被隐藏?


变量 不能被重写


方法可以被重写

27、是不是只有具有继承关系的两个引用变量才可以进行比较?
是(后续讲)


28、重写方法时返回值类型是否必须一致?
静态方法没有重写
不一定要一致,返回的是父子类的关系。jdk5.0


29、重写方法时访问权限是否必须一致?


大于等于


30、静态方法是否可以被继承?


可以


31、静态方法是否可以被重写? 


静态方法不可以被重写


32、重载的方法参数列表不相同,但是返回值类型和访问权限可以相同也可以不相同,这句话对吗?




33、final修饰类、属性和方法分别代表什么含义?


final修饰类 不能继承


    属性   不能被修改


    方法   不能被重写


34、final的方法不能被继承,这句话对吗?错的


35、属性是否可以加上abstract关键字?

abstract只能修饰方法和类


36、final和abstract是否可以同时使用? 不可以


37、private和abstract是否可以同时使用? 不可以


private修饰的方法和属性是不能子类继承




38、抽象方法必须在子类中实现,这句话对吗?
不一定,


39、接口可以多实现,对吗? 对


40、接口中只能包含常量属性,不能有变量属性,对吗?为什么?对,变量属性在对象


41、接口中的方法可以有静态方法,也可以有最终方法,这句话对吗?为什么?
接口只能有抽象。


42、接口中的方法必须是public的,对吗?对的


43、instanceof有什么作用?
可以判断变量是哪个类的对象


44、构造器有几种访问权限?构造器的访问权限是否必须和类保持一致?
public 默认 protected private


private的单例模式的时候才会使用

45、构造器可以有返回值,对吗?
 没有


46、构造器是否可以是private的? 
    单例模式下可以使用private修饰构造器


47、每一个类都要有构造器,对吗?
必须要有的


48、如果子类构造器没有显示调用父类构造器,则默认在子类每一个构造器的第一句会调用父类的无参构造器,对吗?
不一定






49、自己编写的调用父类构造器的代码必须在子类构造器的第一句,对吗?super()  


50、请描述Java程序的加载过程。
    静态属性
    静态语句块
    类属性
    语句块
    构造器
    请按照初始化的先后顺序排序。


打印下面代码就可以验证答案:
class A
{
A(){System.out.println("静态A属性被创建");}
};


class B
{
B(){System.out.println("B被创建");}


};


class C 
{


public static A a=new A(); // 静态属性


public B b=new B(); // 非静态属性


static{ // 静态语句块


System.out.println("静态语句块");
}


{ // 非静态语句块


System.out.println("非静态语句块");
}


C(){  // 构造器


System.out.println("构造器");
}


public static void main(String[] args){


C c=new C();


}
};





0 0