zoukankan      html  css  js  c++  java
  • 课堂练习及动手动脑

    1.对象变量也可以使用“==”判断两变量值是否相等吗?

       不能,当“==”施加于原始数据类型变量时,是比较变量所保存的数据是否相等

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

    引用代表地址,所以“==”实际上相当于比较两个引用类型变量中保存的对象地址是否相同。

    2.进行试验

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

    4.代码无法通过编译,哪里出问题了?

    类提供了一个自定义的构造方法,导致系统不再提供默认的构造方法

    错误地点:Foo obj1=new Foo();

              public Foo(int initValue)

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

    Java中任何对象初始化时,属性字段都有默认值,,如一般的char/string,初始化为null,其他数值型初始化为零,但是方法中的“局部变量”不会被初始化,j就是不确定的值,另外Java中不允许重复定义。

    6.当多个类之间有继承关系时,创建子类对象会导致父类初始化块的执行。

    请自行编写示例代码验证以上结论。

    class InitializeBlockClass{

    public int field=100;

    public InitializeBlockClass(int value){

    this.field=value;

    }

    public InitializeBlockClass(){

    }

    }

    class InitializeBlockClassNext{

    public int field1=100;

    public InitializeBlockClassNext(int value){

    this.field1=value;

    }

    public InitializeBlockClassNext(){

    }

    }

    class InitializeBlockClassBack{

    {

    field2=200;

    }

    public int field2=100;

    public InitializeBlockClassBack(int value){

    this.field2=value;

    }

    public InitializeBlockClassBack(){

    }

    }

    public class Parent {

    public static void main(String[] args) {

    // TODO 自动生成的方法存根

              InitializeBlockClass obj=new InitializeBlockClass();

              {

               obj.field=200;

              }

              System.out.println(obj.field);

              obj=new InitializeBlockClass(300);

              System.out.println(obj.field);

              InitializeBlockClassNext obj1=new InitializeBlockClassNext();

              System.out.println(obj1.field1);

              obj1=new InitializeBlockClassNext(500);

              System.out.println(obj1.field1);

              InitializeBlockClassBack obj2=new InitializeBlockClassBack();

              System.out.println(obj2.field2);

              obj2=new InitializeBlockClassBack(600);

              System.out.println(obj2.field2);

    }

    }

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

    静态初始化执行顺序:

    静态代码块内容先执行(父先后子),接着执行父类非静态代码块和构造方法,然后执行子类非静态代码块和构造方法。

    8.静态方法中只允许访问静态数据,那么,如何在静态方法中访问类的实例成员(即没有附加static关键字的字段或方法)?

     class StaticDemo{

             static int x;

             int y;

             static public int getX(){

              return x;

             }

             static void setX(int newX) {

    // TODO 自动生成的方法存根

    x=newX;

             

    }

             public int getY(){

              return y;

             }

             public void setY(int newY){

              y=newY;

             }

    }

    public class ShowDemo {

    public static void main(String[] args) {

    // TODO 自动生成的方法存根

    System.out.println("静态变量x="+StaticDemo.getX());

    //System.out.println("实例变量y="+StaticDemo.getY());

             //实例变量是声明对象初始化才能进行调用,

    StaticDemo a=new StaticDemo();

    StaticDemo b=new StaticDemo();

    a.setX(1);

    a.setY(2);

    b.setX(3);

    b.setY(4);

    System.out.println("静态变量a.x="+a.getX());

    System.out.println("静态变量a.y="+a.getY());

    System.out.println("静态变量b.x="+b.getX());

    System.out.println("静态变量b.y="+b.getY());

    }

    }

    9.不使用Eclipse,直接使用命令行运行Test1.javaTest2.JavaTest3.Java

  • 相关阅读:
    【创建型模式】《大话设计模式》——读后感 (5)雷锋依然在人间?——工厂方法模式
    【结构型模式】《大话设计模式》——读后感 (4)为别人做嫁衣?——动态代理模式(2)
    【结构型模式】《大话设计模式》——读后感 (4)为别人做嫁衣?——静态代理模式(1)
    【结构型模式】《大话设计模式》——读后感 (3)穿什么有这么重要?——装饰模式之理解实例(2)
    【结构型模式】《大话设计模式》——读后感 (3)穿什么有这么重要?——装饰模式之理论实例(1)
    【行为型模式】《大话设计模式》——读后感 (2)商场促销?——策略模式
    【创建型模式】《大话设计模式》——读后感 (1)代码无错就是优?——简单工厂模式
    大话设计模式铺垫
    常用命令
    java简单使用netty
  • 原文地址:https://www.cnblogs.com/qingqing2015/p/4888326.html
Copyright © 2011-2022 走看看