static可以用来定义静态成员变量、静态函数、静态代码块。

静态成员变量的语法特点

定义方法:在成员变量前面加上static

class Person{
      static int i; //静态成员变量
}

在普通的成员变量中,成员变量的值是属于单个对象的,修改某个成员变量的值对其他成员变量来说是没有影响的。

在静态的成员变量中,所有的对象使用的成员变量是同一个,值也一样。当静态成员变量的值被修改了,对象的成员变量值也跟着变化。

静态成员变量可以直接用类名来调用,也可以用对象来调用静态成员变量。

class Test{
      public static void main(String args[]){
           Person p1 = new Person();
           Person p2 = new Person();
           Person.i = 10;
           System.out.println("p1的i的值为"+p1.i);
           System.out.println("p2的i的值为"+p2.i);
           p1.i = 20;
           System.out.println("p1的i的值为"+p1.i);
           System.out.println("p2的i的值为"+p2.i);
      }
}

静态成员变量是类层次的变量,属于这一个类,这个类所生成的所有对象使用的都是同一个静态变量,任何一个成员变量的值如果修改,其他所有成员变量的值都会修改。

静态成员函数的语法特点

定义方法:在成员函数前面加上static,静态成员函数可以直接用类名来调用

class Person{
      static void fun(){
           System.out.println("我是静态函数");
      }
}
class Test{
      public static void main(String args[]){
           Person.fun(); //使用类调用静态函数
      }
}

 

在静态函数中不能调用非静态的成员变量

class Person{
      String name;
      static void talk(){
           System.out.println("我叫"+name);
      }
}

个人理解:当在成员函数前不加static时,可用this调用成员变量name(默认情况下省略this),this对象表示调用了这个成员函数的对象。加上static后,使用类名来调用静态函数(没有对象),成员变量必须要用对象来调用,所以在静态函数中不能调用非静态的成员变量(不能使用this),但可调用静态成员变量。

静态代码块的语法特点

class Test{
      static{
           System.out.println("我是静态代码块");
      }

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

  

静态代码块没有名字,在装载类的时候执行静态代码块。静态代码块用于给静态变量赋初值。

最新文章

  1. Java抽象类的总结
  2. RunLoop的模式
  3. Android Studio目录结构浅析
  4. Objective C 快速入门学习五
  5. centos7 Nexus maven私有仓库
  6. Yii 添加Input时间插件
  7. mysql安装过程中出现错误ERROR 1820 (HY000): You must SET PASSWORD before executing this statement解决
  8. Redis主从配置详细过程
  9. linux 内核(驱动)常用函数
  10. VM Depot 分布式计算框架主题应用精选
  11. 【通信框架】Apache的开源通信框架thrift概述
  12. 在PowerShell脚本中集成Microsoft Graph
  13. Identity Server 4 - Hybrid Flow - 保护API资源
  14. java的环境变量配置失败(java.exe、javaw.exe、javaws.exe优先级问题冲突)
  15. JavaScript(JS)之Javascript对象
  16. 【算法】map的应用
  17. 浅谈JS的作用域链(一)
  18. C#使用Font Awesome字体
  19. C/C++中const关键字
  20. C++11新特性之 std::forward(完美转发)(转)

热门文章

  1. Android2.2 API中文文档——View
  2. Ubuntu 12.04 gedit编辑器 中文乱码
  3. tornado框架之路三之ajax
  4. 用 vs2013 创建 windows service 程序
  5. 学习练习 java 集合
  6. javascript代码复用模式
  7. java基础回顾(三)——HashMap与HashTable
  8. vyos (一) 基础配置
  9. AX 条码打印
  10. asp.net ashx 一般处理程序 使用async await异步直接 copy可用哦