java中非静态内部类可以有常量但不能有staic修饰的属性
来源:互联网 发布:js判断用户是否移动端 编辑:程序博客网 时间:2024/04/30 10:35
先看下面的代码:
package com.howard.test;/** * java中非静态内部类不能有staic修饰的属性,但可以有常量 * 2017年9月12日 * @author hongwu */public class Test2 { public static void main(String[] args) { int a; class innerClass { static int b = 0; //编译不通过 static final int c = 1; //编译通过 } }}java类加载顺序,首先加载类,执行static变量初始化,接下来执行对象的创建,这里的innerClass是非静态内部类,非静态内部类,依赖于一个外部类对象,而静态域/方法是不依赖于对象——仅与类相关,也就是说,这里如果在初始化变量b时,需要依赖于外部类的实例化,外部类还没创建,所以这里的static int b是无法初始化的,而static final int c = 1 不同(static可有可无),他是一个常量,而常量jvm在编译期就确定下来并将它放在常量池的,所以这里可以不会报错。再看下面的代码:
class Test2_2 { static class innerClass { static int b = 0; //编译通过 static final int c = 1; //编译通过 }}
这里两个都不会报错,与上面的区别是这里的内部类是静态内部类,静态内部类是不依赖于外部类的实例化的,所以这里的static int b是不会报错的。
阅读全文
0 0
- java中非静态内部类可以有常量但不能有staic修饰的属性
- java为什么非静态内部类中不能有static修饰的属性,但却可以有常量?
- 关于内部类为什么可以有静态常量,不能有静态变量的原因?
- Java非静态内部类为什么不能有静态成员
- Java非静态内部类为什么不能有静态成员
- java非静态内部类为何不能有静态的成员?
- java非静态内部类为何不能有静态的成员?
- Java内部类(3):非静态内部类为什么不能有静态成员变量和静态方法。
- 非静态内部类不能有静态声明
- 非静态内部类不能有静态成员?
- 为何非静态内部类不能有静态成员
- java中非静态内部类和局部内部类的相互访问
- 怎么想静态内部类可以有静态成员和方法而成员内部类不行?
- 黑马程序员——内部类不能有静态的成员的原因
- 在java中, 方法的内部类可以访问方法中的局部变量,但必须用final修饰才能访问。
- JackSon和内部类,是的,你可以使用,但他们必须是静态的内部类
- Java中非静态内部类对象持有外部类对象的引用。
- 成员内部类里面为什么不能有静态成员和方法?
- 8.分页、连接、自关联查询
- ubuntu imx6q linux3.14 安装交叉编译工具
- Python学习之字符串格式化详解
- 实验一 线性表的基本操作实现及其应用
- 整理docker及Hadoop脚本(二)
- java中非静态内部类可以有常量但不能有staic修饰的属性
- Linux(CentOS 7_x64位)系统下安装RDkit
- 互联网 30周年纪念日
- python django表单及其表单验证
- 绿盟网络科技面试经验
- 常用Linux命令
- C++复习第四天 引用不简单(本质是指针)
- 数据库中等值连接与自然连接的区别
- CentOS7安装MySQL5.7