1.关于构造函数的问题

为什么上面的代码不能通过编译?

因为当你没有定义构造函数时,java编译器在编译时会自动生成一个无参的构造函数,上面的代码就可以进行执行了。但是当你顶一个构造函数时,编译器将不会在自动生成一个无参的构造函数,所以上述代码不会通过编译。

2.静态初始化块的问题

class Root
{
static{
System.out.println("Root的静态初始化块");
} {
System.out.println("Root的普通初始化块");
}
public Root()
{
System.out.println("Root的无参数的构造器");
}
}
class Mid extends Root
{
static{
System.out.println("Mid的静态初始化块");
}
{
System.out.println("Mid的普通初始化块");
}
public Mid()
{
System.out.println("Mid的无参数的构造器");
}
public Mid(String msg)
{
//通过this调用同一类中重载的构造器
this();
System.out.println("Mid的带参数构造器,其参数值:" + msg);
}
}
class Leaf extends Mid
{
static{
System.out.println("Leaf的静态初始化块");
} {
System.out.println("Leaf的普通初始化块");
} public Leaf()
{
//通过super调用父类中有一个字符串参数的构造器
super("Java初始化顺序演示");
System.out.println("执行Leaf的构造器");
} } public class TestStaticInitializeBlock
{
public static void main(String[] args)
{
new Leaf(); }
}
复制代码

运行结果:

编译顺序是,在构建子类对象时,先构建父类的对象,之后一次执行相应的静态语句块,然后依次执行相应的普通语句块和构造函数,当在子类中有super();时,分类的构造函数使用super();调用的父类构造函数。

4.关于诡异的Integer

关于Integer相应的问题。

public class StrangeIntegerBehavior
{
public static void main(String[] args)
{
Integer i1=100; Integer j1=100; System.out.println(i1==j1); Integer i2=129; Integer j2=129; System.out.println(i2==j2); }
}

输出的结果:

讨论的问题是,为什么最后输出的false。

因为当写入Integer x = yyy时,编译器其实会调用Integer x = Integer.valueOf(yyy)这样子来进行赋值。其当数字在-128~127时会进行缓存一次,加入使用了Integer  y=120;编译器会new一个,当再次使用Integer x = 120;时编译器还会使用原来的地址,不会再new一个,而就像上面写的当赋值为129时候,超出了对应的范围,当再次初始化为129时,就会重新new一个。过运用==进行比较时实部相等的。

最新文章

  1. Leetcode 130. Surrounded Regions
  2. 洛谷 P1433 吃奶酪 Label:dfs && 剪枝Ex
  3. URL、URI和URN三者之间的区别
  4. Combine small files to Sequence file
  5. Java获取各种常用时间方法大全
  6. 7Z命令行
  7. 11g RMAN Restore archivelog用法
  8. Bootstrap_Javascript_弹窗
  9. 索引时利用K-邻近算法过滤重复歌曲
  10. Windows打印体系结构之Print Spooler概念与架构
  11. java中printf中用法详解
  12. UML之轻松入门(3)-SRP做好厨子,让别人编程去吧
  13. 获取鼠标点击相对于Canva位置的2种方法
  14. WPF TextBox 正则验证 大于等于0 小于等于1 的两位小数
  15. .gitignore文件的配置和生效
  16. ES Grafana
  17. linux 安装 nvm
  18. python Gevent – 高性能的Python并发框架
  19. 解决Eclipse中文乱码的问题
  20. Odoo 8.0 new API 概述

热门文章

  1. 事务的隔离级别,mysql中开启事务、django中开启事务
  2. CentOS安装docker ce的三种方式
  3. 【MVC】使用Jquery缓存数据
  4. react / config\webpack.config.js 编译后去掉map 减小体积 shouldUseSourceMap = false
  5. mysql 如果没有密码 就不能远程连接
  6. Spring Cloud - Nacos注册中心入门单机模式及集群模式
  7. Vulnhub 靶场 Dijnn WP
  8. 面试话痨(二)C:JAVA String,别以为你穿个马甲我就不认识你了
  9. Journal of Proteome Research | iHPDM: In Silico Human Proteome Digestion Map with Proteolytic Peptide Analysis and Graphical Visualizations(iHPDM: 人类蛋白质组理论酶解图谱的水解肽段分析和可视化展示)| (解读人:邓亚美)
  10. Web_jQuery