加入收藏 | 设为首页 | 会员中心 | 我要投稿 广元站长网 (https://www.0839zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 动态 > 正文

不懂代码也能爬取数据?

发布时间:2021-02-03 14:53:46 所属栏目:动态 来源:互联网
导读:02、 静态方法 说完静态变量,我们来说静态方法。说完,我准备点一支华子来抽,三妹阻止了我,她指一指烟盒上的「吸烟有害身体健康」,我笑了。 好吧。我只好喝了一口咖啡继续说,如果方法上加了 static 关键字,那么它就是一个静态方法。 静态方法有以下这

02、 静态方法

“说完静态变量,我们来说静态方法。”说完,我准备点一支华子来抽,三妹阻止了我,她指一指烟盒上的「吸烟有害身体健康」,我笑了。

“好吧。”我只好喝了一口咖啡继续说,“如果方法上加了 static 关键字,那么它就是一个静态方法。”

“静态方法有以下这些特征。”

静态方法属于这个类而不是这个类的对象;

调用静态方法的时候不需要创建这个类的对象;

静态方法可以访问静态变量。

“来,继续上代码”

public class StaticMethodStudent { String name; int age; static String school = "郑州大学"; public StaticMethodStudent(String name, int age) { this.name = name; this.age = age; } static void change() { school = "河南大学"; } void out() { System.out.println(name + " " + age + " " + school); } public static void main(String[] args) { StaticMethodStudent.change(); StaticMethodStudent s1 = new StaticMethodStudent("沉默王二", 18); StaticMethodStudent s2 = new StaticMethodStudent("沉默王三", 16); s1.out(); s2.out(); }}

“仔细听,三妹。change() 方法就是一个静态方法,所以它可以直接访问静态变量 school,把它的值更改为河南大学;并且,可以通过类名直接调用 change() 方法,就像 StaticMethodStudent.change() 这样。”

“来看一下程序的输出结果吧。”

沉默王二 18 河南大学沉默王三 16 河南大学

“需要注意的是,静态方法不能访问非静态变量和调用非静态方法。你看,三妹,我稍微改动一下代码,编译器就会报错。”

“先是在静态方法中访问非静态变量,编译器不允许。”
 

我们创建一个成员变量 count,并且在构造函数中让它自增。因为成员变量会在创建对象的时候获取内存,因此每一个对象都会有一个 count 的副本, count 的值并不会随着对象的增多而递增。”

我在侃侃而谈,而三妹似乎有些不太明白。

“没关系,三妹,你先盲猜一下,这段代码输出的结果是什么?”

“按照你的逻辑,应该输出三个 1?是这样吗?”三妹眨眨眼,有点不太自信地回答。

“哎呀,不错哟。”

我在 IDEA 中点了一下运行按钮,程序跑了起来。

111

“每创建一个 Counter 对象,count 的值就从 0 自增到 1。三妹,想一下,如果 count 是静态的呢?”

“我不知道啊。”

“嗯,来看下面这段代码。”

public class StaticCounter { static int count = 0; StaticCounter() { count++; System.out.println(count); } public static void main(String args[]) { StaticCounter c1 = new StaticCounter(); StaticCounter c2 = new StaticCounter(); StaticCounter c3 = new StaticCounter(); }}

“来看一下输出结果。”

123

“简单解释一下哈,由于静态变量只会获取一次内存空间,所以任何对象对它的修改都会得到保留,所以每创建一个对象,count 的值就会加 1,所以最终的结果是 3,明白了吧?三妹。这就是静态变量和成员变量之间的差别。”

“另外,需要注意的是,由于静态变量属于一个类,所以不要通过对象引用来访问,而应该直接通过类名来访问,否则编译器会发出警告。”

(编辑:广元站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读