以下是笔者认为比较经典的关于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 方法面试题的更多相关文章

  1. 10个经典的Java main 方法面试题

    1. 不用main方法如何定义一个类? 不行,没有main方法不能运行Java类. 在Java 7之前,你可以通过使用静态初始化运行Java类.但是,从Java 7 开始就不行了. 2. main() ...

  2. 10个经典的Java面试题

    这里有10个经典的Java面试题,也为大家列出了答案.这是Java开发人员面试经常容易遇到的问题,相信你了解和掌握之后一定会有所提高.让我们一起来看看吧. 1.Java的HashMap是如何工作的? ...

  3. 10个经典的Java面试题集合

    这里有10个经典的Java面试题,也为大家列出了答案.这是Java开发人员面试经常容易遇到的问题,相信你了解和掌握之后一定会有所提高.让我们一起来看看吧. 1.Java的HashMap是如何工作的? ...

  4. mysql的sql语句优化方法面试题总结

    mysql的sql语句优化方法面试题总结 不要写一些没有意义的查询,如需要生成一个空表结构: select col1,col2 into #t from t where 1=0 这类代码不会返回任何结 ...

  5. Java main方法全解

    1.main方法的重载 package cn.nxl2018; public class Main_test { public static void main(String args[]) { Sy ...

  6. 10个经典的Java面试题集合(转载)

    1.Java的HashMap是如何工作的? HashMap是一个针对数据结构的键值,每个键都会有相应的值,关键是识别这样的值. HashMap 基于 hashing 原理,我们通过 put ()和 g ...

  7. 40道Java初中级算法面试题

    [程序1]   题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析:   兔子的规律为数 ...

  8. 100多道经典的JAVA面试题及答案解析

    面向对象编程(OOP) Java是一个支持并发.基于类和面向对象的计算机编程语言.下面列出了面向对象软件开发的优点: 代码开发模块化,更易维护和修改. 代码复用. 增强代码的可靠性和灵活性. 增加代码 ...

  9. 经典的Java基础面试题集锦

    经典的Java基础面试题集锦,欢迎收藏和分享. 问题:如果main方法被声明为private会怎样? 答案:能正常编译,但运行的时候会提示”main方法不是public的”. 问题:Java里的传引用 ...

随机推荐

  1. 数据库(学习整理)----2--关于Oracle用户权限的授权和收权

    知识点: 1.Oracle数据库中所用的用户等级是平级的!只是每个用户的权限不同而已! 2.在一个用户登录后,可以在自己的登录状态下访问其他用户的数据缓冲区.表.以及表的操作!(只要该用户用权限!) ...

  2. Spring Security Encryption三种加密方式

    Encryption One-way encryption       单项加密,客户端将要传递的值先加密(使用特定的加密方法),将原值和加密好的值传递过去,服务器端将原始数据也进行一次加密(两者加密 ...

  3. php利用时间生成随机函数

    date("YmdHis",time()); rand();    生成随机数   当括号内无参数时 系统会以当前时间为种子进行随机数的生成 rand(1,10);  括号里面是生 ...

  4. php 之 json格式

    /*JSON语法数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组 JSON 数据的书写格式是:名称/值对名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值;如"myw ...

  5. struts2 package元素

    <package../>元素         name         必选    包名         extends     可选    继承         namespace    ...

  6. php 扩展编译linux

    进入扩展库目录:$cd phpredis-master 需要root权限执行 执行:$ phpize 执行:$ ./configure 执行:$ make 执行:$ make install   编译 ...

  7. ASP.NET 后台不识别ASPX中的控件

    请问后台不识别ASPX中的控件,怎么解决 这个程序是在网上下载的 C# code <asp:DataGrid runat="server" ID="dgList1& ...

  8. QFTP走了以后QNetworkAccessManager出现了

    QNetworkAccessManager Class Header:    #include <QNetworkAccessManager>qmake:     QT += networ ...

  9. applicationContext.xml详解 spring+mybatis+struts

    今天给大家详细解释一项关于Spring的applicationContext.xml文件,这对于初学者来说,应该是很有帮助的, 以下是详解Spring的applicationContext.xml文件 ...

  10. 当今流行的 React.js 适用于怎样的 Web App?

    外村 和仁(株式会社 ピクセルグリッド)  React.js是什么? React.js是Facebook开发的框架. http://facebook.github.io/react/ 官网上的描述是「 ...