博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java中有关初始化的问题
阅读量:5362 次
发布时间:2019-06-15

本文共 732 字,大约阅读时间需要 2 分钟。

在类的内部,变量定义的先后顺序决定了初始化顺序,即使变量定义分散在方法定义之外,它们依旧会在任何方法(包括构造器)被调用之前得到初始化

其中初始化的顺序先是静态对象,其后是非静态对象

例如:

class Cat{    private Dog dog1=new Dog(1);    static private Dog dog2=new Dog(2);    public Cat(int n){        System.out.println("第"+n+"只猫");    }}class Dog{    public Dog(int n){        System.out.println("Dog("+n+")");    }}public class TestStatic {    public static void main(String[] args) {        System.out.println("test...");        Cat cat=new Cat(1);    }}  

运行结果:

test...Dog(2)Dog(1)第1只猫

  

cat类和dog类构造器中打印信息为了看初始化信息

在main方法中,创建了一个Cat类,除构造方法外,有两个对象,一个是静态dog,另外一个是dog,因为静态对象有先初始化,所以先打印出Dog(2),其后才是Dog(1)

最后才调用cat的构造方法,打印出cat(1)

 

非静态实例初始化

{}里初始化的内容在构造器之前执行,且每次生成该类{}将会重新被初始化

 

转载于:https://www.cnblogs.com/Hdaydayup/p/7146622.html

你可能感兴趣的文章
Android 编程下的代码混淆
查看>>
animation属性
查看>>
页内的模块和组件抽象规划经验
查看>>
安全-分析深圳电信的新型HTTP劫持方式
查看>>
将Centos的yum源更换为国内的阿里云源
查看>>
git diff 的用法
查看>>
一段sql的优化
查看>>
十进制与十六进制的相互转换
查看>>
在Flex中用Validator检测数字、字符串、Email.
查看>>
[leetcode]4Sum
查看>>
POJ1062 昂贵的聘礼
查看>>
【零基础学习iOS开发】【02-C语言】08-基本运算
查看>>
Java 将指定字符串连接到此字符串的结尾 concat()
查看>>
Hibernate Criterion
查看>>
Python知识
查看>>
我们为什么要搞长沙.NET技术社区(三)
查看>>
杭电acm Cake
查看>>
js函数中this的指向
查看>>
c++ 引用方式传递数组
查看>>
HBase学习之路 (九)HBase phoenix的使用
查看>>