zoukankan      html  css  js  c++  java
  • 类与对象课后思考

    1.请输入并运行以下代码,得到什么结果?

    public class Test1 {
        public static void main(String[]args){
            Foo obj1=new Foo();
            Foo obj2=new Foo();
            System.out.println(obj1==obj2);
        }
    }
    class Foo
    {
        int value=100;
    }

    运行结果:

    当“==”施加于原始数据类型变量时,是比较变量所保存的数据是否相等 当“==”施加于引用类型变量时,是比较这两个变量是否引用同一对象。 引用代表地址,所以“==”实际上相当于比较两个引用类型变量中保存的对象地址是否相同,此代码内两个变量保存的对象地址不同,所以会出现false.

    2.以下代码为何无法通过编译?哪儿出错了?

    public class Test2 {
        public static void main(String[]args){
            Foo obj1=new Foo();
        }
    }
    class Foo
    {
        int value;
        public Foo(int initValue) {
        }
        value=initValue;
    }

    Foo obj1=new Foo()在此处调用的时候没有参数。

    (3)使用上页幻灯片中定义的类,以下代码输出结果是什么?

    public class Test2 {
    	public static void main(String[]args){
    		InitializeBlockClass obj=new InitializeBlockClass();
    		System.out.println(obj.field);
    		obj=new InitializeBlockClass(300);
    		System.out.println(obj.field);}
    }
    class InitializeBlockClass{
    {
    	field=200;
    }
    public int field=100;
    public InitializeBlockClass(int value){
    	this.field=value;
    }
    public  InitializeBlockClass(){
    }
    }
    

    输出结果为:

    Java进行初始化的地方有两个,初始化块和构造函数,其中初始化块又分为静态初始化块和实例初始化块(以上程序为实例初始化块)。静态初始化块是类中由static修饰的初始化块,实例初始化块为类中没有任何关键字修饰的初始化语句。

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

    当有两个构造函数时依据参数个数进行引用

    请依据代码的输出结果,自行总结Java字段初始化的规律。

    Java进行初始化的地方有两个,初始化块和构造函数,其中初始化块又分为静态初始化块和实例初始化块(以上程序为实例初始化块)。静态初始化块是类中由static修饰的初始化块,实例初始化块为类中没有任何关键字修饰的初始化语句。执行类成员定义时指定的默认值或类的初始化块,到底执行哪一个要看哪一个“排在前面”。当有两个构造函数时依据参数个数进行引用

    4.请运行TestStaticInitializeBlock.java示例,观察输出结果,总结出“静态初始化块的执行顺序”。

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

    5.静态方法中只允许访问静态数据,那么,如何在静态方法中访问类的实例成员(即没有附加static关键字的字段或方法)? 请编写代码验证你的想法。

    public class Test1{
        int value1= 2;//实例变量
        static int  value2= 3;//类的静态变量
       public static void print()//静态方法
      {   
            System.out.println("实例变量value1 = " + new Test1().value1);
            //在静态方法中访问类的实例变量需首先进行类的实例化
            System.out.println("静态变量value2= " + value2);
            //在静态方法中可直接访问类的静态变量
        }
         public static void main(String[] args) 
         {
             Test1 test = new Test1();
            Test1.print ();
             System.out.println("结果是 :实例变量 = " + test.value1);//访问实例成员
        }
        }
    

      

     从上面代码可知,先new创建一个对象,通过对象去调用成员方法和变量,

     6.使用类的静态字段和构造函数,我们可以跟踪某个类所创建对象的个数。请写一个类,在任何时候都可以向它查询“你已经创建了多少个对象?”。

    package Test1;
    
    public class Test1{
    	public static void main(String[]args){
    		Sum s=new Sum();
    		Sum s2=new Sum();	
    		Sum s3=new Sum();	
    	}
    }
    class Sum{
    	static int i=0;
    	Sum()
    	{i++;
    	System.out.println("你已经创建了"+i+"个对象");}
    }

    实验结果:

  • 相关阅读:
    html----有关图像
    前端开发初学者
    angular js 正序倒叙
    viewpager无线轮播获取网络图片
    angular js 球星
    angular js shopping
    angular js 公告墙
    Android 常用正则表达式
    Android 内存泄漏
    TCP/IP,必知必会的
  • 原文地址:https://www.cnblogs.com/1998lu/p/5983736.html
Copyright © 2011-2022 走看看