• 课后作业


    1.早期我们经常这样定义变量 int value=100; 前面的示例中这样定义变量 MyClass obj = new MyClass(); 这两种方式定义的变量是一样的吗?

    不一样,当声明一个对象类型的变量时,实际上并没有创建一个对象,此变量=null。,但定义了int i=100,电脑就会马上分配内存空间,引用对象后的对象变量,如果不再使用此变量,JVM会回收MyClass对象所占用的内存(垃圾回收)。

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

    package ketang;
    
    public class Text {
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Foo obj1=new Foo();
    		Foo obj2=new Foo();
    		System.out.println(obj1==obj2);
    	}
    	
    
    }
    class Foo{
    		int value=100;
    	}
    

      运行结果

    原因

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

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

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

    3.重写基类的equals方法?

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

    package ketang;
    
    public class Text {
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Foo obj1=new Foo();
    		
    	}
    	
    
    }
    class Foo{
    		int value;
    		public foo(int initvalue){
    			value=initvalue;
    		}
    	}
    

      在旁边显示的错误为没有返回值类型,类当中已经有了构造函数将不会自动调用默认的构造函数,即错在没有参数。

    5.如果一个类中既有初始化块,又有构造方法,同时还设定了字段的初始值,谁说了算?

    运行结果

    构造函数函数名和类名一样,会被自动调用。如果没有定义,系统会分配一个没有参数的构造函数。(初始化,没有返回值)的构造函数。

    构造函数是该类中最先被用到的函数,他是第一的地位,所以先显示的构造函数,后显示的赋值。

    规律:

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

    执行类的构造函数。

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

    运行结果

    静态变量在类创立时就分配一个内存空间,可以直接通过类名(对象名也可以!!!!写出例子)进行使用。但静态变量就只有一个内存空间,无论静态变量使用多少次,它都只有一个内存,相当于数据不断覆盖。

    *而实例变量是在类创立后并且对象实例化之后才会分配内存空间,只能通过对象进行使用,并且有多少个对象就会有多少个内存。

    所以在实例变量int y;    public int getY(){return y;} 没有对象实例化时,是不能进行使用的,并且他也不能通过类名StaticDemo.getY()进行使用。这就是语法错误咯~然后就是静态变量为进行初始化的默认值:int类型是0,bool类型是false,对象是null。

     7.上述神奇代码(StrangeIntegerBehavior.java)输出诡异的结果,原因何在?

    实验结果

    原因

    Integer=100; 实际上调用的是Integer.valueOf(int i);
    因为从-127到128之间的Integer数,Java在Integer中有事先缓存好的原型对象,每次返回的都是同一个Integer对象,只有不在这个范围的数才会新创建出一个Integer,最后所指都不是同一个对象,所以比较的不是同一个对象。

     129不能判断。

  • 相关阅读:
    数据库 的几种链接 join
    eclipse 无法记住svn密码
    loadrunner监控linux服务器
    谷歌浏览器跨域命令行方式失效
    努力学习的意义到底在哪里?(转载知呼上的答案)
    人的性欲为什么会被视为坏事?(转载)
    npm下载速度太慢
    使用systemback制作Ubuntu自定义系统镜像和系统备份(抄)
    使用bat脚本永久激活Windows系统(摘抄)
    fiddler软件测试——Fiddler抓取https设置详解(图文)(摘抄)
  • 原文地址:https://www.cnblogs.com/z245894546/p/7696360.html
Copyright © 2020-2023  润新知