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(); //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();
}
void main(int args)
{
System.out.println();
}
long main(int i, long d)
{
System.out.println();
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方法了。

Java基础学习总结(78)——Java main方法深入研究学习的更多相关文章

  1. java基础笔记(三)——main方法

    1.解析public static void main(String[] args)方法 JVM在运行程序时,会首先查找main()方法作为入口,main是JVM识别的特殊方法名. public是权限 ...

  2. 【Java基础】11、java方法中只有值传递,没有引用传递

    public class Example { String testString = new String("good"); char[] testCharArray = {'a' ...

  3. java 执行 jar 包中的 main 方法

    java 执行 jar 包中的 main 方法 通过 OneJar 或 Maven 打包后 jar 文件,用命令: java -jar ****.jar执行后总是运行指定的主方法,如果 jar 中有多 ...

  4. Java基础系列-equals方法和hashCode方法

    原创文章,转载请标注出处:<Java基础系列-equals方法和hashCode方法> 概述         equals方法和hashCode方法都是有Object类定义的. publi ...

  5. 【Java基础】4、java中的内部类

    内部类的分类:常规内部类.静态内部类.私有内部类.局部内部类.匿名内部类. 实例1:常规内部类 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2 ...

  6. Java基础系列1:Java基本类型与封装类型

    Java基础系列1:Java基本类型与封装类型 当初学习计算机的时候,教科书中对程序的定义是:程序=数据结构+算法,Java基础系列第一篇就聊聊Java中的数据类型. 本篇聊Java数据类型主要包括两 ...

  7. java基础知识回顾之---java String final类普通方法

    辞职了,最近一段时间在找工作,把在大二的时候学习java基础知识回顾下,拿出来跟大家分享,如果有问题,欢迎大家的指正. /*     * 按照面向对象的思想对字符串进行功能分类.     *      ...

  8. java基础(十六)----- equals()与hashCode()方法详解 —— 面试必问

    本文将详解 equals()与hashCode()方法 概述 java.lang.Object类中有两个非常重要的方法: public boolean equals(Object obj) publi ...

  9. java基础知识回顾之java Thread类学习(八)--java多线程通信等待唤醒机制经典应用(生产者消费者)

     *java多线程--等待唤醒机制:经典的体现"生产者和消费者模型 *对于此模型,应该明确以下几点: *1.生产者仅仅在仓库未满的时候生产,仓库满了则停止生产. *2.消费者仅仅在有产品的时 ...

随机推荐

  1. (转载)基于React与Vue后,移动开源项目Weex如何定义未来

    https://www.ctolib.com/topics-106347.html vuejs+ts+webpack2框架的项目实践 https://mp.weixin.qq.com/s/p2Uc9I ...

  2. 0621补-MVC的基础整理

    包括:Model-模型.view-视图.Controller-控制器. 特点: 将功能强制分成两个部分,显示html文件,和逻辑PHP文件: 要求浏览器请求负责功能的PHP逻辑文件,该PHP逻辑文件, ...

  3. 台哥原创:java 连连看源码

    2010年,迷上了玩连连看 随手就做了这个,正好手头有这些图片素材 ​ 游戏启动时,界面先铺上了一层透明幕布,然后这些兵器图片交替从上到下,从左到右出现.. ​ 鼠标停在兵器格子上时,所在格子会有红色 ...

  4. python re的使用

    re 正则表达式操作  本模块提供了类似于Perl的正则表达式匹配操作.要匹配的模式和字符串可以是Unicode字符串以及8位字符串. 正则表达式使用反斜杠字符('\')来表示特殊的形式或者来允许使用 ...

  5. 二分查找 HDOJ 2141 Can you find it?

    题目传送门 /* 题意:给出一个数,问是否有ai + bj + ck == x 二分查找:首先计算sum[l] = a[i] + b[j],对于q,枚举ck,查找是否有sum + ck == x */ ...

  6. {Python}安装第三方包(setup.py)

    在github上下载了records文件到本地. 解压文件 cmd切换到文件setup.py的目录下 先执行 python setup.py build 再执行python setup.py inst ...

  7. Geoserver常见问题总结

    原文地址 :http://blog.csdn.net/mygisforum/article/details/8249093 http://www.cnblogs.com/wang985850293/p ...

  8. 数据采集框架Gobblin简介

    问题导读: Gobblin的架构设计是怎样的? Gobblin拥有哪些组建,如何实现可扩展? Gobblin采集执行流程的过程? 前面我们介绍Gobblin是用来整合各种数据源的通用型ETL框架,在某 ...

  9. js操作元素透明度以及浏览器兼容性

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...

  10. 通过机智云APP来学习安卓

    效果非常之好,安卓6.0之后就进行了动态授权.按照网上的视频一步一步调试的非常成功,非常舒服.