码迷,mamicode.com
首页 > 其他好文 > 详细

动手动脑1

时间:2018-10-21 16:51:57      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:div   nbsp   java   foo   obj   字符串   str   out   系统   


package test; public class Test{ public static void main(String[]agrs) { Foo obj1=new Foo(); } } class Foo{ int value; public Foo(int initValue) { value=initValue; } }

 因为Test类构造了class Foo{}方法导致系统不再提供默认无参数的构造方法,然而此类并没有符合class foo的构造方法应该有参数的Foo obj1=new Foo(x);x是一个整数。

2.

package test;
 class InitializeBlockClass{
	 {
	 field=200;
 }
 public int field=100;
 public InitializeBlockClass(int value) {
	 this.field=value;
 }
 public InitializeBlockClass() {

 }
 public static void main(String[]agrs) {
	 InitializeBlockClass obj=new  InitializeBlockClass();
	 System.out.println(obj.field);//?
	
         obj=new  InitializeBlockClass(300);
         System.out.println(obj.field);//?
 }}

  输出的结果为100 300

执行类成员定义时指定的默认值或类的初始化块,到底执行哪一个要看哪一个“排在前面”。 执行类的构造函数。

类的初始化块不接收任何的参数,而且只要一创建类的对象,它们就会被执行。因此,适合于封装那些“对象创建时必须执行的代码”。

3.

package test;
class Root{ static{ System.out.println("Root的静态初始化块"); } { System.out.println("Root的普通初始化块"); } public Root() { System.out.println("Root的无参数的构造器"); } } class Mid extends Root { static{ System.out.println("Mid的静态初始化块"); } { System.out.println("Mid的普通初始化块"); } public Mid() { System.out.println("Mid的无参数的构造器"); } public Mid(String msg) { //通过this调用同一类中重载的构造器 this(); System.out.println("Mid的带参数构造器,其参数值:" + msg); } } class Leaf extends Mid { static{ System.out.println("Leaf的静态初始化块"); } { System.out.println("Leaf的普通初始化块"); } public Leaf() { //通过super调用父类中有一个字符串参数的构造器 super("Java初始化顺序演示"); System.out.println("执行Leaf的构造器"); } } public class TestStaticInitializeBlock { public static void main(String[] args) { new Leaf(); } }

  输出结果:

技术分享图片

静态初始化块只执行一次。 创建子类型的对象时,也会导致父类型的静态初始化块的执行。执行leaf()子类型也将Root的父类型也执行了

4.

package test;

public class Test{
	public int i=1;
	public static void main(String[]agrs) {
		Test s=new Test();
		
		System.out.println("x="+s.i);
		
	}
	
}

  技术分享图片

静态方法中访问类的实例成员时需要再静态方法中创建该类的对象,一次能访问类的实例成员。

 

动手动脑1

标签:div   nbsp   java   foo   obj   字符串   str   out   系统   

原文地址:https://www.cnblogs.com/zlj843767688/p/9825424.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!