小朋友学Java(5):静态方法

先编写程序:

class Demo {
    public void fun1() {
        System.out.println("Hello");
    }
    public static void fun2() {
        System.out.println("Hi");
    }
}
public class DemoTest {
    public static void main(String[] args) { 
      Demo d = new Demo();
      d.fun1();
      Demo.fun2();
      Demo d2 = new Demo();
      d2.fun2();
    }
}

运行结果:

说明: (一)在Java中,几个不同的类,比如本例中的Demo和DemoTest,可以写在同一个文件中。 同一个文件中,只能有并且必须有一个类被声明为public。 比如上面的程序,要么声明为

class Demo 
public class DemoTest

要么声明为

public class Demo
class DemoTest

当然了,如 上一节 的程序所示,若把多个类分成多个文件来写,则所有的类不需要加public修饰符

(二)文件名称一定要与被声明为public的那个类同名。比如本程序的文件只能命名为DemoTest.java,不能命名为Demo.java 当然,假如声明成

public class Demo
class DemoTest

则只能把文件命名为Demo.java,不能命名为DemoTest.java

(三)运行javac DemoTest.java后,有几个类就会成几个class文件。比如上面的程序,会生成Demo.class和DemoTest.class

(四)执行java命令时,只能执行带main方法的class文件。 所以,不管本程序是声明为

class Demo 
public class DemoTest

还是声明为

public class Demo
class DemoTest

都必须执行java DemoTest,不能执行java Demo

(五)不带static关键字修饰的方法为非静态方法,即实例方法。调用方式为对象.方法名。这样就必须先生成对象才能调用普通方法。比如 Demo d = new Demo(); d.fun1();

(六)带static关键字修饰的方法为静态方法。调用方式有两种。 1)类名.方法名 比如Demo.fun2() 这是因为,类中的静态成员会随着类的加载而加载。也就说,只要类存在(此时对象还没创建),静态方法就已经存在了。静态方法的生命周期与类的生命周期一样。所以可以使用类名.方法名 2)对象.方法名 Demo d2 = new Demo(); d2.fun2(); 这是因为,在创建对象时,静态方法早就已经存在了。所以可以使用对象.方法名。

本文分享自微信公众号 - 海天一树(gh_de7b45c40e8b)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-01-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏PHP在线

php

单例设计模式 1.控制一个类只能创建一个对象,设置构造函数为私有的。 2.设置静态方法调用类中方法返回实例化。 3.在类中设置静态属性存放实例化对象。 ? 命名...

34170
来自专栏黑泽君的专栏

前面学习通过方法对代码进行改进,为什么要给方法使用静态呢?

前面学习通过方法对代码进行改进,为什么要给方法使用静态呢?   答:因为main方法是静态的,而静态方法只能访问静态的成员变量和静态的成员方法。   所以...

8210
来自专栏代码世界

Python之内置函数

内置函数 python里的内置函数。截止到python版本3.6.2,现在python一共为我们提供了68个内置函数。它们就是python提供给你直接可以拿来使...

35070
来自专栏前端儿

中缀式变后缀式

人们的日常习惯是把算术表达式写成中缀式,但对于机器来说更“习惯于”后缀式,关于算术表达式的中缀式和后缀式的论述一般的数据结构书都有相关内容可供参看,这里不再赘述...

12410
来自专栏魂祭心

原 Curry的js实现

37550
来自专栏海天一树

小朋友学Python(3):布尔类型

本节讲解C/C++/Java/Python中的布尔类型。 一、C语言 C语言中没有布尔类型,判断时 ,0为假,非0为真。 二、C++ C++的bool是布尔类型...

312110
来自专栏前端架构与工程

JavaScript中的原型链原理

  工作中经常解除到prototype的概念,一开始错误的认为prototype是对象的原型链,其实prototype只能算是JavaScript开放出来的原型...

20560
来自专栏林德熙的博客

C# const 和 readonly 有什么区别

在写常量的时候,是选择使用 const 还是 static readonly 是一个让人难以决定的问题,本文告诉大家这两个方法的区别。

13620
来自专栏十月梦想

ES6基础语法之set

17340
来自专栏青青天空树

2017-统计字符个数

输入:输入数据有多行,第一行是一个整数n,表示测试实例的个数,后面跟着n行,每行包括一个由字母和数字组成的字符串。

15510

扫码关注云+社区

领取腾讯云代金券