zoukankan      html  css  js  c++  java
  • 基础知识

    1、类中的静态语句块只能访问到在块之前定义的变量,定义在块之后的变量,可以在块中进行赋值,但是不能访问。如下示例:

     1 package com.cfang.loadClassTest;
     2 
     3 public class TestClsStatic {
     4 
     5     //public static int i = 123;  //
     6     
     7     static{
     8         i = 456;
     9         System.out.println(i); //Cannot reference a field before it is defined
    10     }
    11     
    12     public static int i = 123; //
    13 }

      上述第9行报错“非法向前引用”,可以注释掉所在行,放开行。

    2、调用静态字段,只有直接定义这个字段的类才会被初始化,所以通过子类调用父类的静态字段,只会触发父类的初始化而不初始化子类。如下程序示例:

     1 package com.cfang.loadClassTest;
     2 
     3 public class TestLoadClass {
     4 
     5     public static void main(String[] args) {
     6         //通过子类去调用父类的静态字段,只会触发父类初始化,而子类本身并不初始化
     7         System.out.println(SubClass.value);
     8         
     9         //对自身常量池的引用,不会触发初始化操作
    10 //        System.out.println(SubClass.value1);
    11         
    12         //不会触发初始化操作
    13 //        SuperClass[] arr = new SuperClass[10];
    14 //        System.out.println(arr.toString());
    15         
    16 //        SuperClass cls = new SuperClass();
    17         
    18 //        SuperClass cls = new SubClass();
    19 //        System.out.println(cls.value3);
    20     }
    21 }
    22 
    23 class SuperClass{
    24     static{
    25         System.out.println("init superClass");
    26     }
    27     public static int value = 123;
    28     public static final int value1 = 456;
    29     public int value3 = 111;
    30 }
    31 
    32 class SubClass extends SuperClass{
    33     static{
    34         System.out.println("init subClass");
    35     }
    36 }

      输出结果为:

    init superClass
    123

    3、类成员变量会初始化值,而局部变量必须进行初始化。如下:

     1 package com.cfang.loadClassTest;
     2 
     3 public class TestInit {
     4 
     5     private static String str;
     6     
     7     public static void main(String[] args) {
     8         String str2;
     9         System.out.println(str); //输出:null
    10         System.out.println(str2); //编译不通过,报错信息:The local variable str2 may not have been initialized
    11     }
    12 }

    。。。

  • 相关阅读:
    webpack + vue 向本地后端发送http请求跨域问题
    用FileReader对象从本地读取文件
    oninput与onchange比较
    height: 100% 无效问题
    关于html布局
    圣诞节给自己的犒劳
    django学习之——模版
    django学习之——我的 Hello World
    django学习之——创建项目
    python and pycharm and django 环境配置
  • 原文地址:https://www.cnblogs.com/eric-fang/p/10385085.html
Copyright © 2011-2022 走看看