how2j.cn

本视频是解读性视频,所以希望您已经看过了本知识点的内容,并且编写了相应的代码之后,带着疑问来观看,这样收获才多。 不建议一开始就观看视频



5分38秒
本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)



步骤 1 : 对象属性初始化   
步骤 2 : 类属性初始化   
步骤 3 : 练习-属性初始化   
步骤 4 : 答案-属性初始化   

步骤 1 :

对象属性初始化

对象属性初始化有3种
1. 声明该属性的时候初始化
2. 构造方法中初始化
3. 初始化块
package charactor; public class Hero { public String name = "some hero"; //声明该属性的时候初始化 protected float hp; float maxHP; { maxHP = 200; //初始化块 } public Hero(){ hp = 100; //构造方法中初始化 } }
package charactor;

public class Hero {
	public String name = "some hero"; //声明该属性的时候初始化 
	protected float hp;
	float maxHP;
	
	{
		maxHP = 200; //初始化块
	}	
	
	public Hero(){
		hp = 100; //构造方法中初始化
		
	}
	
}
步骤 2 :

类属性初始化

类属性初始化有2种
1. 声明该属性的时候初始化
2. 静态初始化块
package charactor; public class Hero { public String name; protected float hp; float maxHP; //物品栏的容量 public static int itemCapacity=8; //声明的时候 初始化 static{ itemCapacity = 6;//静态初始化块 初始化 } public Hero(){ } public static void main(String[] args) { System.out.println(Hero.itemCapacity); } }
步骤 3 :

练习-属性初始化

Or  姿势不对,事倍功半! 点击查看做练习的正确姿势
对象属性的初始化有三种方式
故意把初始化块,放在构造方法下面,问题:

这三种方式,谁先执行?谁后执行?
package charactor; public class Hero { public String name = "some hero"; public Hero(){ name = "one hero"; } { name = "the hero"; } }
package charactor;

public class Hero {
	public String name = "some hero";  
	
	public Hero(){
		name = "one hero";
	}
	{
		name = "the hero";
	}
	
}
步骤 4 :

答案-属性初始化

在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
本视频是解读性视频,所以希望您已经看过了本答案的内容,带着疑问来观看,这样收获才多。 不建议一开始就观看视频

3分34秒 本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)


设计一个类方法

public static String getName(String pos){
}

在属性初始化的时候,调用这个方法的返回值。
观察这个方法的输出顺序
答案-属性初始化
package charactor; public class Hero { public String name =Hero.getName("属性声明") ; public Hero(){ name = Hero.getName("构造方法"); } { name = Hero.getName("初始化块"); } public static String getName(String pos){ String result= "name "+pos; System.out.println(result); return result; } public static void main(String[] args) { new Hero(); } }


HOW2J公众号,关注后实时获知布最新的教程和优惠活动,谢谢。


问答区域    
2018-10-08 反思:对象属性初始化的顺序
熵y
经过代码验证发现执行顺序如下 1.声明该对象时初始化 2.代码块初始化 3.构造函数初始化








答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到




2018-10-02 交作业
桀树南桃
1. 声明该属性的时候初始化 运行 2、块属性初始化 第二 3、构造方法中最后 运行








答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到




2018-08-28 按在地上摩擦~
2018-07-24 交作业
2018-07-21 显示
2018-06-28 关于主函数中new Hero()存在疑问?
2018-06-04 为什么name可以直接跟getName方法
2018-06-01 交作业呀交作业
2018-06-01 交作业呀交作业
2018-05-08 优先顺序
2018-04-24 优先顺序
2018-01-02 这个是我以前做的作业,详细的解读了静态代码块,构造代块和构造函数的先后顺序。据说一般面试都考这个,虽然我不干这行的!
2017-12-29 这段代码里的最后的 new Hero是什么意思,然后静态方法里的return是什么意思。
2017-11-15 pos是啥
2017-10-10 new Hero()为什么就会调用到对象属性?
2017-10-10 对象属性可以调用类方法,但是实例化之后并没有调用对象属性,为什么会自动打印出来呢
2017-06-30 初始化
2017-03-08 对象属性 && 类属性
2017-03-06 构造方法先执行????为什么???
2017-01-18 答案上的代码不太理解,自己写的代码输出的结果有问题
2017-01-18 视频看不了
2016-12-27 步骤三:练习
2016-10-10 Static的顺序问题
2016-06-22 这里面的hero对象哪儿来的
2016-06-20 步骤四代码实现过程中的具体细节是怎样的?
2016-03-14 类属性初始化static问题




提问之前请登陆
关于 JAVA 基础-类和对象-属性初始化 的提问

尽量提供截图代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 902680467
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
在已经存在的几千个提问里,有相当大的比例,是因为使用了和站长不同版本的开发环境导致的,比如 jdk, eclpise, idea, mysql,tomcat 等等软件的版本不一致。
请使用和站长一样的版本,可以节约自己大量的学习时间。 站长把教学中用的软件版本整理了,都统一放在了这里, 方便大家下载: http://how2j.cn/k/helloworld/helloworld-version/1718.html

上传截图