Java顺序栈的初始化_java - Java类变量初始化的顺序是什么? - 堆栈内存溢出
在Java中,类变量按以下顺序初始化:
超类的静态变量
此类的所有静态变量都设置为其默认值 。
静态变量和静态初始化块,按声明顺序排列。
超类的实例变量
此类的所有实例变量都设置为其默认值 。
声明顺序中的实例变量和实例级初始化块
1和2仅在第一次实例化类时完成。
因此,给出以下代码:
class Test
extends TestSuper
{
final int ti1;
final int ti2 = counter ++;
{ ti1 = counter ++; }
static final int ts1;
static final int ts2 = counter ++;
static { ts1 = counter ++; }
public static void main(String[] argv) {
Test test1 = new Test();
printTest(test1);
Test test2 = new Test();
printTest(test2);
}
private static void printTest(Test test) {
System.out.print("ss2 = " + test.ss2);
System.out.print(", ss1 = " + test.ss1);
System.out.print(", ts2 = " + test.ts2);
System.out.println(", ts1 = " + test.ts1);
System.out.print("si2 = " + test.si2);
System.out.print(", si1 = " + test.si1);
System.out.print(", ti2 = " + test.ti2);
System.out.println(", ti1 = " + test.ti1);
System.out.println("counter = " + test.counter);
}
}
class TestSuper
{
static int counter = 0;
final int si1;
final int si2 = counter ++;
{ si1 = counter ++; }
static final int ss1;
static final int ss2 = counter ++;
static { ss1 = counter ++; }
}
然后我们得到以下输出:
ss2 = 0, ss1 = 1, ts2 = 2, ts1 = 3
si2 = 4, si1 = 5, ti2 = 6, ti1 = 7
counter = 8
ss2 = 0, ss1 = 1, ts2 = 2, ts1 = 3
si2 = 8, si1 = 9, ti2 = 10, ti1 = 11
counter = 12
从此输出中我们可以看到字段按列表中指定的顺序初始化。
现在,关于第二个问题,可以重新排序字段来改变类的行为。 是的,通过重新排序字段,您可以更改字段的初始化顺序。 现在,在所有字段都是独立的特定情况下,这不会影响观察到的行为,但是每当字段不是独立的时,例如在上面的代码中,那么重新排序字段可以改变它们的初始值。
例如,如果三行:
static final int ss1;
static final int ss2 = counter ++;
static { ss1 = counter ++; }
改为:
static final int ss1;
static { ss1 = counter ++; }
static final int ss2 = counter ++;
然后输出将变为:
ss2 = 1, ss1 = 0, ts2 = 2, ts1 = 3
si2 = 4, si1 = 5, ti2 = 6, ti1 = 7
counter = 8
也就是说, ss2和ss1会改变值。
原因是此行为在Java语言规范中指定。
Java顺序栈的初始化_java - Java类变量初始化的顺序是什么? - 堆栈内存溢出相关推荐
- aws java mysql_java - AWS EC2 / MySql - spring boot无法从datasource确定jdbc url - 堆栈内存溢出...
我有一个简单的Spring Boot应用程序,我试图在基于Amazon AMI的Amazon EC2实例上部署. 它使用MySql数据库(版本8.0.15). 我在AWS上创建了数据库,当我从本地系统 ...
- java 获取组件大小_java - 如何初始化取决于组件大小的图像抓取? - 堆栈内存溢出...
如果我正确理解问题,那么您的方法会有些落后. 与其让ImageNavigator告诉ZoomedImage绘制哪个子图像,不如让ZoomedImage在绘制时询问ImageNavigator(通过重写 ...
- Java拆解最多的素数之和_java - 计算并打印第n个素数 - 堆栈内存溢出
为了计算第n个素数,我知道两个主要的变体. 直截了当的方式 也就是说,从找到的所有素数开始计数,直到找到所需的n th为止. 这可以通过不同程度的复杂性和效率来完成,并且在概念上有两种不同的实现方式. ...
- java ftp 关闭连接_java - 使用Java Apache FTPClient进行FTP TLS获取“握手时远程主机关闭连接”[重复] - 堆栈内存溢出...
我在Windows 10 64x上为FTP TLS(org.apache.commons.net.ftp)运行了一个Java(1.8)程序: FTPSClient ftpClient = new FT ...
- java jtextfield 高度_java - 固定的JTextField的高度和宽度 - 堆栈内存溢出
我最近一直在使用Java Swing,当我尝试在彼此之间添加3个JTextField时,它们会填充整个JFrame. 但是我希望它们具有固定的高度和宽度. 我能做什么? 由于我是该主题的新手,因此我无 ...
- java服务器返回错误码,java - java.io.IOException:服务器返回URL的HTTP响应代码:409 - 堆栈内存溢出...
我正在使用某些应用程序的API下载文档. 问题是,当我尝试解析inputStream时,它将引发响应代码409异常. 但是最大的问题是它有时会抛出此异常. 此异常的原因是什么? 这是我的代码: URL ...
- java spring 打包后找不到路径,java - Spring中的类路径问题:找不到文件异常 - 堆栈内存溢出...
我有一个简单的Java Spring IO项目,其中的一个类应该从csv文件读取,对于每个读取的记录,参数都存储在帐户对象列表中. 我正在使用Force IDE Luna,并且读取文件的Class C ...
- java mapper.readtree_java - 杰克逊的readValue和readTree:何时使用哪个? - 堆栈内存溢出...
我刚刚开始使用Jackson JSON库. 杰克逊是一个非常强大的库,但它有一个非常广泛的API. 很多事情可以通过多种方式完成. 这使得很难在杰克逊找到自己的方式 - 如何知道什么是正确/最好的做事 ...
- java游戏怎么导入jme3,java - JME:将带有纹理的Cinema 4d模型导入jMonkey Projekt - 堆栈内存溢出...
我的问题是: 现在,我想将其导出到我的jMonkeyEngine中,以将其设置在场景中并对其进行动画处理. 我试图将模型导出为.obj文件并将其加载到我的项目中(只是.obj文件). 结果是我没有纹理 ...
- java结果写入html,java - 将长字符串写入HTML文件,InputStream vs FileWriter vs BufferedReader - 堆栈内存溢出...
我对执行此操作的最佳方法有些困惑. 我在SO上看到了很多示例,许多答案有不同的解决方案. 因此,我想知道将非常长的字符串写入新的html文件的最有效方法(即,从字符串中生成html文件). 并且真的可 ...
最新文章
- python csv模块心得
- MySQL数据库将查询结果插入到其它表中
- 让你android手机变平板,手机瞬间变平板 两种形态随意换_手机Android频道-中关村在线...
- 1.7 Java try catch finally语句
- CV Code|计算机视觉开源周报20200601期
- 解读|数据分析的发展和演变经过哪几个阶段
- w10自动删除文件怎么关了_回收站删除的文件怎么恢复?
- python学习——numpy库
- TIOBE 年度榜单揭晓:C 语言夺冠,Python 紧随其后
- 河南理工大学计算机专业几本,2018河南理工大学是几本 是一本还是二本
- Python3的迭代器
- 谷歌浏览器插件Adblock Plus、OneTab~
- 一张图看明白金融数据架构
- vue的事件修饰符之.prevent
- 《孙子兵法战场机变之军争篇》
- 初识Cura3D打印开源项目
- C++重温笔记(一): C++再初识
- 数字电路实验 07 - | 计数器及其应用
- 一年赚一百万很简单(穷人翻身唯一出路)
- BurpSuite学习:在火狐浏览器使用foxyproxy添加代理127.0.0.1后无法正常上网
热门文章
- 如何高效地使用ERP管理系统
- 基于asp.net319一嗨租车汽车租赁系统
- 支持Jolla,支持Linux,支持开放,支持互联,Jolla屌丝逆袭
- python经典程序练习题-Python练习题(基础知识练习题(一))
- 去年华为晋身非洲智能手机市场前三,非洲之王受威胁
- 一组图片看完“自动驾驶”发展史
- webpack-webpack-dev-server
- android8.1官方下载,【安卓市场】安卓市场app官方下载 v7.8.1.81 手机版-七喜软件园...
- 计算机专业英文简历和求职信,毕业生通用英文简历范文和求职信.doc
- 小程序 项目文件夹命名导致的Bug