最新Java实用教程第10讲成员的初始化(共15张PPT课件).pptx
-
资源ID:24213892
资源大小:140.27KB
全文页数:15页
- 资源格式: PPTX
下载积分:20金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
最新Java实用教程第10讲成员的初始化(共15张PPT课件).pptx
第10讲 成员(chngyun)的初始化 10.1定义初始化定义初始化 10.2 构造方法初始化构造方法初始化 10.3 实例实例(shl)语句块语句块 10.4 静态数据的初始化块静态数据的初始化块 10.5 静态语句块静态语句块 10.6 类的加载及初始化顺序类的加载及初始化顺序 10.7 本讲小结本讲小结第一页,共十五页。Java会尽量保证所有变量(局部变量除外)在使用前都能得到恰当的初始化,而局部变量则是通过编译时出错的形式来提醒程序员。示例代码如下: public void count() int i; i+; /编译时出错,局部变量i可能尚未初始化Java会为基本数据类型的数据成员(chngyun)赋一个初始值,这个初始值为这种类型下的“0”。而对象的引用也会被赋个初始值,这个初始值为null。示例代码如下: 分别声明boolean t;char c;byte b;short s;int i;long l;float f;double d;类型的变量,并在控制台上进行打印输出;第二页,共十五页。10.1 定义定义(dngy)初始化初始化 最直接的方法(fngf)是在定义该类成员变量的时为其赋初值,这种方法(fngf)称为定义初始化,也叫指定初始化。示例代码如下:public class InitialValuesOne boolean t = true;char c = a;int i = 3;double d = 1.2;MemberInitialValues re = new MemberInitialValues();第三页,共十五页。10.1 定义定义(dngy)初始化初始化 这种方法简单直观,但在使用时应避免“向前引用”的发生。如:public class ForwardReference int x = f2(i); /非法的向前引用,因为这是i还没有被初始化int i = f1();int f1() return 10;int f2(int m) return m+1; 使用这种方法创建的所有对象(duxing),其成员变量都具有相同的初始值。有时我们需要在创建对象(duxing)时给定初始值。第四页,共十五页。10.2 构造方法初始化构造方法初始化可以使用构造方法进行初始化,这时成员变量的初始化顺序是先执行(zhxng)定义初始化,再运行构造方法。示例代码如下:public class InitialValuesTwo int i = 1; InitialValuesTwo()i = 10; InitialValuesTwo(int i)this.i = i; public static void main(String args)InitialValuesTwo t1 = new InitialValuesTwo();System.out.println(t1.i = +t1.i);InitialValuesTwo t2 = new InitialValuesTwo(100);System.out.println(t2.i = +t2.i); 第五页,共十五页。10.3 实例实例(shl)语句块语句块Java可以进行实例初始化,用来初始化对象的非静态(jngti)成员,示例代码如下:public class InstanceBlock int i=1;System.out.println(1:i = +i);i = 10;InstanceBlock()System.out.println(2:i = +i);i=100;public static void main(String args) InstanceBlock a = new InstanceBlock();System.out.println(3:i = +a.i); /大括号部分称为实例语句块,其顺序在定义初始化之后,构造函数之前。大括号部分称为实例语句块,其顺序在定义初始化之后,构造函数之前。第六页,共十五页。10.4 静态数据的初始化静态数据的初始化每个对象的存储空间相互独立,实例变量存储在其中。而静态变量存放在静态存储区,属于类的变量,所有对象共同持有(ch yu)。所以静态变量只初始化一次。静态变量由static修饰,示例代码如下:public class StaticInitial public static int i = 1;public static void main(String args) System.out.println(i = + i);i=10; StaticInitial s1 = new StaticInitial(); System.out.println(s1.i = + s1.i); StaticInitial.i=100; StaticInitial s2 = new StaticInitial(); System.out.println(s2.i = + s2.i); System.out.println(StaticInitial.i = + StaticInitial.i);第七页,共十五页。10.4 静态数据的初始化静态数据的初始化下面代码(di m)展示了静态变量只初始化一次:class ComputerComputer(int maker)System.out.println(Computer( + maker +);class Electricstatic Computer b1 = new Computer(1);Electric()System.out.println(Electric();Computer b2 = new Computer(2);public class StaticInitialTwo static Electric e = new Electric();public static void main(String args) System.out.println(进入main()函数.);new Electric();第八页,共十五页。10.5 静态静态(jngti)语句块语句块Java允许将多个静态初始化动作放在一起组成一个(y )静态语句块,与静态初始化一样,静态语句块仅执行一次。示例代码如下:public class StaticBlock static int i=1;static i=10;System.out.println(i = + i);public static void main(String args) StaticBlock b;第九页,共十五页。10.6 类的加载及初始化顺序类的加载及初始化顺序(shnx) Java中每个类的编译代码都存在于它自己独立的文件中,该文件只在被使用时才被加载到内存。通常加载发生在创建该类的第一个对象时,但访问该类的static变量或static方法时,该类也会被加载。所有实例成员(chngyun)会按照定义的顺序进行初始化,而static的成员(chngyun)仅被初始化一次。变量的初始化顺序分为没有继承时和继承时两种; 第十页,共十五页。10.6 类的加载及初始化顺序类的加载及初始化顺序(shnx) (一)没有继承时,变量的初始化顺序: (1)静态成员变量的默认初始化。(整型为0,浮点型为0.0,布尔型为false,字符型为u0000,引用型为null) (2)静态成员的定义初始化和静态语句块的初始化。(按照在代码中出现的顺序) 上面(1)和(2)在类加载时只执行一次。 (3)运行main方法(fngf),如果main中有创建对象的语句,则在堆中给类的实例分配内存空间,new之后空间清零。 (4)实例变量的默认初始化。(整型为0,浮点型为0.0,布尔型为false,字符型为u0000,引用型为null) (5)实例变量的定义初始化和实例语句块的初始化。(按照在代码中出现的顺序) (6)执行构造函数。 第十一页,共十五页。10.6 类的加载及初始化顺序类的加载及初始化顺序(shnx) (二)有继承时,变量的初始化顺序: (1)当类第一次使用时,JVM就会加载该类,如果该类存在父类,那么就先加载父类,再加载子类,这是一个递归过程。在类加载中,首先进行静态变量的默认初始化,然后按照在类中声明的顺序执行静态成员的定义初始化和静态语句块的初始化。注:这个(zh ge)过程从父类到子类,并且只会执行一次。 (2)当父类与子类的静态代码初始化完成后,如果有创建子类对象的语句,先初始化父类的实例变量和实例语句块。然后再初始化子类的实例变量和实例语句块,这是一个递归的过程。第十二页,共十五页。14.6 本讲小结本讲小结(xioji) 本讲首先讲述了类中成员变量的初始化方式,包括定义初始化,使用构造方法进行(jnxng)初始化,使用语句块进行(jnxng)初始化。其次讲述了类中成员的初始化顺序以及在有继承关系的类中变量的初始化顺序。第十三页,共十五页。讲后练习讲后练习(linx) 1、总结变量初始化的方式(fngsh)有哪几种? 2、总结类的初始化顺序。 3、总结在有继承关系的类中变量的初始化顺序。第十四页,共十五页。内容(nirng)总结第10讲 成员(chngyun)的初始化。System.out.println(t1.i = +t1.i)。System.out.println(t2.i = +t2.i)。System.out.println(s1.i = + s1.i)。System.out.println(s2.i = + s2.i)。System.out.println(Computer( + maker +)第十五页,共十五页。