码迷,mamicode.com
首页 > 编程语言 > 详细

Java static 关键字

时间:2019-12-06 12:01:23      阅读:83      评论:0      收藏:0      [点我收藏+]

标签:inner   spl   映射   one   orm   this   level   有一个   art   

Java static 关键字

注意: 对象就是实例, 实例就是对象.

static 意为: 静态的. 这里指不实例化,通过类直接使用.

static 可以修饰成员变量, 成员方法, 代码块, 类. 不能修饰局部变量, 普通类。


注意,静态类型的声明只能在类中, 不可以在方法中声明一个静态类型。如不可以在方法中声明一个静态变量或是一段静态代码块,main中也一样。

1. static 变量

使用:普通变量必须实例化才能使用, 而静态变量不需要实例化就可以使用。

初始化:普通变量在创建对象的时候被初始化,静态变量在类初次加载时会被初始化

共享性:静态变量被所有的对象所共享,在内存中只有一个副本,任何类的实例可以都可以使用它, 改变它。

非静态变量是对象所拥有的,每个对象都有自己的非静态变量,对象之间的非静态变量不共享,亦不透明。

静态变量适用于:一个类的公共信息, 不会因为对象不同而改变的信息

2. static 方法

  1. 静态方法通过类直接使用,也可以通过对象使用。普通方法必须通过实例才能使用。技术图片
  2. 静态方法中不能调用非静态的变量和方法,但非静态方法中可以调用静态变量和静态方法。

    因为静态方法承诺不要求实例化,将需要实例化才能使用的非静态方法加入静态方法中便会违背承诺

  3. 静态方法中也不能使用this

静态方法适用于,所有对象都会使用且与对象本身无关的操作

3. static 代码块

以static包围,仅会执行一次的代码。静态代码块只能出现在类中,不能出现在方法中。

static 代码块中只能出现 静态的变量和方法。

 static {
    countryAge = 70; // 给静态变量赋值
    testA(); // 执行一个静态方法
 }

注意: 静态代码块的执行只和该类是否被加载有关,与main函数中是否出现相关语句无关。

技术图片

技术图片

4. static 类

静态类只能是 内部类, 用static修饰普通类会编译报错。

在一个类A中创建另一个类B, 则B是A的内部类, A是B的外部类。

静态内部类不需要外部实例就可以使用:

 Outter.Inner inner = new Outter.Inner(); // 直接创建

普通内部类需要外部类的实例才可以使用:

 Outter outter = new Outter(); // 先有一个外部类实例
 Outter.Inner inner = outter.new Inner(); // 再根据外部类实例创建内部类实例


由上可知,静态变量的主要目的是方便使用,同时还可以节省空间(多个对象的静态 变量映射为一处)。

Java static 关键字

标签:inner   spl   映射   one   orm   this   level   有一个   art   

原文地址:https://www.cnblogs.com/lee3258/p/11994044.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!