java中的动手动脑
2024-09-05 01:08:49
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一个。过运用==进行比较时实部相等的。
最新文章
- Leetcode 130. Surrounded Regions
- 洛谷 P1433 吃奶酪 Label:dfs &;&; 剪枝Ex
- URL、URI和URN三者之间的区别
- Combine small files to Sequence file
- Java获取各种常用时间方法大全
- 7Z命令行
- 11g RMAN Restore archivelog用法
- Bootstrap_Javascript_弹窗
- 索引时利用K-邻近算法过滤重复歌曲
- Windows打印体系结构之Print Spooler概念与架构
- java中printf中用法详解
- UML之轻松入门(3)-SRP做好厨子,让别人编程去吧
- 获取鼠标点击相对于Canva位置的2种方法
- WPF TextBox 正则验证 大于等于0 小于等于1 的两位小数
- .gitignore文件的配置和生效
- ES Grafana
- linux 安装 nvm
- python Gevent – 高性能的Python并发框架
- 解决Eclipse中文乱码的问题
- Odoo 8.0 new API 概述
热门文章
- 事务的隔离级别,mysql中开启事务、django中开启事务
- CentOS安装docker ce的三种方式
- 【MVC】使用Jquery缓存数据
- react / config\webpack.config.js 编译后去掉map 减小体积 shouldUseSourceMap = false
- mysql 如果没有密码 就不能远程连接
- Spring Cloud - Nacos注册中心入门单机模式及集群模式
- Vulnhub 靶场 Dijnn WP
- 面试话痨(二)C:JAVA String,别以为你穿个马甲我就不认识你了
- Journal of Proteome Research | iHPDM: In Silico Human Proteome Digestion Map with Proteolytic Peptide Analysis and Graphical Visualizations(iHPDM: 人类蛋白质组理论酶解图谱的水解肽段分析和可视化展示)| (解读人:邓亚美)
- Web_jQuery