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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 微博国际版不能用微博号登录怎么办 云南省特岗登录名忘了怎么办 人行登录名忘了再怎么办 生源地贷款登录名忘了怎么办 举报19楼帖子但是不给删除怎么办 新浪微博手机号被注册了怎么办 忘记新浪微博绑定的邮箱账号怎么办 申诉找回微信账号密码失败怎么办 注册微信号时验证码错误怎么办 老板让写的报道没有当天写完怎么办 洛奇英雄传镶嵌有微章的时装怎么办 上午12点用24小时制怎么办 三分钟看懂捷信个人贷款怎么办 精神不正常的父亲到单位闹怎么办 母亲和父亲一直和我闹怎么办 儿子拿了父亲的钱买手机怎么办 电动车骑的慢的时候车头打漂怎么办 二晓啊相公太爱我了怎么办全文免费 车牌被套牌了又有违章怎么办 高中生只学好主课副科学不好怎么办 母泰迪怀孕23天了不吃饭怎么办 媳妇一再触碰我的底线怎么办 发票商品编码好多选错了分类怎么办 吃了用福尔马林泡的食物怎么办 没大没小说话不尊重人的孩子怎么办 升级安卓8.0后app闪退怎么办 业主装门占用消防通道物业怎么办? 想改名字派出所不给改怎么办 物业不给地热打压影响装修怎么办 pos机pin效码验证错误怎么办 苹果下载东西要发验证码怎么办 接口断在了丝扣里面怎么办 政府下了一张关停取缔单怎么办 微信运动数据不刷新了怎么办 邻居霸占我的土地不还我该怎么办 双层水浴式杀菌锅阀门坏了怎么办 通下水管的钢丝断水管里了怎么办 塑料水管与水阀连接处漏水怎么办 介质流向标识管道温度太高怎么办 雪碧里气体太多瓶子涨得要炸怎么办 餐厅不清洗油烟管道物业该怎么办