实例变量的初始化方法

第一种:通过构造函数进行初始化。

第二种:通过声明实例字段初始化。

第三种:通过对象代码块初始化。

通过构造函数进行初始化方法

通过构造函数进行对象初始化,必须在类中声明一个带参数的构造函数。从而通过类创建实例的同时对实例变量进行初始化。注:如果没有声明带参数的构造函数,调用默认构造函数,默认构造函数也对实例变量进行了默认初始化。例如:

1 packagecom.java.test;2

3

4

5 classProduct {6 private intid;7 privateString name;8

9 publicProduct() {10

11 }12

13 public Product(intid, String name) {14 this.id =id;15 this.name =name;16 }17 publicString toString()18 {19 return id+","+name;20 }21

22 public voidprint()23 {24 System.out.println(toString());25 }26 }27

28 public classTestProduct29 {30 public static voidmain(String[]args)31 {32 Product c=newProduct();33 c.print();34 //结果是0,null

35 Product s=new Product(10,"apple");36 s.print();37 //结果是10,apple

38

39 }40 }

通过声明实例字段进行初始化方法

通过实例变量声明实例变量就是在创建类的时候,对实例变量进行初始化。例如:

1 classSomeClass2 {3 static booleanb;4 static byteby;5 static charc;6 static doubled;7 static floatf;8 static inti;9 static longl;10 static shorts;11 staticString st;12 }

初始化结果为

false

0\u00000.0

0.0

0

0

0

null

通过对象代码块进行初始化方法

对象代码块初始化是在类中声明代码块来进行声明实例变量。对象代码块的执行是在对象执行构造函数前执行。对象代码块前没有static关键字,加static关键字就变为类代码块。下面通过一个例子来说明:

1 packagetest;2

3

4

5 classProduct {6 private intid;7 privateString name;8

9 publicProduct() {10

11 }12

13 public Product(intid, String name) {14 this.id =id;15 this.name =name;16 }17 publicString toString()18 {19 return id+","+name;20 }21 {

22 name="Sharplee";

23 }24 public voidprint()25 {26 System.out.println(toString());27 }28

29 {

30 System.out.println("id is "+id);

31 System.out.println("name is "+name);

32 }33

34 }35

36 public classTestProduct37 {38 public static voidmain(String[]args)39 {40 Product c=newProduct();//id is0 name isSharplee41 c.print();//0,Sharplee42

43 Product s=new Product(10,"apple");//id is0 name isSharplee44 s.print();//10,apple45

46

47 }48 }

通过该代码能够看出代码块执行也是从上到下的顺序,并且代码块执行是在构造函数之前。代码块的出现,是便于匿名类来使用的。匿名类是不创建构造函数的。因此在初始化变量的时候,可以使用代码块。

类代码块

类代码块就是在加载类的时候进行初始化。例如:

1 packagetest;2

3

4

5 classProduct {6 private static intprice;7 private intid;8 privateString name;9

10 publicProduct() {11

12 }13 static

14 {15 price=100;16 System.out.println("the price is:"+price);17 }18 public Product(int id, String name,intprice) {19 this.id =id;20 this.name =name;21 this.price=price;22 }23 publicString toString()24 {25 return id+","+name+","+price;26 }27 {28 name="Sharplee";29 }30 public voidprint()31 {32 System.out.println(toString());33 }34

35 {36 System.out.println("id is "+id);37 System.out.println("name is "+name);38 System.out.println(price);39 }40

41 }42

43 public classTestProduct44 {45 public static voidmain(String[]args)46 {47 Product c=newProduct();48 c.print();49

50 Product s=new Product(10,"apple",300);51 s.print();52

53

54

55 }56 }

类代码块以及块代码块的区别

类代码块无论创建多少个对象都只初始化一次,而对象代码块在创建的对象的时候都执行。

类代码块初始化必须在前面加关键字static,而对象代码块则不用加。

类代码块只能使用类变量进行初始化以及在代码块中声明变量,而对象代码块则没有限制。

1 packagetest;2

3

4

5 classProduct {6 private static intprice;7 private intid;8 privateString name;9

10 publicProduct() {11

12 }13 static

14 {15 、16 price=100;17 System.out.println("the price is:"+price);18 }19 static

20 {21 price++;22 }23

24 public Product(int id, String name,intprice) {25 this.id =id;26 this.name =name;27 this.price=price;28 }29 publicString toString()30 {31 return id+","+name+","+price;32 }33 {34 name="Sharplee";35 }36 public voidprint()37 {38 System.out.println(toString());39 }40

41 {42 System.out.println("id is "+id);43 System.out.println("name is "+name);44 System.out.println(price);45 }46

47 }48

49 public classTestProduct50 {51 public static voidmain(String[]args)52 {53 Product p=null;54 Product t=newProduct();55 Product c=newProduct();56

57

58 }59 }

View Code

1 packagetest;2

3

4

5 classProduct {6 private static intprice;7 private intid;8 privateString name;9

10 publicProduct() {11

12 }13 static

14 {15 int ss=10;16 price=100;17 System.out.println("the price is:"+price);18 }19

20 {21 price++;22 }23

24 public Product(int id, String name,intprice) {25 this.id =id;26 this.name =name;27 this.price=price;28 }29 publicString toString()30 {31 return id+","+name+","+price;32 }33 {34 name="Sharplee";35 }36 public voidprint()37 {38 System.out.println(toString());39 }40

41 {42 System.out.println("id is "+id);43 System.out.println("name is "+name);44 System.out.println(price);45 }46

47 }48

