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 }

    。。。

  • 相关阅读:
    无线网络技术知识点
    中国高校计算机大赛—网络技术挑战赛
    实验二 软件工程个人项目
    实验一 软件工程准备
    2018年春季软件工程教学设计(初稿)
    2017-2018春季学期软件工程教学资源目录
    2017-2018春季学期软件工程教学纲要
    如何解决Android Studio解决DDMS真机/模拟器无法查看data目录问题
    GitHub的Windows客户端的使用教程
    2017面向对象程序设计(JAVA)课程总结
  • 原文地址:https://www.cnblogs.com/eric-fang/p/10385085.html
Copyright © 2011-2022 走看看