zoukankan      html  css  js  c++  java
  • java课后作业2017.10.20

    动手动脑1:

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

    报错原因:调用自定义的构造方法,没有正确的实参。

     动手动脑2——静态初始化块的执行顺序:

    静态初始化块只执行一次,且如果有父类先执行父类中的静态初始化块,然后在执行子类中的静态初始化块。

    java字符段初始化规律:

    public class InitializeBlockDemo

    {

    /**
    * @param args
    */
    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字段的初始值
    public int field=100;
    {
    field=200;
    }
    //public int field=100;
    public InitializeBlockClass(int value)
    {
    this.field=value;
    }
    public InitializeBlockClass()
    {

    }
    }

    若有构造函数内有完成了初始化的作用,则初始化的结果为构造函数中初始化的值。

    若构造函数没有完成初始化,字段初始值和初始化块都存在,则初始化的结果为这两个其中顺序在下边的初始化值。

    如何在静态方法中访问类的实例成员:

    在静态方法中实例化一个对象,在通过对象调用实例成员。

    代码:

    public class Homework
    {
    public static void main(String args[])
    {
    A a=new A();
    a.set();
    }

    }
    class A
    {
    static int id=1;
    int age=2;
    static public void set()
    {
    A a=new A();
    System.out.println("id:"+id);
    a.display();
    }
    public void display()
    {
    System.out.println("age:"+age);
    }
    }

    结果截图:

     使用类的静态字段和构造方法,跟踪类所创建的对象的个数:

    在类中定义一个静态的属性number。定义构造函数,因为每次创建对象时自动调用构造函数,所有在构造函数中记录number的变化:number++

    再定义一个显示个数的方法display,因为需要事先创建一个对象才能调用dispaly方法,所以要减去一个,即dispaly中输出(number-1)。

    import java.util.Scanner;
    public class Homework
    {
    public static void main(String args[])
    {
    Scanner input=new Scanner(System.in);
    A b=new A();
    while(true)
    {
    int choice;
    System.out.println("1:创建一个对象");
    System.out.println("2:查看已创建对象的个数");
    System.out.println("3:退出");
    System.out.println("请选择:");
    choice=input.nextInt();
    if(choice==1)
    {
    A a=new A();
    }
    else if(choice==2)
    {
    b.display();
    }
    else if(choice==3)
    {
    System.exit(0);
    }
    }
    }
    }
    class A
    {
    static int number=0;
    public A()
    {
    number=number+1;
    }
    public static void display()
    {
    System.out.println("已创建的对象个数:"+(number-1));
    System.out.println();
    }
    }

    结果截图:

     Integer判等:

    public class StrangeIntegerBehavior
    {

    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.

    在用Inter j1=number;时调用了public static Integer valueOf(int i)方法,这个方法对于-128<=i<=127的时候是使用的int原始数据类型,超出这个范围后则创建一个对象。所以i1和j1比较的是数值,i2和j2比较的是地址。

  • 相关阅读:
    andriod的数据传递方法
    Activity生命周期详解
    android 和主线程有关的小问题
    java解析Excel(xls、xlsx两种格式)
    菜鸟感想一
    springboot 填坑一 springboot java.sql.SQLException: Access denied for user ''@'localhost' (using password: NO)
    git 第一次提交至仓库
    andriod studio报错 Emulator: emulator: ERROR: x86 emulation currently requires hardware acceleration! Emulator: Process finished with exit code 1
    通过以太坊发行代币(token)
    nginx+tomcat 配置负载均衡集群 (转载)
  • 原文地址:https://www.cnblogs.com/ssyh/p/7686203.html
Copyright © 2011-2022 走看看