一、其他注意点

1.对于带有static的方法,我们讲过需要用“类名.”的方式进行访问,但是其实我们使用“引用.”的方式也是可以进行访问这个方法的举例。

package com.bjpowernode.java_learning;

​

public class D43_ {

  public static void main(String[] args) {

    Test3.test3();

    Test3 t1 = new Test3();

    t1.test3();

  }

}

class Test3{

  String name;

  public Test3() {}

  public static void test3(){

    System.out.println("我可以执行");

  }

}

2.对于上面的特性,为什么这样,我想用下面这个更进一步的例子,也许可以知晓一二了,我们之前讲过空指针异常。

这个空指针异常,是指空引用访问实例相关的数据就是对象相关的数据,这些数据在访问的时候,必须有对象的参与,当空引用的时候,对象是不存在的,访问这些数据就会出现空指针异常。

我们在紧接着上面的程序,再加一段执行程序


    t1 = null;

    t1.test3();

我们可以看到,即使是空指针,也照样可以执行并没有出现空指针异常,这说明了这里的t1这个对象,我们根本就没用到它,在执行的时候,系统依然会改写为Test3.test3()这样进行执行。

但是这种方式不推荐,虽能执行但不合我们的逻辑。

二、静态变量

1.首先看一段对象创建的代码


package com.bjpowernode.java_learning;

​

public class D43_2_static_keyword {

  public static void main(String[] args) {

    Chinese c1 = new Chinese("zhangsan",32,"China");

    Chinese c1 = new Chinese("lisi",34,"China");   

  }

}

class Chinese{

  String name;

  int id;

  String country;

  public Chinese(String name,int id,String country) {

    this.name = name;

    this.id = id;

    this.country = country;

  }

}

解释:我们创建了两个Chinese对象,他们的国籍都是中国,但是这样我们每次创建都得写一次China,这样就造成了代码的冗余,当我们去掉这个实例变量的时候,场景不合理,还需要这样的属性值,因此我们对于这种对象都共有的属性,引出静态变量的概念。

2.静态变量,也就是在类的代码中,对于实例变量,我们加一个static关键字,代表这个属性是所有创建出来的该对象共有的属性

(1)静态变量在类加载的时候进行初始化,不需要创建对象了,内存就开辟出来了。

(2)静态变量存储在方法区内存​。

例子:

package com.bjpowernode.java_learning;

​

public class D43_2_static_keyword {

  public static void main(String[] args) {

    Chinese c1 = new Chinese("zhangsan",32);

    System.out.println(c1.country);

    System.out.println(Chinese.country);

    c1 = null;

    System.out.println(c1.country);

  }

}

class Chinese{

  String name;

  int id;

  static String country = "China";

  public Chinese(String name,int id) {

    this.name = name;

    this.id = id;

  }

  pubic Chinese() {}

}

个例子可以看出我们访问这个实例变量的时候,可以用"类."访问,也可以用"引用."访问,都成功了,而且原理也和我们上面讲述空指针类似,下面的再几个例子。


package com.bjpowernode.java_learning;

​

public class D43_2_static_keyword {

  public static void main(String[] args) {

//    Chinese c1 = new Chinese("zhangsan",32);//这样写报错因为,缺一个参数,即使是提前被定义了

    Chinese c2 = new Chinese("lisi",34,"fhai");  //换个值 

    Chinese c3 = new Chinese("lisi",34,"China");

    System.out.println(c2.country);

    System.out.println(c3.country);

  }

}

class Chinese{

  String name;

  int id;

  static String country = "China";

  public Chinese(String name,int id,String country) {

    this.name = name;

    this.id = id;

    this.country = country;

  }

  pubic Chinese() {}

}

​解释:说明即使我们定义了构造函数来修改这种对象里面的country值也修改不了​。

(3)​总结:

i.static英语的那次翻译为:静态的;

ii.static​修饰的方法是静态方法;

iii.static​修饰的变量是静态的;

iv.所有的static修饰的元素都称为静态的,都可以使用“类名.”的方式进行访问,当然也可以用“引用.”的方式进行访问(但不建议这么做)​

三、源码:

D43_other_anouncements_of_interviewing_object.java

D43_2_static_keyword1.java

D43_2_static_keyword2.java

地址:

https://github.com/ruigege66/Java/blob/master/D43_other_anouncements_of_interviewing_object.java

https://github.com/ruigege66/Java/blob/master/D43_2_static_keyword1.java

https://github.com/ruigege66/Java/blob/master/D43_2_static_keyword2.java

2.CSDN:https://blog.csdn.net/weixin_44630050(心悦君兮君不知-睿)

3.博客园:https://www.cnblogs.com/ruigege0000/

4.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料

