1.解析public static void main(String[] args)方法

JVM在运行程序时,会首先查找main()方法作为入口,main是JVM识别的特殊方法名。

public是权限修饰符,表明任何类或对象均可访问此方法。

static表明main()方法是一个静态方法,即方法中的代码是存储在静态存储区的,只有类被加载后,即可使用该方法而不需要实例化对象来访问,可以直接通过类名.main()访问。

字符串数组参数args接收开发人员在命令行状态下与程序交互的代码。

此例为调用main()方法时传递参数的方法:

 public class Test{
  public static void main(String[] args){
    for(int i=0;i<args.length;i++){
      System.out.println(args[i]);
    }
  }
}

在控制台下,使用javac Test.java指令编译上述程序,使用java Test arg1 arg2 arg3指令运行程序,程序运行结果为:

arg1

arg2

arg3

注:

(1)不管哪种定义方式,除了不能用abstract关键字修饰,必须保证main()方法的返回值为void,并有static与public关键字修饰。

(2)同一个.java文件中是否可以有多个main()方法?

虽然每个类中都可以定义main()方法,但是只有与文件名相同的用public修饰的类中的main()方法才能作为整个程序的入口方法。

如下例,创建了一个名为Test.java的文件:

 class T{
public static void main(String[] args){
System.out.println(“T main”);
}
}
public class Test{
//程序入口函数
public static void main(String[] args){
System.out.println(“Test main”);
}
}

程序运行结果为:

Test main

(3)在java语言中,静态块在类被加载时就会被调用,会在main()方法执行之前执行。

 public class Test{
  public static void main(String args[]){
    System.out.println(“Hello World2”);
  }
  static{
    System.out.println(“Hello World1”);
  }
}

程序运行结果:

Hello World1

Hello World2

2.一个Java文件中是否可以定义多个类?

  一个Java文件中可以定义多个类,但是最多只能有一个类被public 修饰,并且这个类的类名与文件名必须相同,若这个文件中没有public的类,则文件名随便是一个类的名字即可。当用javac指令编译这个.java文件时,它会给每一个类生成一个对应的.class文件。

定义Derived.java为:

 class Base{
  public void print(){
    System.out.println(“Base”);
  }
}
public class Derived extends Base{
  public static void main(String[] a){
    Base c=new Derived();
    c.print();
  }
}

  使用javac Derived.java指令编译上述代码,会生成两个字节码文件:Base.class与Derived.class,然后使用java Derived指令执行代码,此时,控制台的输出结果为:Base。

java基础笔记(三)——main方法的更多相关文章

  1. Java基础 return 退出main方法的示例

        JDK :OpenJDK-11      OS :CentOS 7.6.1810      IDE :Eclipse 2019‑03 typesetting :Markdown   code ...

  2. Java基础笔记 – Annotation注解的介绍和使用 自定义注解

    Java基础笔记 – Annotation注解的介绍和使用 自定义注解 本文由arthinking发表于5年前 | Java基础 | 评论数 7 |  被围观 25,969 views+ 1.Anno ...

  3. Java基础:三步学会Java Socket编程

    Java基础:三步学会Java Socket编程 http://tech.163.com 2006-04-10 09:17:18 来源: java-cn 网友评论11 条 论坛        第一步 ...

  4. 【转】Java基础笔记 – 枚举类型的使用介绍和静态导入--不错

    原文网址:http://www.itzhai.com/java-based-notes-introduction-and-use-of-an-enumeration-type-static-impor ...

  5. Java实习生常规技术面试题每日十题Java基础(三)

    目录 1.是否可以从一个static方法内部发出对非static方法的调用? 2.Integer与int的区别? 3.Overload和Override的区别.参数列表相同,返回值不同的方法,是否是重 ...

  6. java 基础知识三 java变量

    java  基础知识 三 变量 1.作用域 {} 包围起来的代码 称之为代码块,在块中声明的变量只能在块中使用 2.常量 就是固定不变的量,一旦被定义,它的值就不能再被改变. 3.变量 变量必须在程序 ...

  7. 斐波那契数列-java编程:三种方法实现斐波那契数列

    题目要求:编写程序在控制台输出斐波那契数列前20项,每输出5个数换行 斐波那契数列指的是这样一个数列:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, … 这个数列 ...

  8. Java基础 之 System.getProperty()方法

    Java基础 之 System.getProperty()方法大全 public static void main(String[] args) { System.out.println(" ...

  9. JAVA基础(三)—— 输入输出处理

    JAVA基础(三)-- 输入输出处理 1 输入解析 //Scanner获取输入 import java.util.Scanner; Scanner s = new Scanner(System.in) ...

  10. JAVA基础语法:函数(方法)、类和对象(转载)

    4.JAVA基础语法:函数(方法).类和对象 函数 在java中函数也称为方法,是一段具备某种功能的可重用代码块. 一个函数包括这几部分: 函数头 函数头包括函数访问修饰符,函数返回值类型, 函数名, ...

随机推荐

  1. 【LeetCode】最大子序和

    给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4], 输出: 6 解释: 连续子数组 ...

  2. ubuntu 14.4 下 普通sudo无密码

    用户是test,要设置为 sudo无密码 visudo 最后一行 加上: %test  ALL=NOPASSWD:ALL 然后  ctrl + x 进行保存,会提示 Y or  N,输入 y 即可. ...

  3. iOS数据持久化存储之属性列表

    属性列表(plist) iOS提供了一种plist格式的文件(属性列表)用于存储轻量级的数据,属性列表是一种XML格式的文件,拓展名为plist.如果对象是NSString.NSDictionary. ...

  4. OP趋势系统

    经过3年多时间的摸索,经历过熊市牛市的历练,终于完成坚持已久的OP趋势系统的实践,接下来,我将在股灾后,每天都分享OP趋势系统的信号,可以很负责任的说,经过10年历史数据的测试,加上3年的实盘,更加坚 ...

  5. 《java编程思想》:异常丢失

    finally子句的不恰当使用,会造成异常的丢失,此处列举两种典型的错误使用示例.编程中要避免这种情况 示例一: try{ throw new ExceptionA(); }finally{ thro ...

  6. POJ3468 A Simple Problem with Integers(数状数组||区间修改的RMQ问题)

    You have N integers, A1, A2, ... , AN. You need to deal with two kinds of operations. One type of op ...

  7. HihoCoder1655 : 第K小最简真分数([Offer收割]编程练习赛39)(唯一分解+容斥定理+二分)(不错的数学题)

    描述 给一个整数N,请你求出以N为分母的最简(既约)真分数中第K小的是多少? 输入 两个整数N个K. 对于30%的数据,1 <= N <= 1000000 对于100%的数据,1 < ...

  8. BZOJ1855 [Scoi2010]股票交易[单调队列dp]

    题 题面有点复杂,不概括了. 后面的状态有前面的最优解获得大致方向是dp.先是瞎想了个$f[i][j]$表示第$i$天手里有$j$张股票时最大收入(当天无所谓买不买). 然后写了一个$O(n^4)$状 ...

  9. 【LeetCode】039. Combination Sum

    题目: Given a set of candidate numbers (C) (without duplicates) and a target number (T), find all uniq ...

  10. POCO库中文编程参考指南(7)Poco::Net::DatagramSocket

    1 构造函数 创建一个未连接的 IPv4 数据报 Socket: DatagramSocket(); 创建一个指定 IP 类型(IPv4 或 IPv6)的数据报 Socket: explicit Da ...