关键字static

  • 静态成员属于类本身的,而不是属于对象,被类的所有对象所共有
  • 即使不创建对象,也可以使用类本身的静态成员
  • 静态成员分为
    • 静态数据成员
    • 静态方法成员
  • 使用静态成员的两种方法
    • 类名.静态成员名
    • 类对象名.静态成员名
  • 编写使用静态变量统计一个类产生的实例对象的个数的程序
//程序证明static属性i属于类本身,创建对象的时候不再单独创建数据成员i的内存
class A
{public static int i = 10;public void show(){System.out.printf("%d\n",i);}
}
class Teststatic_1
{public static void main(String[] args){A aa1 = new A();A aa2 = new A();A aa3 = new A();aa1.i = 20;aa2.show();System.out.printf("%d\n",aa3.i);}
}程序运行示例:
——————————————————————————————
20
20
——————————————————————————————
//static属性i是属于类本身,或者讲:没有对象,我们仍然可以直接通过类名的方式访问该类内部的static属性//static方法 同理
class A{public static int i = 10;public static void f(){System.out.printf("%d\n",A.i);}}
class Teststatic_2
{public static void main(String[] args){System.out.printf("%d\n",A.i);A.f();}
}
程序运行示例:
——————————————————————————————
10
10
——————————————————————————————
//static属性和方法虽然属于类本身,虽然可以通过类名的方式访问
//但是static属性和方法很明显也属于类对象,当然也可以类对象名的方式进行访问
class A{public static int i = 10;public static void f(){System.out.printf("%d\n",A.i);}}
class Teststatic_3
{public static void main(String[] args){// System.out.printf("%d\n",A.i);// A.f();A aa = new A();aa.f();System.out.printf("%d\n",aa.i);}
}程序运行示例:
——————————————————————————————
10
10
——————————————————————————————
//只有非private的static成员才可以通过类名的方式访问
//static只是表明了该成员具有了可以通过类名访问的潜在特征
//但是否可以通过类名访问,还必须满足一个条件,该成员必须是非private
class A{public static int i = 10;private static void f(){System.out.printf("%d\n",A.i);}}
class Teststatic_4
{public static void main(String[] args){// System.out.printf("%d\n",A.i);   OKA.f();// A aa = new A();  // aa.f();      OK// System.out.printf("%d\n",aa.i);  OK}
}程序运行示例:
——————————————————————————————
Teststatic_4.java:18: 错误: f() 在 A 中是 private 访问控制A.f();^
1 个错误
______________________________

//说明静态方法不能访问非静态成员
//说明非静态方法可以访问静态成员
class A{private  static int i = 10;public int j = 99;public static void f(){//g();  //error 静态方法不能访问非静态成员// j = 22; //error 静态方法不能访问非静态成员System.out.printf("FFFF\n");}public void g(){f();      //OK 说明非静态方法可以访问静态成员System.out.printf("GGGG\n");System.out.printf("%d\n",i);}}
class Teststatic_5
{public static void main(String[] args){A aa = new A();  aa.g();      // System.out.printf("%d\n",aa.i);  OK}
}程序运行示例:
——————————————————————————————
FFFF
GGGG
10
______________________________
 class A
{public int i;private static int cnt = 0;public A(){cnt++;}public A(int i){this.i = i;cnt++;      //this.cnt -->error  静态属于类,故没有this指针}public static int getCnt(){return cnt;}}class M
{public static void main(String[] args){A aa1 = new A();A aa2 = new A();System.out.printf("%d\n",A.getCnt());}
}程序运行示例:
——————————————————————————————
2
______________________________
  • 在静态方法里只能直接调用同类中其他的静态成员(包括变量和方法),而不能直接访问类中的非静态成员。这是因为,对于非静态的方法和变量,需要先创建类的实例对象后才可使用,而静态方法在使用前不用创建任何对象

  • 静态方法不能以任何方式应用this和super关键字(super关键字在下一章讲解)。与上面的道理一样,因为静态方法在引用的对象根本就没有产生。

  • 静态方法只能访问类的静态成员。

    但非静态方法却可以访问类中所有成员,包括静态成员

java-入门 static静态类型(自学笔记)(郝斌)相关推荐

  1. Java入门学习笔记——郝斌(一)概述及面向对象

    Java入门学习笔记--郝斌 1.Java概述 java的起源和发展 java的特点 java的应用领域 java学习目标 环境变量的设置 为什么要设置path? path的设置 有关classpat ...

  2. 《Python+Kivy(App开发)从入门到实践》自学笔记:打包——Windwos打包

    章节目录及知识点总览 6.1 Windows打包 将python程序编译成可以在windows上运行的.exe程序. 操作过程中踩过的坑: 1.书上使用的测试文件没找到(使用画板程序测试) 2.通过6 ...

  3. Java之static静态对象

    static关键字:         1.概念:                     被该类的所有对象共享使用,不依赖于某个具体的对象,和对象无关,依赖于类,在内存中唯一只有一份 2.类的加载过程 ...

  4. java中的静态初始化是什么意思,Java中static静态变量的初始化完全解析

    静态变量初始化顺序 1.简单规则 首先先看一段最普遍的JAVA代码: ? 这里先猜下控制台输出结果是什么? OK, 或许你已经猜到下面了结果了,那么你还是熟悉Java的. 复制代码 代码如下: 0 1 ...

  5. Python极简讲义一本书入门机器学习和数据分析--自学笔记

    0 前言 本书有的知识点之前说,过了几节后再解释.有几个错误但是影响不大.作者自己找补说,有的没讲正常,主要靠自学. 我这里对一些没讲的作了一些补充. 这里是这本书和源码的百度链接,分享给大家. 链接 ...

  6. C# 从入门到入土(自学笔记)--Day3

    目录 学习目标: 学习内容: 学习时间: 学习产出: C#枚举 C#结构体 C#类 构造函数: 类的静态(static)成员: C#继承 C#多态 静态多态性: 动态多态性: 总结: 学习目标: 新学 ...

  7. Java import static静态导入

    在 JDK 1.5 之后增加了一种静态导入的语法,用于导入指定类的某个静态成员变量.方法或全部的静态成员变量.方法.如果一个类中的方法全部是使用 static 声明的静态方法,则在导入时就可以直接使用 ...

  8. 会php学java入门要多久_php自学需要多久

    PHP专业是比较热门的一门学科,不少人看到这个机会想要学习PHP,那么,对于想进入这一行的同学们来说,自学需要多长时间呢? PHP自学要多久 自学PHP需要看学生自身的领悟能力,PHP,通用开源脚本语 ...

  9. 菜鸟学JAVA之——static静态代码块

    静态代码块 static可以修饰属性.方法.内部类.代码块 静态代码块在类加载时就调用, 而且只执行一次, 并且优先于各种代码块以及构造函数. 有一个地方的静态代码被使用,那么所有的静态代码块都会被调 ...

最新文章

  1. 第三周-第08章节-Python3.5-文件修改详解
  2. Did you forget add @script or @script_method annotation? If this is a nn.ModuleList, add it to __con
  3. 题目梳理(一)(2019.07.06~2019.07.20)
  4. visual studio 2019 未能在命名空间“System.IO.Ports”中找到类型名“SerialPort”
  5. finalize方法_final,finally,finalize三者的含义和区别
  6. laravel插入数据时报 502 Bad Gateway
  7. 动画:二叉树有几种存储方式?(上)
  8. cadence软件选择网络功能
  9. uniapp 微信小程序授权获取手机并绑定登录
  10. STM32 HAL库 CUBEMX FPU 和 DSP库
  11. OS模块--批量修改文件名字(二)
  12. 华为电脑分类四个系列_华为笔记本系列推荐榜单
  13. BackLinks-卖链接赚钱,只要你的网站达到pr3就很好赚钱
  14. 英语阅读进化 晾粥进化
  15. storm笔记:Trident应用
  16. Android am和pm命令
  17. 你必须知道的.NET(第2版)
  18. ajax异步获取数据后动态向表格中添加数据的页面
  19. 「自然语言处理(NLP)」神经机器翻译(NMT)论文整理(一)
  20. RPG游戏《黑暗之光》流程介绍与代码分析之(二):角色创建界面的实现

热门文章

  1. 孕妇选择云计算机首先考虑的是,2012年妇产科三基试题精选(七)
  2. http 502问题解决
  3. js中viod运算符总结
  4. oracle rank 语法_Oracle用于排名的函数
  5. DSP28335的PWM信号
  6. [模型学习]Attention机制及其原理推导
  7. java try 的用法_java try(){}catch(){}自动释放资源及用法
  8. Pandas教程目录
  9. 停车位共享小程序开发制作
  10. 如何将一棵树转化为对应的二叉树