推广 热搜: csgo  vue  angelababy  2023  gps  新车  htc  落地  app  p2p 

【java基础】static关键字--静态块

   2023-07-25 网络整理佚名1710
核心提示:我们可以看到,当我们new一个对象时,修饰的成员变量首先被初始化,随后是普通成员,最后调用类的构造方法完成初始化。在上面的例子中我们可以发现两个有意思的地方,第一个是当我们没有创建对象,而是通过类去调用类方法时,尽管该方法没有使用到任何的类成员,类成员还是在方法调用之前就初始化了,这说明,当我们第一次去使用一个类时,就会触发该类的成员初始化。

在解释关键字的第三种用法时,我们有必要重新整理一下对象的初始化过程。 以下面的代码为例:

com..学习;

班级书{

书(味精){

.out.(消息);

班级 {

Book book1 = new Book("book1成员变量初始化");

Book book2 = new Book("成员book2成员变量初始化");

(消息){

.out.(消息);

Book book3 = new Book("book3成员变量初始化");

Book book4 = new Book("成员book4成员变量初始化");

无效主([]参数){

p1 = new("p1初始化");

//~

在上面的例子中,类中组合了四个Book成员变量,两个是普通成员,两个是修饰类成员。 我们可以看到,当我们new一个对象时,首先初始化被修改的成员变量,然后是普通成员,最后调用类的构造函数完成初始化。 也就是说,在创建对象时,会先初始化被修改的成员,而且我们也可以看到,如果有多个被修改的成员,则会按照它们的顺序进行初始化。

其实装饰成员的初始化可以更早完成,看下面的例子:

班级书{

书(味精){

.out.(消息);

班级 {

Book book1 = new Book("book1成员变量初始化");

Book book2 = new Book("成员book2成员变量初始化");

(消息){

.out.(消息);

Book book3 = new Book("book3成员变量初始化");

Book book4 = new Book("成员book4成员变量初始化");

空白 () {

.out.("修改后的方法");

无效主([]参数){

.();

。出去。(”****************”);

p1 = new("p1初始化");

//~

在上面的例子中,我们可以发现两个有趣的地方。 第一个是当我们不创建对象,而是通过类调用类方法时,即使该方法没有使用任何类成员,但类成员在方法调用之前就被初始化了,这意味着当我们第一次使用一个类时,会触发该类的成员初始化。 第二个是,当我们使用类方法时,完成类的成员的初始化后,再new类的对象,被修改的类成员不会被再次初始化,也就是说被修改的类成员在程序运行过程中只需要初始化一次,不会被多次初始化。

回顾完对象的初始化之后,我们看的第三个函数就很简单了,就是当我们初始化修改的成员时,我们可以将它们放在一个以大括号开头并用大括号括起来的块语句中:

班级书{

书(味精){

.out.(消息);

班级 {

Book book1 = new Book("book1成员变量初始化");

书本2;

{

book2 = new Book("成员book2成员变量初始化");

book4 = new Book("成员book4成员变量初始化");

(消息){

.out.(消息);

Book book3 = new Book("book3成员变量初始化");

书书4;

空白 () {

.out.("修改后的方法");

无效主([]参数){

.();

。出去。(”****************”);

p1 = new("p1初始化");

//~

我们稍微修改一下前面的例子,可以看到结果是一样的。

 
反对 0举报 0 收藏 0 打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报
Powered By DESTOON