static关键字学习

Posted qtxx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了static关键字学习相关的知识,希望对你有一定的参考价值。

  static可用来修饰类、成员变量和方法,也可以声明一个静态块。下面分别介绍这几类用法:

1.修饰类

  首先需要注意的是,普通类是不能用static来修饰的,static只能用来修饰内部类。使用static修饰内部类之后可以使用“类.内部类”实例化这个内部类的对象。如下面的例子

 

技术分享图片
private static String myhouse = "myhouse";
private String bighouse = "bighouse";
public static class Home
{
private void function()
{
myhouse.substring(1);
//引用错误
//bighouse.substring(1);
System.out.println("live");
}
}

public class Car
{

public void run(){
myhouse.substring(1);
bighouse.substring(1);
System.out.println("pay");
}
}
技术分享图片

 


测试:
技术分享图片
public static void main(String[] args) {
new House.Home();

//引用错误
//new House.Car();
}
技术分享图片

对于其他非静态内部类,则只能先实例化外部类,然后才能调用内部类。

  在使用static内部类时,还需要注意对于内部类,只有static声明的内部类中才能使用static声明成员变量和方法。这也是static内部类存在的必要性。

2 static变量

按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫静态变量或类变量;另一种是没有被static修饰的变量,叫实例变量。静态变量与实例变量的区别主要是:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而实例变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。

3 static方法

static方法也叫静态方法,也可以直接使用“类.方法()”来直接调用。但是需要注意一下几点:一是静态方法中不能使用this和super关键字;二是静态方法中不能使用非静态成员变量,也不能调用非静态方法;三是静态方法与静态变量一样都是独立于任何实例,所以静态方法不能使用abstract修饰,即static方法不能为抽象方法。

4 static块

首先,静态块顾名思义就是使用static{}的一段代码块。静态块是在JVM加载类的时候执行的,并且只会执行一次。使用场景主要有在实例化一个日志对象时,使用static块;实例化一些在类中常用但不需要多次实例化的变量等。





























以上是关于static关键字学习的主要内容,如果未能解决你的问题,请参考以下文章

static关键字

“全栈2019”Java第四十一章:static关键字

php静态属性

Java中的static关键字解析

static接口多态内部类

再回首之关键字static