iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Java中怎么实现初始化
  • 921
分享到

Java中怎么实现初始化

2023-06-17 11:06:33 921人浏览 泡泡鱼
摘要

Java中怎么实现初始化,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1、静态块优先程序首先会执行静态块的内容,这也就有了不写main方法就跑hello wor

Java中怎么实现初始化,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

1、静态块优先

程序首先会执行静态块的内容,这也就有了不写main方法就跑hello world的小故事,相信说到这里,大家就有了思路。我们都知道静态类型是和类绑定的而不是和具体实例对象绑定。也就是说,引用一个静态变量的方式往往是MyClass.xxx.这个特点决定了其在编译的阶段就已经分配好了固定的空间。

2、父类优先

由于继承的特性,当导出类(子类)的对象被创建的时候,程序将向上追溯到最初的父类,执行其初始化的操作。然后一次向下调用子类的构造函数。按照这个思路,那么每一个实例***个要初始化的必定是Object类了。

3、成员变量优先

一定要注意,成员变量按照其声明的顺序会被初始化,并且立刻被初始化为二进制的0,这个动作发生在所有事件之前,也就是编译器会立刻将分配给对象的空间初始化。一会的小例子将证明这一点。

***就是调用类的构造方法了。

下面有一个不错的例子,为了演示成员变量最早被初始化为0了,我们将在父类的构造函数中调用子类的方法(利用了多态)。