Java连载43-访问静态方法其他注意事项、static关键字的更多相关文章

  1. java中普通的顶级类是不能使用static关键字修饰的。只有内部类可以使用static修饰,也可以不使用staitc关键字修饰。

    java中普通的顶级类是不能使用static关键字修饰的.只有内部类可以使用static修饰,也可以不使用staitc关键字修饰. java中的类可以是static吗?答案是可以.在java中我们可以 ...

  2. 《java入门第一季》之面向对象(static关键字)

    /* static的特点:(它可以修饰成员变量,还可以修饰成员方法) A:随着类的加载而加载 回想main方法. B:优先于对象存在 C:被类的所有对象共享 举例:班级的学生应该共用同一个班级编号. ...

  3. 《Java程序员面试笔试宝典》之Static关键字有哪些作用

    static关键字主要有两种作用:第一,只想为某特定数据类型或对象分配单一的存储空间,而与创建对象的个数无关.第二,希望某个方法或属性与类而不是对象关联在一起,也就是说,在不创建对象的情况下就可以通过 ...

  4. [C]控制外部变量访问权限的extern和static关键字

    一.extern 概述 编译器是由上至下编译源文件的,当遇到一些函数引用外部全局变量,而这个变量被定义在该函数声明主体的下方,又或者引用自其它的编译单元,这个情况就需要extern来向编译器表明此变量 ...

  5. java——字符串常量池、字符串函数以及static关键字的使用、数组的一些操作函数、math函数

    字符串常量池: 字符串比较函数:  字符串常用方法:  字符串截取函数: 字符串截取函数:  static关键字使用: 要调用类中的static类型的变量的时候,可以用"类名.变量名&quo ...

  6. 《java入门第一季》之面向对象(static关键字内存图解)

  7. Java学习笔记(十八):static关键字

  8. Java面向对象-static关键字、静态方法与普通方法、静态成员变量

    Java面向对象-static关键字.静态方法与普通方法 static关键字的基本作用:方便在没有创建对象的情况下来进行调用(方法/变量). 很显然,被static关键字修饰的方法或者变量不需要依赖于 ...

  9. java static关键字和代码块

    static关键字 代码块 方法重写 1. 方法重写的特点: 2. 注意事项: static关键字 为什么需要学习static关键字? 针对某一个变量属于类而不属于某一个具体的对象的时候,我们可以考虑 ...

随机推荐

  1. 分析Android APK- smali 语言简介

    2.1 smali 语言简介 1.smali apk文件通过apktool反编译出来的都有一个smali文件夹,里面都是以.smali结尾的文件. smali语言是Davlik的寄存器语言,语法上和汇 ...

  2. VMware安装Linux提示此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态

    问题: 原因: 这是由于没有开启虚拟技术导致的. 解决: 进入电脑BIOS设置,将"Inter Virtual Technology"设置为"Enabled", ...

  3. August 11th, 2019. Week 33rd, Sunday

    Worry does not empty tomorrow of its sorrow. It empties today of its strength. 忧虑不会消除明天的痛苦,它只会削弱今天的力 ...

  4. Pro Micro

    选择这块Arduino板主要是因为它便宜(淘宝上20元左右搞定),引脚相对较多,体积小,而且其使用的处理器核心ATmega32U4(兼容Arduino Leonardo)可用于模拟HID设备,可以配合 ...

  5. 什么是java变量,java变量是什么

    什么是变量,变量是什么 1.1. 什么是变量 在日常生活中,人们会用到大量数据,像去ATM机取款,首先,需要插入银行卡,这个过程其实就是ATM机的系统在获取银行卡号这个数据,而后,输入密码,这个过程也 ...

  6. [考试反思]1112csp-s模拟测试112:二返

    连着两场... 信心赛.但是题锅了,我也锅了. 然后Day2就不用考了. T1没开够long long.(a+b+c+0ll)与(0ll+a+b+c)还是有一点区别的. T2出题人用Windows出数 ...

  7. Java 类集初探

    类集 类集:主要功能就是Java数据结构的实现(java.util) 类集就是动态对象数组(链表也是动态数组) Collection 接口* Collection是整个类集之中单值保存的最大 父接口 ...

  8. [iOS开发]关于cocoapods的使用

    CocoaPods的使用 关于CocoaPods,相信做iOS开发的应该都比较熟悉了.Cocoapods是一个用来管理第三方库的比较好用的管理工具.关于Cocoapods的东西不再多说,接下来进入正题 ...

  9. SpringCloud之Eureka:服务发布与调用例子

    Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的. SpringCloud将它集成在其子 ...

  10. HTTP 简述

    HTTP 简介: 1.Hyper Text Transfer Protocol(超文本传输协议),主要用于 Web 浏览器和 Web 服务器之间的通信 2.它基于 TCP/IP 通信协议来传输数据 3 ...