精华内容
下载资源
问答
  • 因为main()方法是由Java虚拟机调用的,所以必须public,虚拟机调用的main()方法的时候,不需要产生任何对象,所以main()方法声明static,且不需要返回值,所以必须声明void! 类可以用public

    在java中,main()方法是java应用程序的入口方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法,这个方法和其他的方法有很大的不同,比如方法的名字必须是main,方法必须是public static void类型的,方法必须是接受一个字符串数组的参数等。
    因为main()方法是由Java虚拟机调用的,所以必须是public,虚拟机调用的main()方法的时候,不需要产生任何对象,所以main()方法声明为static,且不需要返回值,所以必须声明为void!
    类可以用public,abstract,final来定义,分别是:公共的,抽象的,最终的.
    public:类只能被同一个源程序文件或同一个包中的其他类使用.
    abstract:定义的类代表了一个抽象的概念,就不能用它来实例化一个对象.
    final:不可能有子类.也就是说它不能被继承.可以提高系统的安全性.

    展开全文
  • Java文件的命名,Java主类Java中的public

    千次阅读 多人点赞 2019-07-16 11:37:07
    编译和运行 Java 程序 HelloWorld.java 文件: // HelloWorld.java public class HelloWorld{ public static void main(String[] args){ System.out.println("Hello World!"); } } 运行该命令后会生成...

    编译和运行 Java 程序

    HelloWorld.java 文件:

    // HelloWorld.java
    public class HelloWorld{
    	public static void main(String[] args){
    		System.out.println("Hello World!");
    	}
    }
    

    运行该命令后会生成一个 HelloWorld.class 文件:

    javac HelloWorld.java
    
    • 使用javac编译文件无需指定字节码文件的文件名。javac 编译后生成的字节码文件会以 源文件定义的类的类名 为主文件名,".class"作为扩展名。
    • 如果一个源文件里定义了多个类,将编译生成多个字节码文件。

    在 HelloWorld.class 存放路径下,运行如下命令,即可运行 java 程序。

    java HelloWorld
    

    java 命令后面跟的是 类名。不是字节码文件的文件名,也不是Java源文件名。

    PS:此处相同只是巧合而已。当然也是习惯使然,习惯类名和文件名一样。
    想想在 eclipse 里新建 Java class 的时候,填入一个类名,文件名会自动和类名保持一致。

    Java 程序的组织形式

    类是Java程序的最小程序单位

    • Java程序是一种纯粹的面向对象的程序设计语言,因此Java程序必须以类的形式存在,类是Java程序的最小程序单位
    • Java程序不允许可执行性语句、方法等成分独立存在,所有的程序部分都必须放在类定义里

    main 方法是程序执行的入口

    • main 方法写法固定:必须被 public static void 修饰,且其形参必须是字符串数组类型(String[] args)。
    • JVM 从 main 方法开始解释执行,因此 main 是Java 程序的入口。
    • 对于一个大型 Java 程序,往往只需要一个入口(即只一个类包含 main 方法),其他类用于被 main 方法直接或间接调用。

    为什么main方法必须写成public static void main(String[] args) 形式?
    这个问题待解决,后面再补充。

    相关测试:
    在eclipse里新建类的时候,如果没有main方法或者没有按照标准main方法格式书写,控制台会显示“找不到main方法”。
    如果main所在的类没有被public修饰,也是可以正常运行的。

    class Solution1 {
    	public static void main(String[] args) {
    		System.out.println("---");
    	}
    }
    

    Java 源文件的命名规则

    • 通常情况下,Java 程序源文件的主文件名可以任意。
    • 但如果其中定义了一个 public 类,则该源文件的主文件名必须与该 public 类的类名相同
    • 一个Java 源文件可包含多个类定义,但最多只能包含一个public类定义

    为什么只能包含一个public类?
    因为 public 类可以被项目中其他包下的类访问到。只需要在使用前 import 其对应的 class 文件。将类名与文件名一一对应就可以方便虚拟机在相应的路径(包名)中找到相应的类的信息。如果不这么做的话,就很难去找,而且开销也会很大。

    当编写一个java源代码文件时,此文件通常被称为编译单元(有时也被称为转译单元)。每个编译单元都必须有一个后缀名.java,而在编译单元内则可以有一个public类,该类的名称必须与文件的名称相同(包括大小写,但不包括文件的后缀名.java)。每个编译单元只能有一个public类,否则编译器就不会接受。如果在该编译单元之中还有额外的类的话,那么在包之外的世界是无法看见这些类的,这是因为它们不是public类,而且它们主要用来为主public类提供支持。

    1、Java编译器在编译的时候,如果整个Java文件(编译单元)都没有public类(对外的公开接口类),类加载器就无需直接去加载该编译单元产生的所有的字节码文件(.class文件),那么也就是无需去寻找编译后字节码文件存放位置。而类名和文件名一致是为了方便虚拟机在相应的路径中找到相应的类所对应的字节码文件。所以在没有public类的Java文件中,文件名和类名都没什么联系。

    2、如果编译单元中包含了public类,那么该类对应的字节码文件需要被类加载器加载的,这时候就需要让类加载器知道该字节码文件的位置,所以就要确保该类与Java文件名称一致。同时,如果有两个public类在同一个文件中,而一个文件只能有一个名称,故两个public类的名称就不能同时和文件名一样,这就造成至少其中有一个public类在编译的时候编译不通过。

    关于Java源文件命名,通常有以下建议:

    • 一个 Java 源文件只定义一个类,不同的类使用不同的源文件定义。
    • 让 Java 源文件的主文件名与该源文件中定义的 pulblic 类同名。

    主类

    类的名字和文件名一致,并且包含main函数的类,叫做主类。

    所谓主类是程序的入口,要让JVM能找到执行的入口,必须:

    • 类名字和文件名一致
    • 包含public static void main(String[] args) {}

    注意该类并不需要一定有public修饰,前面有测试过。

    在 Solution1.java 文件中定义如下:

    class Solution1{
        public static void main(String[] args) {
            System.out.println("Solution1");
        }
    }
    class Solution2{
        public static void main(String[] args) {
            System.out.println("Solution2");
        }
    }
    

    根据运行结果可以看到执行了Solution1的main方法:

    Solution1
    

    如果把上面 Solution1 和 Solution2 两个类名分别改成 Demo1 和 Demo2,则会出现错误如下:

    这个测试说明光有 main 方法是不够的,还得和文件名一致。

    参考:
    主类部分:https://zhidao.baidu.com/question/17186821.html
    关于 public 类:https://www.cnblogs.com/fuhongliang/p/4304477.html
    其他部分参考:《疯狂Java讲义》

    展开全文
  • 1. 首先一定要有main()函数,不然你说从哪个函数开始执行呢 2. 包含main函数的类名不需要和文件名一致,因为字节码文件名只和类名有关,执行java程序时,也只是“java 类名”...3. public类的类名必须和文件名一致。 .

    1. 首先一定要有main()函数,不然你说从哪个函数开始执行呢

    2. 包含main函数的类名不需要和文件名一致

    因为字节码文件名只和类名有关,执行java程序时,也只是“java 类名”而不是“java 文件名”,如下。

    文件名为test.java,定义了两个类,类名分别为ddeo和deko,编译通过,此时由于源文件中有两个类,所以会产生两个字节码文件(ddeo.class和deko.class),此时分别运行字节码可以正常运行,即没有主次之分。

     

    3. public类的类名必须和文件名一致。

    类可以不加public修饰正常运行,但是不能被外部其它程序调用。但加public后,类名必须和文件名一致,假设可以不一致,那么同个包中不同名的两个文件可以声明一样的public类,到时生成的字节码文件会覆盖,个人理解,可能不是真正原因。public的类名必须和文件名一致,因此一个文件也只能有一个public类。 

    总结:没有主类的具体定义,只是程序执行入口类的一个称呼,一个程序可以有多个程序入口,所以可以有多个主类。那么程序执行入口类只需要包含public static void main函数即可执行,类名可不与文件名一致;但是当该类成为接口以便被调用而加上public修饰符后,类名必须和文件名一致。

    4. main函数为什么通过public static void修饰

    首先public是访问权限;其次,主类的main函数返回值没有意义,所以返回类型是void,但是如果不是主类的main函数返回值可以是其它类型,如下图。最后,static说明函数直接是静态方法,不用实例化对象,不然使用时需先实例化对象。

      

    展开全文
  • 题目:创建7 个对象,在屏幕上显示彩虹的7 种颜色。 示例输出: 红色 橙色 黄色 绿色 蓝色 靛色 紫色 每个对象在创建后都会显示特定的颜色。... 创建对象的顺序必须与彩虹中的颜色顺序相对应。...public class...

     题目:创建 7 个对象,在屏幕上显示彩虹的 7 种颜色
    示例输出:
    红色
    橙色
    黄色
    绿色
    蓝色
    靛色
    紫色
    每个对象在创建后都会显示特定的颜色。

    要求:

    • 该程序应输出文本。

    • 你需要创建 7 个负责颜色的不同对象。

    • 创建对象的顺序必须与彩虹中的颜色顺序相对应。

    • 不要更改负责颜色的类。

    • 所显示的文本必须与任务条件匹配

    public class Solution {
    
        public static void main(String[] args) {
            Red color1 = new Red();
            Orange color2 = new Orange();
            Yellow color3 = new Yellow();
            Green color4 = new Green();
            Blue color5 = new Blue();
            Indigo color6 = new Indigo();
            Violet color7 = new Violet();
          
            
        }
    
        public static class Red {
            public Red() {
                System.out.println("红色");
            }
        }
    
        public static class Orange {
            public Orange() {
                System.out.println("橙色");
            }
        }
    
        public static class Yellow {
            public Yellow() {
                System.out.println("黄色");
            }
        }
    
        public static class Green {
            public Green() {
                System.out.println("绿色");
            }
        }
    
        public static class Blue {
            public Blue() {
                System.out.println("蓝色");
            }
        }
    
        public static class Indigo {
            public Indigo() {
                System.out.println("靛色");
            }
        }
    
        public static class Violet {
            public Violet() {
                System.out.println("紫色");
            }
        }
    }
    
    output:

     

    红色
    橙色
    黄色
    绿色
    蓝色
    靛色
    紫色

     

    展开全文
  • Java基础知识面试题(2020最新版)

    万次阅读 多人点赞 2020-02-19 12:11:27
    采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc.....
  • 什么是Java程序主类

    千次阅读 2019-08-28 16:49:57
    一个程序中可以有多个类,但只能有一个主类。在Java应用程序中,这个类是指包含main()方法的类。...应用程序的主类不一定要求是public类但小程序的主类必须public类。主类Java程序执行的入口点。 ...
  • Java一个源文件中可以有多个主类

    千次阅读 多人点赞 2020-03-10 01:17:54
    一个Java源文件中可以有多个主类,但是只能有一个公共类或者没有公共类,所谓主类就是函数运行的一个入口,public static void main。我们可以通过如下例子说明: public class E{ public static void main(String...
  • java文件主类中如何添加方法java文件新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右...
  • java 之公共类、主类、主函数的辨析

    千次阅读 2015-03-01 13:38:56
    并不是一个java程序中非要有公共类,也不是有且只有一个,若类分开保存不同的java文件都可以加。但是有一个例外,当一个类非公共类时,它内部定义的类不能加public。如: [java] view plaincopy ...
  • java报错,无法初始化主类

    万次阅读 2018-10-05 11:04:08
    错误: 无法初始化主类 Demo 原因: java.lang.NoClassDefFoundError: org/apache/poi/ss/usermodel/Workbook 请问大佬们这个怎么弄 代码如下: import java.io.FileOutputStream; import java.io.IOException; ...
  • 如MainClass.java文件中的主类MainClass: public class MainClass { public static void main(String[] args) { } } 也可以不包含public,如: class MainClass { public static void main(String[] args) { }...
  • 学习Java笔记,与C/C++比较 一,基本数据类型 1、基本类型:byte(8),short(16),int(32),long(64),float(32),double(64),char(16),boolean(1) 2、对象类型:Byte,Short,Integer,Long,Float,Double,Character,...
  • 什么是Java程序的主类    ...应用程序的主类不一定要求是public类但小程序的主类必须public类。主类Java程序执行的入口点。 简单说应用程序是从主线程启动(也就是 main() 方法)。
  • JAVA|学生类Student

    千次阅读 2019-12-09 17:07:58
    学生类Student 编写Java应用程序。首先,定义描述学生的类——Student,包括学号(int)、姓名(String)、年龄...其次,再定义一个主类——TestClass,在主类的main方法中创建多个Student类的对象,使用这些对象...
  • 什么是Java程序的主类?应用程序和小程序的主类有何不同?
  • 一个简单的Java程序2 (主类引用另一个类) 1、主类MainClass public class MainClass{ public static void main (String args[]){ System.out.println("你好,你只需要编译我"); A a = new A(); a.fA(); B b =...
  • Java工程中的主函数public static void main(String[] args)

    千次阅读 多人点赞 2019-09-06 09:03:23
    平时写java project的时候,肯定会看到public static void main(String[] args),一说起来,大家都管它叫“主函数”、“主程序入口”等等。但是它到底用在哪里,其中的String[] args到底都有什么,将在这篇博客中...
  • 什么是 Java 程序的主类 应用程序和小程序的主 类有何不同 一个程序中可以有多个类,但只能有一个类是...应用程序的主类不一定要求是 public 类,但小程序的主类要求必须public 类。主类Java 程序执行的入口...
  • Java中对象和类(main主类简介)

    千次阅读 2020-04-18 17:53:59
    若有返回值用return main()方法 程序的入口点 .java中可以定义多个主类,但是只能有一个public类 .java的文件名要和public类名相同 class WelcomeDemo { public static void main(String[] args) System.out....
  • Java入门

    千次阅读 多人点赞 2019-04-06 18:54:50
    Java入门 Java 入门 主要内容 Java的地位 Java诞生 Java的特点 安装JDK 简单的Java应用程序 重点与难点: 重点:Java平台无关性、Java程序的结构。 难点:Java程序的开发过程。 Java之父与Java的诞生 Java是1995年6...
  • class a { public static void main(String[] args){} } class b { public static void main(String[] args){} } 没有public修饰时,哪个是入口类?还是没有入口类
  • PS:学习这些Java程序的时候请自行百度安装专用的IDE(集成开发环境),并学习使用,...每一个程序都必须包含一个main()方法,含有main()方法的类称为主类Java主类结构(//、/*这两个符号代表注释):package co...
  • Java主类结构

    2021-07-25 07:44:38
    每一个应用程序都必须包含一个main()方法,含有main()方法的类称为主类。 package Number; public class First { static String s1 = "你好"; public static void main(String[] args){ String s2 =...
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
     [DateChooser.java] Java 日期选择控件(主体类) [public]  [TablePanel.java] 日历表格面板  [ConfigLine.java] 控制条类  [RoundBox.java] 限定选择控件  [MonthMaker.java] 月份表算法类  [Pallet....
  • Java命令行运行错误: 找不到或无法加载主类

    万次阅读 多人点赞 2021-01-17 18:15:46
    前言:虽然学习Java语言约有两年多,但在最近需要使用命令行工具编译并运行Java程序时,还是报错了。花费了一些时间,解决了该问题,发现解决方法在初学Java时使用过。...找不到或无法加载主类,主要原因有
  • 每一个Java本地应用程序都必须包含一个main()方法,main()方法为Java应用程序的入口,包含main()方法的类称之为主类。一个完整的主类结构通常由定义包语句、定义类语句、定义主方法语句、定义变量语句和导入API类库5...
  • package Number; public class First { static String s1="你好"; public static void main(String[] args){ String s2="java";...//每一个应用程序都必须包含一个mian()方法,含有main()方法的类称为主类 //Ja.
  • 我发现的问题是 package com.example.canvas; public class LinuxDemo { public static void main(String[] args) { System.out.println("==============="); } }
  • Java错误:找不到或无法加载主类

    千次阅读 2021-10-18 15:13:51
    目录前言java c xxx.java 编译需要相对物理路径java xxx 编译需要虚拟路径总结 前言 一般情况下,我们都使用工具进行代码的编辑和调试,例如eclipse 、Manven、Android Studio、sublime、vim、notepad、记事本等。 ...
  • public class LLL { public void main(String[] args) { // TODO Auto-generated method stub System.out.println("123");...main的主函数没有加static的修饰符,所以java系统无法加载主类。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 46,407
精华内容 18,562
关键字:

java的public必须为主类

java 订阅