课后作业3,验证代码并分析

1、package haha;

 

class haha

{

    public String Information="";

    public void main(String args)

    {

    System.out.println(args);

    }

private int value;

public int getValue()

    {

    return value;

    }

public void setValue(int value)

    {

    this.value=value;

    }

}

 

 

public class tiaoshi

{

    public static void main(String args[])

    {

        haha obj=new haha();

        obj.main("hello");

        obj.setValue(100);

        System.out.println(obj.getValue());

        obj.Information="Information";

        System.out.println(obj.Information);

    }

}

执行结果为:

hello

100

Information

原因:

main(“hallo”)执行的为main函数,在main函数中,接受的为字符串,赋给args,直接输出。

SetValue函数接收value的值,getvalue函数返回value。

第三个输出直接调用haha类中的Information直接赋值。

 

 

2、package haha;

 

public class tiaoshi

{

    public static void main(String args[])

    {

    int value;

    System.out.println(value);

    }

}

无法执行,输出value的时候要求初始化value变量。

package haha;

 

public class tiaoshi

{

    public static void main(String args[])

    {

    int value=100;

    System.out.println(value);

    }

}

可以执行,输出100。

 

3、package haha;

 

public class tiaoshi

{

    public static void main(String args[])

    {

    int value1=100;

    int value2=100;

    System.out.println(value1==value2);

    }

}

执行结果为true。

  package haha;

 

public class tiaoshi

{

    public static void main(String args[])

    {

    Foo h1=new Foo();

        Foo h2=new Foo();

        System.out.println(h1==h2);

    }

}

  class Foo

  {

      int value=100;

  }

执行结果为false

此时比较的不是两个对象中的数据,而是两个对象的地址是否一直。

package haha;

 

public class tiaoshi

{

    public static void main(String args[])

    {

    Foo h1=new Foo();

        Foo h2=new Foo();

        System.out.println(h1==h2);

        System.out.println(h1.equals(h2));

    }

}

  class Foo

  {

      public boolean equals(Object obj)

      {

          return value==this.value;

      }

      int value=100;

  }

执行结果为:

False

True

此时在foo类中定义了boolean函数比较的不是两个对象,而是对象中的数据。

 

4、package haha;

 

public class tiaoshi

{

    public static void main(String args[])

    {

    Foo h1=new Foo();

    }

}

  class Foo

  {

      int value;

      public Foo(int intvalue)

      {

          value=intvalue;

      }

  }

无法执行,由于当你不定义Foo方法的时候,电脑会执行自身的默认的方法,但是如果定义了之后,就会执行你写的方法。

5、package haha;

 

class haha

{

    {

        field=200;

    }  

    public int field=100;

    public haha(int value)

    {

        this.field=value;

    }

    public haha()

    {

       

    }

}

public class tiaoshi

{

    public static void main(String args[])

    {

        haha obj=new haha();

        System.out.println(obj.field);

       

        obj=new haha(300);

        System.out.println(obj.field);

    }

}

执行结果为:

100

300

当创建的对象为haha()和haha(300)时,由于类型并不一样,电脑会匹配与之对应的方法。所以使用的方法并不一样。

 

6、package haha;

 

public class tiaoshi

{

    public static void main(String args[])

    {

        Integer i1=100;

        Integer j1=100;

        System.out.println(i1==j1);

       

        Integer i2=129;

        Integer j2=129;

        System.out.println(i2==j2);

    }

}

执行结果为:

True

False

原因是integer类型的取值范围是-128到+127之间的,当超出这个范围就无法正常比较了。

  

原文地址:https://www.cnblogs.com/CHAHA123/p/7691632.html