Java中静态关键字的使用方法介绍三

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中静态关键字的使用方法介绍三相关的知识,希望对你有一定的参考价值。

1.1      静态方法main()的解析

1.1.1   静态方法main()的语句组成

在我们使用java语言进行编程中,常常用到要一个main()函数,这是一个程序的入口,是整个程序中最为重要的部分之一。通常,main函数按照以下格式进行书写。

public static void main(String[] args) {
}

         我们发现main()函数前面存在静态修饰符Static那说明main函数就是一个静态方法。那么这个main函数语句到底由什么组成呢?下面我们就来分析一下main函数语句的组成。

1、  关键字public,这代表main函数的权限是最大的“public”

2、  关键字static,这代表main函数是一个静态方法。

3、  关键字void,这代表main函数没有返回值。

4、  main,这代表函数名,不可更改。更改后就不在是主函数,而是自定义方法。

5、  String[],这代表main函数的参数类型是字符型数组

6、  args,这是参数名,也是主函数中唯一能够修改的。

1.1.2   args到底是什么?

main()主函数在运行过程中,Java虚拟机会往main()主函数传递参数,那么java虚拟机到底传递了什么样的参数?为了弄清楚这个问题,我们需要修改一下main主函数,还是以Car类作为例子:

public class Car {
public static void main(String[] args) {
              System.out.println(args);
              System.out.println("args数组长度为:"+args.length);
     }
}

运行结果如下:

         [Ljava.lang.String;@98385c

args数组长度为:0

         现在来分析一下运行结果,第一行中“[Ljava.lang.String”表示对象的类型为字符串数组,“@98385c” 表示对象的哈希值。第二行表示args数组的长度为0。也就是说java虚拟机向main函数中传递了一个数组为长度为0的字符串数组。

1.2      静态方法怎么样调用方法?

在前面我们介绍了静态方法main(),在静态方法main()中常常需要调用各种方法,这其中包括静态方法和非静态方法。对于这两种方法,静态方法main()如何调用。当我们需要调用的方法是静态方法时,非常简单,直接调用即可,以下面代码为例:

public class Car {
        public static void stop() {
                   System.out.println("汽车停了下来。");
         }
public staticvoid main(String[] args) {
              stop();
     }
}

运行结果如下:

汽车停了下来。

         如果main()函数调用非静态方法时,应该如何使用?首先我们将静态stop()改为非静态方法,看看会出现什么情况。代码如下:

public class Car {
        public void stop() {
                   System.out.println("汽车停了下来。");
         }
public staticvoid main(String[] args) {
              stop();
     }
}

         编译时会发现报错。

         报错内容:Cannotmake a static reference to the non-static method stop() from the type Car

         这说明当一个方法不是静态方法时,静态方法main()不能够直接调用。那么该如何调用非静态方法呢?我们将代码按照以下方式修改。

public class Car {
        public void stop() {
                   System.out.println("汽车停了下来。");
         }
public staticvoid main(String[] args) {
                   newCar().stop();
         }
}

         运行结果如下:

汽车停了下来。

这说明,静态方法main()可以通过构建对象来调用非静态方法。那么如果不是main()主函数还是一般静态方法是不是一样可以调用非静态方法呢?我们以一下代码为例。

public class Car {
         voidrun(){
                   System.out.println("汽车开动!");
         }
        public static void stop() {
                   System.out.println("汽车停了下来。");
                   newCar().run();
         }
public static void main(String[] args) {
                   stop();
         }
}

运行结果如下:

汽车停了下来。

汽车开动!

从运行结果我们可以得知,普通静态方法与main()方法通过一样的方式来调用非静态方法。


本文出自 “菜鸟进阶” 博客,转载请与作者联系!

以上是关于Java中静态关键字的使用方法介绍三的主要内容,如果未能解决你的问题,请参考以下文章

Java中静态关键字的使用方法介绍二

Java中静态关键字的使用方法介绍三

Java中静态关键字的使用方法介绍一

Java中静态static的基础和数组工具类数学工具类的介绍

Java中static关键字和代码块的学习

Java中static关键字介绍