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

课后作业

时间:2017-10-20 10:20:09      阅读:90      评论:0      收藏:0      [点我收藏+]

标签:思路   对象   pre   ide   scanner   创建对象   ges   stat   return   

课后作业一:

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

设计思路:定义类的构造函数时使静态变量i进行i++,即每构造一次就叠加一个构造的对象数。

程序流程图:

技术分享

 

源程序代码:

 

import java.util.Scanner;
public class Test {
   static int i=0;
   public Test(){
      i++;
   }
   public static int getTimes(){
   return i;
   }
   public static void main(String[] args) {
      int x=1;
      Scanner con=new Scanner(System.in);
      for(;x!=0;){
         System.out.print("构建个数(0退出):");
         x=con.nextInt();
         for(int t=0;t<x;t++){
            Testi g=new Test();
         } 
        System.out.println("程序已经创建对象的个数为:"+getTimes());
      }
   }
}

 

截图:

 

 技术分享

课后作业二:

1.这两种方式定义的变量是一样的吗?

Int value = 100;

MyClass obj = new MyClass();

不一样。

int “是原始数据类型的变量。

定义后,会马上给其分配内存。

MyClass “是对象变量

声明一个对象类型变量时,实际没有创建一个对象,变量 = null

2.对象变量可以用“==”判断两变量值是否相等吗?运行以下代码,得到什么结果?

不可以。判断的不是变量值。

 

public class Test{
    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

“==”施加于引用类型变量时,比较的是两个变量是否引用同一个对象。

3.如何比较两个对象内容是否一样?

比较字段值。可以重写equals()方法。

 

public class ObjectEquals {
    public static void main(String[] args) {
        MyTestClass obj1=new MyTestClass(100);
        MyTestClass obj2=new MyTestClass(100);
        System.out.println(obj1==obj2);
        System.out.println(obj1.equals(obj2));
    }
}
class MyTestClass
{
    public int Value;
    //注意:只有参数类型为Object的,才是重写了Object的equals方法
    //参数类型为MyTestClass的,仅仅是Overload了equals方法。
    //   @Override
    //   public boolean equals(Object obj) {
//        return ((MyTestClass)obj).Value==this.Value;
//    }
        public boolean equals(MyTestClass obj){
            return obj.Value==this.Value;
        }
        public MyTestClass(int initValue){
            Value=initValue;
        }
}

 

结果:flase

      true

4.总结一下,这个方法有那些与众不同之处?

 

public MyTestClass(int initValue){
            Value=initValue;
        }

 

这个方法是类的构造方法。它有参数值。

 

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

 

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

Foo obj1 = new Foo()错误。

 

课后作业

标签:思路   对象   pre   ide   scanner   创建对象   ges   stat   return   

原文地址:http://www.cnblogs.com/luohaochi/p/7697628.html

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