zoukankan      html  css  js  c++  java
  • static关键字学习

    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块;实例化一些在类中常用但不需要多次实例化的变量等。

  • 相关阅读:
    通过数据归一化提高WPF绘图效率
    WPF 利用路径动画做一个环形加载动画
    WPF 实现简易事件聚合
    WPF 使用渐变色在绘图中灵活应用
    WPF 使用DrawingVisual和DispatchFrame快速提升绘图速度
    本地Nuget包管理
    飞腾芯片 中标麒麟 安装mysql
    飞腾平台 银河麒麟 安装nginx
    mysql8的配置优化
    国产化之路-国产操作系统安装.net core 3.1 sdk
  • 原文地址:https://www.cnblogs.com/qtxx/p/9581219.html
Copyright © 2011-2022 走看看