10个经典的 Java main 方法面试题
以下是笔者认为比较经典的关于Java main方法的面试题,与其说是Java面试题,其实也是Java的一些最基础知识问题,分享给大家,如有错误,请指出。 1.不用main方法如何定义一个类? 不行,没有main方法我们不能运行Java类。 在Java 7之前,你可以通过使用静态初始化运行Java类。但是,从Java 7开始就行不通了。 2.main()方法需要的参数不是字符串数组? 不是的,main()方法的参数必须是字符串数组。 但是,在引进变参时,你可以将字符串类型的变参作为参数传递给main()方法。变参一定得是数组。 package com.instanceofjava; public class MainMethod { public static void main(String args[]) { } } 3.我们能不能改变main()方法的返回类型? 不能,main()方法的返回类型只能是空。任何其它类型都是不能接受的。 package com.instanceofjava; public class A { public static int main(String[] args) { return 1; //run time error : No main method found } } 4.main()方法为什么必须是静态的? main()方法一定是静态的。 如果main()允许是非静态的,那么在调用main方法时,JVM就得实例化它的类。 在实例化时,还得调用类的构造函数。如果这个类的构造函数有参数,那么届时就会出现歧义。 例如,在下面的程序中,在实例化类“A”的时候,JVM传递什么参数? package com.instanceofjava; public class A { public MainMethod(int i) { //Constructor taking one argument } public void main(String[] args) { //main method as non-static } 5.我们能不能声明main()方法为非静态? 不能,main()方法必须声明为静态的,这样JVM才可以调用main()方法而无需实例化它的类。 如果从main()方法去掉“static”这个声明,虽然编译依然可以成功,但在运行时会导致程序失败。 package com.instanceofjava; public class A { public void main(String[] args) { System.out.println("indhu"); //Run time error } } 6.我们能否重载main()方法? 可以,我们可以重载main()方法。一个Java类可以有任意数量的main()方法。 为了运行java类,类的main()方法应该有例如“public static void main(String[] args)”的声明。如果你对此声明做任何修改,编译也是可以成功的。但是,运行不了Java程序。你会得到运行时错误,因为找不到main方法。 package com.instanceofjava; public class A { public static void main(String[] args) { System.out.println("Indhu"); } void main(int args) { System.out.println("Sindhu"); } long main(int i, long d) { System.out.println("Saidesh"); return d; } } 7.我们能否声明main()方法为private或protected,或者不用访问修饰符? 不能,main()方法必须public。你不能定义main()方法为private和protected,也不能不用访问修饰符。 这是为了能让JVM访问main()方法。如果你不定义main()方法为public,虽然编译也会成功,但你会得到运行时错误,因为找不到main方法。 package com.instanceofjava; public class A { private static void main(String[] args) { //Run time error } } 8.我们能否在Java中覆盖main方法? 不能,你不能在Java中覆盖main方法。这是因为main方法是静态方法,而在Java中静态方法在编译时会结合在一起,所以你在Java中不能覆盖静态方法。 9.我们能否在Java中终结main方法? 你可以在Java中终结main方法。JVM对此没问题。 10.我们能否在Java中同步main方法? 是的,main方法可以在Java中同步,synchronized修饰符允许用于main方法的声明中,这样就可以在Java中同步main方法了。 译文链接:http://www.codeceo.com/article/10-java-main-interview.html 英文原文:Java Interview Questions On main() Method 翻译作者:码农网 – 小峰
作者: GD_SeHun
链接:http://www.imooc.com/article/3522
来源:慕课网
10个经典的 Java main 方法面试题的更多相关文章
- 10个经典的Java main 方法面试题
1. 不用main方法如何定义一个类? 不行,没有main方法不能运行Java类. 在Java 7之前,你可以通过使用静态初始化运行Java类.但是,从Java 7 开始就不行了. 2. main() ...
- 10个经典的Java面试题
这里有10个经典的Java面试题,也为大家列出了答案.这是Java开发人员面试经常容易遇到的问题,相信你了解和掌握之后一定会有所提高.让我们一起来看看吧. 1.Java的HashMap是如何工作的? ...
- 10个经典的Java面试题集合
这里有10个经典的Java面试题,也为大家列出了答案.这是Java开发人员面试经常容易遇到的问题,相信你了解和掌握之后一定会有所提高.让我们一起来看看吧. 1.Java的HashMap是如何工作的? ...
- mysql的sql语句优化方法面试题总结
mysql的sql语句优化方法面试题总结 不要写一些没有意义的查询,如需要生成一个空表结构: select col1,col2 into #t from t where 1=0 这类代码不会返回任何结 ...
- Java main方法全解
1.main方法的重载 package cn.nxl2018; public class Main_test { public static void main(String args[]) { Sy ...
- 10个经典的Java面试题集合(转载)
1.Java的HashMap是如何工作的? HashMap是一个针对数据结构的键值,每个键都会有相应的值,关键是识别这样的值. HashMap 基于 hashing 原理,我们通过 put ()和 g ...
- 40道Java初中级算法面试题
[程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析: 兔子的规律为数 ...
- 100多道经典的JAVA面试题及答案解析
面向对象编程(OOP) Java是一个支持并发.基于类和面向对象的计算机编程语言.下面列出了面向对象软件开发的优点: 代码开发模块化,更易维护和修改. 代码复用. 增强代码的可靠性和灵活性. 增加代码 ...
- 经典的Java基础面试题集锦
经典的Java基础面试题集锦,欢迎收藏和分享. 问题:如果main方法被声明为private会怎样? 答案:能正常编译,但运行的时候会提示”main方法不是public的”. 问题:Java里的传引用 ...
随机推荐
- EL标签和JSTL标签---JSP页面的应用
====EL(Expression Language)表达式语言:用于计算和输出存储在标志位置(page.request.session.application)的java对象的值: 1.开启和关闭E ...
- PLSQL常用时间函数
body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI ...
- Net的struct的内存对齐问题
很少有人谈起struct的内存对齐问题, 就是在很多C#书中, 也很少提及. 但在实际应用中, 如果不注意内存对齐, struct比较大的话, 则会浪费一定的内存. 先从一个实例看起. publ ...
- qrcode.js插件将你的内容转换成二维码格式
---qrcode.js插件将你的内容转换成二维码格式--- 我之前一直想知道二维码是怎么生成,所以就了解了一下, 最后还是不知道它的原理, 但是,我知道怎么生成. 现在就让我带你制作一个你喜爱的二维 ...
- 开发语言大PK:php和Java哪个更好?
Java通过jdbc来访问数据库,通过不同的数据库厂商提供的数据库驱动方便地访问数据库.访问数据库的接口比较统一. PHP对于不同的数据库采用不同的数据库访问接口,所以数据库访问代码的通用性不强.例如 ...
- CSS2简写代码(优化)
[1]如果CSS属性值为0,那么你不必为其添加单位(如:px/em): 下面是你可能的写法: padding: 10px 5px 0px 0px; 但是你可能这样写: padding: 10px 5p ...
- C# 仿迅雷风格选项卡
private void listView1_SelectedIndexChanged(object sender, EventArgs e) { listView1.FullRowSelect = ...
- (转) 关于成为linux运维工程师需要掌握的技能
曾经在一年多前写了一篇关于要成为linux运维需要掌握哪些技能和工具的贴子,然后不小心被好几个网友抄袭转发到其它网站上,当然有些是认识的,最后还很幸运地被某些热心的学习者把那段内容剪下来当作圣经般的参 ...
- Mac下修改Mysql密码
1. 停止Mysql 2. cd /usr/local/mysql/bin/ 3. 使用跳过权限方式启动mysql sudo ./mysqld_safe --skip-grant-tables &am ...
- JavaService wrapper
http://my.oschina.net/yjwxh/blog/260835 http://blog.chinaunix.net/uid-664509-id-3398193.html http:// ...