java面试宝典基础知识总结day01

1、java和c++有什么不同?
2、main()方法是否只有一种定义格式?
3、一个.java文件中是否可以有多个main()方法?
4、如何实现在main()方法执行前输出"Hello world!"?
5、java程序初始化工作可以在许多不同的代码块中完成,例如静态代码块、构造函数等等,那么它们的执行顺序是怎样的?(考虑存在继承关系的情况)
6、public、protected、default、private修饰成员变量时,它们的作用域分别是什么?
7、有哪些修饰符可以用来修饰类?
8、一个java文件中是否可以定义多个类?
9、构造函数的作用是什么?在定义时需要注意哪些?
10、普通方法是否可以与构造函数同名?

参考回答:
1、(1) java是完全面向对象的语言,c++既包含面向对象的特点,还具有面向过程的特征。
(2) java是解释性语言,源代码经过编译后生成字节码,然后由jvm解释执行,因此java是一门跨平台的语言;c++是编译型语言,源代码经过编译之后直接生成二进制代码(机器码),所以c++的运行速度更快些。
(3) c++支持多重继承,java则不支持,但它引入了接口的概念,通过多实现接口可达到类似的效果。
(4) java中去除了c++中指针的概念,避免了指针操作不当可能引起的一些问题,例如:内存泄露。
(5) java提供了垃圾自动回收机制,不需要开发人员显式地管理内存分配(包括申请与释放)。
(6) c++支持运算符重载,java不支持。
(7) c++支持预处理,java不支持,它通过import机制实现类似的作用。
2、否。还有例如以下的表示形式:
static public void main(String[] args)
public static final void main(String[] args)
public static synchronized void main(String[] args)
3、可以。因为一个.java文件中可以定义多个类,每个类中都可以定义一个main()方法,但是只有与文件名相同用public修饰的类中的main()方法才能作为整个程序的入口函数。
4、可以定义一个静态代码块,并在代码块中实现输出该字符串的功能。这是因为静态代码块在类被加载时就会被调用,因此先于main函数执行,且无论它的位置处在main方法的前还是后。
5、执行顺序为:父类静态变量、父类静态代码块、子类静态变量、子类静态代码块、父类非静态变量、父类非静态代码块、父类构造函数、子类非静态变量、子类非静态代码块、子类构造函数。
这是因为在java语言中。当实例化对象时,对象所在类的成员变量要最先被初始化,而且静态要优先于非静态,父类要优先于子类。
6、
当前类 同一package 子类 其他package
public 可以 可以 可以 可以
protected 可以 可以 可以 不可以
default 可以 可以 不可以 不可以
private 可以 不可以 不可以 不可以
注意:父类中用protected修饰的成员,对于在其他包中的子类也是可见的
若子类与父类在同一包中,则子类对父类中的default成员是有访问权限的;若不在同一包中,则没有访问权限。
7、只有public、abstract、final可以修饰类。
8、可以,但是最多只能有一个类被public修饰,且该类名与文件名相同。
9、构造函数主要用于在实例化对象时对成员变量进行初始化。
注意:构造函数不能被重写,可以被重载;
构造函数在实例化对象时由系统自动调用,且只运行一次;
子类可以通过super关键字来显式的调用父类的构造函数,并且当父类没有提供无参构造函数时,子类构造函数中必须显式的调用父类的构造函数。
默认构造函数的修饰符与其所在类的修饰符一致。
10、可以。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值