java 实例变量初始化_java学习之实例变量初始化
实例变量的初始化方法
第一种:通过构造函数进行初始化。
第二种:通过声明实例字段初始化。
第三种:通过对象代码块初始化。
通过构造函数进行初始化方法
通过构造函数进行对象初始化,必须在类中声明一个带参数的构造函数。从而通过类创建实例的同时对实例变量进行初始化。注:如果没有声明带参数的构造函数,调用默认构造函数,默认构造函数也对实例变量进行了默认初始化。例如:
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学习之实例变量初始化相关推荐
- java类初始化_Java的类/实例初始化过程
昨天看到群里面有人分享了一道题目,我答错了,于是趁机了解了下Java的类/对象初始化过程: 程序的输出见文章最后 程序A主要考察的是 类实例初始化 .简单验证了下,类实例初始化过程如下:父类实例初始化 ...
- java用一个方法对变量初始化_java中怎么给变量初始化?
展开全部 不同的变量初始化32313133353236313431303231363533e4b893e5b19e31333337613764方法不同. 变量包括:类的属性,或者叫值域 方法里的局部变 ...
- java类的静态变量调用_Java学习笔记八---类的静态变量与静态方法的访问与调用方式...
静态变量又称类变量,静态方法又称类方法,它们统称为静态成员或类成员.静态成员由static修饰,是属于整个类的,所有的对象共享这些静态成员.不需要创建任何对象,静态成员在类装载时就已初始化了,整个运行 ...
- java怎么给类中的私有变量赋值_Java学习笔记分享 如何理解接口抽象类和关键字...
不知不觉中,千锋重庆学习Java已经半个月了,同学们感觉受益匪浅.有一个同学本来是软件编程专业基础却是意外的差,什么标识符.变量的命名规则.方法的定义.数组.面向对象的封装.继承.多态,还有接口.抽象 ...
- java 成员变量的初始化_Java类变量和成员变量初始化过程
一.类的初始化 对于类的初始化:类的初始化一般只初始化一次,类的初始化主要是初始化静态成员变量. 类的编译决定了类的初始化过程. 编译器生成的class文件主要对定义在源文件中的类进行了如下的更改: ...
- Java入参关键字_Java基础17-成员变量、return关键字和多参方法
1.成员变量 在类中声明的变量为成员变量 //Dog类 class Dog{ String name;//成员变量 } public class Test1{ public static void m ...
- java为什么要初始化_JAVA中到底要怎么样初始化
Java中的变量作用范围: 1. 类的属性,或者叫值域 2. 方法里的局部变量 3. 方法的参数 对于第一种变量,Java虚拟机会自动进行初始化.如果给出了初始值,则初始化为该初始值.如果没有给出,则 ...
- java作用域对象笔记_Java学习笔记(七)——对象
一.类与对象 1.类的定义 类就是模型,确定对象将会拥有的特征(属性)和行为(方法). 2.类的特点 (1)类是对象的类型 (2)具有相同属性和方法的一组对象的集合. 3.对象的属性: 对象具有的各种 ...
- java 两个大括号_Java中的双大括号初始化
什么是Java双大括号初始化? 通常情况下,初始化Java集合并向其中添加几个元素的步骤如下: Set set = new HashSet<>(); set.add(1); set.add ...
最新文章
- 【ACM】【STL】stack应用
- python基础教程pdf百度云-《Python基础教程(第3版)》PDF高清版
- Lambda 表达式(=):网络摘抄,自学用,侵删。
- 如果使用StateServer或SQLServer,会遇到的问题。。。。
- HTML 表格中的行合并与列合并
- 第一次Java 8体验
- 让“学生看得明白” 复旦数学教授在无人教室录课程板书
- java面相对象的关键字_Java面向对象关键字有哪些?
- iview 按需引入解决加载慢的问题
- linux从青铜到王者学习好文
- Invalid maximum heap size: -Xmx
- FFMPEG硬件编解码器使用
- 如何基于Debian部署UBNT Unifi控制器?
- 安徽省考计算机专业知识分值分布,安徽省考行测题型分布和分值
- 《Linux系统管理与应用》课程知识点整理+书后习题全文解答(Linux知识点大纲)
- 线索二叉树的前序遍历
- WebGL开源框架列举概述
- 解决国内网页无法加载reCaptcha的方法
- PHP PEAR网站遭黑客入侵,官方软件安装包被篡改
- sketch android 切图,Sketch 利器:简单三步,一「刀」切图