49 public classTestProduct50 {51 public static voidmain(String[]args)52 {53 Product p=null;54 Product t=newProduct();55 Product c=newProduct();56

57

58 }59 }

View Code

对象创建的执行顺序

总结:对象创建首先进行类实例变量以及类代码块的初始化。接着是类的父类的对象代码块执行,类的父类构造函数执行,最后执行类中代码块以及类的构造函数。

java 实例变量初始化_java学习之实例变量初始化相关推荐

  1. java类初始化_Java的类/实例初始化过程

    昨天看到群里面有人分享了一道题目,我答错了,于是趁机了解了下Java的类/对象初始化过程: 程序的输出见文章最后 程序A主要考察的是 类实例初始化 .简单验证了下,类实例初始化过程如下:父类实例初始化 ...

  2. java用一个方法对变量初始化_java中怎么给变量初始化?

    展开全部 不同的变量初始化32313133353236313431303231363533e4b893e5b19e31333337613764方法不同. 变量包括:类的属性,或者叫值域 方法里的局部变 ...

  3. java类的静态变量调用_Java学习笔记八---类的静态变量与静态方法的访问与调用方式...

    静态变量又称类变量,静态方法又称类方法,它们统称为静态成员或类成员.静态成员由static修饰,是属于整个类的,所有的对象共享这些静态成员.不需要创建任何对象,静态成员在类装载时就已初始化了,整个运行 ...

  4. java怎么给类中的私有变量赋值_Java学习笔记分享 如何理解接口抽象类和关键字...

    不知不觉中,千锋重庆学习Java已经半个月了,同学们感觉受益匪浅.有一个同学本来是软件编程专业基础却是意外的差,什么标识符.变量的命名规则.方法的定义.数组.面向对象的封装.继承.多态,还有接口.抽象 ...

  5. java 成员变量的初始化_Java类变量和成员变量初始化过程

    一.类的初始化 对于类的初始化:类的初始化一般只初始化一次,类的初始化主要是初始化静态成员变量. 类的编译决定了类的初始化过程. 编译器生成的class文件主要对定义在源文件中的类进行了如下的更改: ...

  6. Java入参关键字_Java基础17-成员变量、return关键字和多参方法

    1.成员变量 在类中声明的变量为成员变量 //Dog类 class Dog{ String name;//成员变量 } public class Test1{ public static void m ...

  7. java为什么要初始化_JAVA中到底要怎么样初始化

    Java中的变量作用范围: 1. 类的属性,或者叫值域 2. 方法里的局部变量 3. 方法的参数 对于第一种变量,Java虚拟机会自动进行初始化.如果给出了初始值,则初始化为该初始值.如果没有给出,则 ...

  8. java作用域对象笔记_Java学习笔记(七)——对象

    一.类与对象 1.类的定义 类就是模型,确定对象将会拥有的特征(属性)和行为(方法). 2.类的特点 (1)类是对象的类型 (2)具有相同属性和方法的一组对象的集合. 3.对象的属性: 对象具有的各种 ...

  9. java 两个大括号_Java中的双大括号初始化

    什么是Java双大括号初始化? 通常情况下,初始化Java集合并向其中添加几个元素的步骤如下: Set set = new HashSet<>(); set.add(1); set.add ...

最新文章

  1. 【ACM】【STL】stack应用
  2. python基础教程pdf百度云-《Python基础教程(第3版)》PDF高清版
  3. Lambda 表达式(=):网络摘抄,自学用,侵删。
  4. 如果使用StateServer或SQLServer,会遇到的问题。。。。
  5. HTML 表格中的行合并与列合并
  6. 第一次Java 8体验
  7. 让“学生看得明白” 复旦数学教授在无人教室录课程板书
  8. java面相对象的关键字_Java面向对象关键字有哪些?
  9. iview 按需引入解决加载慢的问题
  10. linux从青铜到王者学习好文
  11. Invalid maximum heap size: -Xmx
  12. FFMPEG硬件编解码器使用
  13. 如何基于Debian部署UBNT Unifi控制器?
  14. 安徽省考计算机专业知识分值分布,安徽省考行测题型分布和分值
  15. 《Linux系统管理与应用》课程知识点整理+书后习题全文解答(Linux知识点大纲)
  16. 线索二叉树的前序遍历
  17. WebGL开源框架列举概述
  18. 解决国内网页无法加载reCaptcha的方法
  19. PHP PEAR网站遭黑客入侵,官方软件安装包被篡改
  20. sketch android 切图,Sketch 利器:简单三步,一「刀」切图

热门文章

  1. Matplotlib实例教程(十一)堆栈图
  2. python 判断目录和文件是否存在,若不存在即创建
  3. 深度学习100例-生成对抗网络(GAN)手写数字生成 | 第18天
  4. WordCount代码详解
  5. Python编程基础:第十二节 嵌套循环Nested Loops
  6. 修改jupyter的保存位置
  7. 资深大牛吐血总结:如何成为一名合格的云架构师?
  8. 学习中接触的计算机概念
  9. no awt in java.libary.path
  10. 覆盖你 80 % 网络生活的,竟是这样一家神秘实验室