package fruit;      import vege.Inner;           public class Fruit {       //static block       static {           System.out.println("In Fruit static");       }              private Inner i = new Inner(); //a private member       public Fruit(){           System.out.println("Before Fruit Constructor");           show();  //由于多态的特性,此处子类Apple覆写的方法会被调用           System.out.println("After Fruit Constructor");       }       public void show(){           System.out.println("show:Fruit.");       }              public static void main(String[] args) {           // TODO code application logic here           new Apple(3);       }             }

现在父类中须要初始化的有

  • 静态块

  • 一个Inner类私有成员

  • 构造函数

现在我们看子类的代码

package fruit;      public class Apple extends Fruit{      //静态块       static{           System.out.println("In Apple static");       }       private int weight = 1; //初始化为1 注意区别这里和 初始化为0              public Apple(int para_weight){           System.out.println("Before Apple Constructer: weight = "+weight);           weight = para_weight;           System.out.println("Apple Constructor: weight="+weight);       }              @Override      public void show(){           System.out.println("show apple: weight =" + weight);       }          }

子类须要初始化的有

  • 静态块

  • 私有成员weight

  • 构造函数

那么当我们运行的时候会有怎样的结果呢?猜想。。。。。

下面就是执行的结果:

Java中怎么实现初始化

Look! 首先执行父类的静态块,之后是子类的静态块,这两个应该没有什么问题。接下来就是对父类成员变量的初始化了。首先是父类的私有成员Inner对象,打印了一条“ Inner Constructor”。

接下来就是父类的构造函数,可见由于java的多态性,Fruit的构造方法调用了其子类Apple的show方法,并且我们可以清晰的看到,此刻Apple类中weight变量的值是0!说明,类的成员变量无论是否赋值,在各种初始化之前早已被设置为二进制0了。

于是乎我想起了很多关于java的书都在说。。“如果类的私有变量没有赋值,就会被设置为0”。。这句话显然把时间弄混了。。。应该是编译器早已初始化了私有变量,均为0,之后才会执行到赋值语句。

父类的构造函数结束之后,再次回到子类,初始化私有变量(也就是我们常说的赋值语句,因为初始为0的工作早做完了)。所以我们才会看到“Before Apple Constructor weight = 1”,执行完构造函数后,我们就看到了weight终于变成了我们创建对象是传进的3了,呼,初始化结束。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网精选频道,感谢您对编程网的支持。

--结束END--

本文标题: Java中怎么实现初始化

本文链接: https://www.lsjlt.com/news/288487.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java中怎么实现初始化
    Java中怎么实现初始化,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1、静态块优先程序首先会执行静态块的内容,这也就有了不写main方法就跑hello wor...
    99+
    2023-06-17
  • java初始化数组为空怎么实现
    在Java中,可以使用null来表示一个空数组。以下是一种初始化数组为空的方法: 声明一个数组变量,但不分配内存空间。 使用nul...
    99+
    2023-10-27
    java
  • Java数组怎么实现动态初始化
    这篇文章主要讲解了“Java数组怎么实现动态初始化”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java数组怎么实现动态初始化”吧!概念1、数组动态初始化只给定数组长度,系统默认初始化值。2...
    99+
    2023-06-30
  • C#中怎么实现对象初始化
    本篇文章给大家分享的是有关C#中怎么实现对象初始化,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。C#对象初始化器 (Object Initializers) :.NET2.0框...
    99+
    2023-06-17
  • java中的对象怎么初始化
    第一步:加载该类,一个java对象在初始化前会进行类加载,在JVM中生成Class对象。加载一个类会进行如下操作,下面给出递归描述。如果该类有父类,则先加载其父类。    i 初始化该类静态成员ii 执行该类静态代码块第二步:创建对象,如果...
    99+
    2015-01-14
    java 对象 初始化
  • 怎么在java中初始化数组
    这篇文章给大家介绍怎么在java中初始化数组,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Java可以用来干什么Java主要应用于:1. web开发;2. Android开发;3. 客户端开发;4. 网页开发;5. 企...
    99+
    2023-06-14
  • Java中怎样初始化数组
    本篇文章给大家分享的是有关Java中怎样初始化数组,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一个数组的示例让我们在 Java 中创建一个长度为 10 的整型数组:int[]...
    99+
    2023-06-16
  • Java中实例初始化和静态初始化的过程详解
    目录一、实例初始化1.1 实例初始化过程1.2 实例初始化的顺序1.3 实例初始化的注意事项二、静态初始化2.1 静态初始化过程2.2 静态初始化的顺序2.3 静态初始化的注意事项三...
    99+
    2023-05-18
    Java实例初始化和静态初始化 Java实例初始化 Java静态初始化 Java初始化
  • Java中怎么初始化类与对象
    Java中怎么初始化类与对象,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。首先,我们先看看下面的代码,这就是很经典的考察方式。public class In...
    99+
    2023-06-17
  • java什么是初始化?
    java什么是初始化?初始化就是给变量一个初始值。初始化的目的是为了让变量有值,防止使用时出现异常。【推荐学习:java课程】例如:声明一个变量:String aa = "abc"; int cc =0;其中abc和0就是初始化的值,最后值...
    99+
    2018-07-08
    java教程 java 初始化
  • java什么是初始化
    java什么是初始化初始化就是给变量一个初始值。例如:声明一个变量:String php = "www.php.cn"; int score = 100; 其中 www.php.cn 和 100 就是初始化的值,最后值不一定是 www.p...
    99+
    2016-01-15
    java基础 java 初始化
  • go map初始化赋值怎么实现
    在Go语言中,可以使用字面量的方式对map进行初始化赋值。以下是几种常见的map初始化赋值方法: 使用make函数创建一个空的m...
    99+
    2023-10-23
    go
  • C++11类内初始化怎么实现
    本篇内容主要讲解“C++11类内初始化怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++11类内初始化怎么实现”吧!重复的初始化代码考察下面的代码:enum LineStyle{&nb...
    99+
    2023-06-19
  • 怎么在tomcat中调用Servlet实现初始化
    怎么在tomcat中调用Servlet实现初始化?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、代码启动tomcat平常我们不论是Windows还是linux,我们都是通过脚...
    99+
    2023-06-14
  • java实现数组的动态初始化
    一、什么是数组的初始化就是为数组开辟连续的内存空间,并为每个数组元素赋予值。二、如何对数组进行初始化1、动态初始化 只指定长度,由系统给出初始化值int[] arr = new int[5];推荐相关视频教程:java视频教程2、静态初始化...
    99+
    2019-02-20
    java 实现 数组 动态初始化
  • 怎么在Java中动态初始化数组
    怎么在Java中动态初始化数组?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Java可以用来干什么Java主要应用于:1. web开发;2. Android开发;3. 客户...
    99+
    2023-06-14
  • 怎么在Java中初始化二维数组
    今天就跟大家聊聊有关怎么在Java中初始化二维数组,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Java可以用来干什么Java主要应用于:1. web开发;2. Android开发;...
    99+
    2023-06-14
  • JAVA对象怎么进行初始化
    在Java中,对象可以通过以下几种方式进行初始化:1. 使用new关键字:通过使用new关键字可以创建一个对象,并调用构造方法对对象...
    99+
    2023-09-09
    JAVA
  • java怎么初始化map并赋值
    Java中初始化Map并赋值有多种方式,具体取决于使用的Map实现类。以下是几种常用的方式:1. 使用HashMap初始化并赋值:`...
    99+
    2023-08-24
    java map
  • java中如何初始化MediaRecorder
    小编给大家分享一下java中如何初始化MediaRecorder,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!java中初始化MediaRecorder实现代码:...
    99+
    2023-05-30
    java mediarecorder
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作