• java第三讲课后动手动脑及代码编写


    1.

    类就是类型,对象就是这种类型的实例,也就是例子。类是抽象的东西,对象是某种类的实实在在的例子。例如:车是一个类,汽车,自行车就是他的对象。

    对象的定义方法?

    (1)对象声明:类名 对象名;

    (2)对象创建 对象名 =  new 类名(); new作用:分配内存空间。
    两种定义方法是不一样的。

    前者是原始数据类型,例如int,float之类的变量,定义一个原始类型的变量时,会马上给其分配内存。

    后者是引用类型变量,“引用”一个对象的变量称为“引用类型”的变量,对象变量的初始化中,该变量若不引用一个真实的对象,则必须声明为null。而且引用对象后的对象变量,且如果不再使用此变量,将会回收类定义的对象所占用的内存。(对象变量)

     
    2.

    答: 一般不可以。类似于字符串的比较大小,使用equals()进行比较,用法与其相同。当“==”施加于“原始数据类型”变量时,是比较变量所保存的数据是否相等。当“==”施加于引用类型变量时,是比较这两个变量是否引用同一对象。引用代表地址,所以当施加于引用类型变量时,实际上是比较两个引用类型变量中保存的对象地址是否一样。但是当对象进行赋值是可以判等的。

    运行结果:

             

    3.

    答:“内容相等”,其实是就“对应字段值”一致。在JAVA中要比对两个对象的字段值,可以 重写基类的equals()方法;Object是Java的最顶层基类,其中定义了equals( )方法。

    在java中要比较两个对象的字段值,可以重写(override)基类的equals()方法。

     重写方法如下:

     运行结果:

    4.

    答:这个方法没有返回值类型,而且和类名一样。

    答:在一个类中若没有定义构造方法,依然可以创建一个无参数的对象,这是因为java编译器会自动为该类生成一个默认的构造方法,程序在创建对象时会自动调用默认的构造方法。默认的构造方法没有参数,在其方法体中也没有任何代码,即什么也不做。由于系统提供的默认的构造方法往往不能满足用户的需求,所以用户自己定义构造方法,一旦用户定义了构造方法,系统就不再提供默认的构造方法,这是Java的覆盖所致。所以上述定义的构造方法是有参数的赋值,定义的对象并没有,所以编译不能通过。

    5.

     

    答:当类成员指定的默认值写在了初始化块前边,初始化块说了算。反之,类成员定义时指定的默认值说了算。

    对于类的构造函数,类的初始化块不接收任何参数,而且只要一创建类的对象,他们就会被执行(构造函数),因此适用于封装那些“对象创建时必须执行的代码”。

    运行结果:

    6.

    首先,当静态初始化块和非静态的初始化块都存在时,各个类先执行静态初始化块。

    创建子类型对象时,也会追寻到父类,使父类也执行静态初始化块。且首先执行父类的静态初始化块内容,接着执行子类的静态初始化块方法,直到所有子类的静态初始化块内容执行完成。再回到父类,查看非静态的初始化块和构造方法,如果有继续执行。父类的非静态初始化块和构造方法执行完毕在执行子类的。总之,每个类的静态初始化块先执行,执行完毕在执行各个类的非静态初始化块。

    运行结果:

     7.

    答:可以先用new创建一个对象,通过对象去调用成员方法和变量。如图:

    8.

     在JAVA中,数据类型可分为两大种,基本数据类型(值类型)和类类型(引用数据类型)。基本类型的数据不是对象,所以对于要将基本数据类型当对象使用的情况,JAVA提供的包装类。

    所谓装箱,就是把基本类型用他们相对应的引用类型包装起来,使他们可以具有对象的特质,如我们可以把int型包装成Integer类的对象,或者把double包装成Double等等。

    所谓拆箱,就是跟装箱的方向相反,将Integer及Double这样的引用类型的对象重新简化为值类型的数据。

    J2SE5.0后提供了自动装箱和拆箱的功能,此功能事实上是编译器来帮忙,编译器在编译时依照编写的方法,决定是否进行装箱或拆箱动作。

    自动装箱的过程:每当需要一种类型的对象时,这种基本类型就自动的封装到与它相同类型的包装中。

    自动拆箱的过程:每当需要一个值时,被装箱对象中的值就被自动的提取出来,没必要再去调用intValue()和doubleValue()方法。

    自动装箱只需将该值赋给一个类型包装器引用,java会自动创建一个对象。例如:

    Integer i = 100;

    包装类(Wrapper Classes),拆箱和装箱

    基本类型和对应的包装类可以相互装换:

    由基本类型向对应的包装类转换称为装箱,例如把double包装成 Double 类的对象;

    包装类向对应的基本类型转换称为拆箱,例如把 Integer 类的对象重新简化为 int。

    但是:

    为什么?

    在java中,“==”是比较object的reference而不是value,自动装箱后,代表的都是Integer这个Object,因此“==”比较的是其引用。

    java为了提高效率,IntegerCache类中有一个数字缓存了值从-128到127的Integer对象,当我们调用Integer.valueOf(int i)的时候,如果i的值是>=-128且<=127时,会直接从这个缓存中返回一个对象,否则就new一个Integer对象。所以结果2比较的是引用,两者属于两个对象,内存也不一样,理所当然返回false。

    对于结果1,虽然比较的时候还是比较对象的引用,但是自动装箱时,java在编译的时候Integer i1 = 100;被翻译成Integer i1 = Integer.valueOf(100);关键就在于这个valueOf()的方法。

    9.

    源程序代码:

    import java.util.*;
    public class No3kelianxi
    {
    public static void main(String[] args)
    {
    System.out.println("输入要创建对象的个数");
    Scanner reader=new Scanner(System.in);
    int n=reader.nextInt();
    demo[]expe=new demo[1000];
    for(int i=0;i<n;i++)
    {
    expe[i]=new demo();
    }
    System.out.println("一共创建了"+demo.num+"个对象");
    reader.close();
    }
    }
    class demo
    {
    static int num;
    static
    {
    num=0;
    System.out.println("调用了静态初始化块!");
    }
    public demo()
    {
    num++;
    }
    }

    运行结果:

  • 相关阅读:
    54、servlet3.0-ServletContainerInitializer
    53、servlet3.0-简介&测试
    52、[源码]-Spring源码总结
    51、[源码]-Spring容器创建-容器创建完成
    50、[源码]-Spring容器创建-Bean创建完成
    49、[源码]-Spring容器创建-创建Bean准备
    48、[源码]-Spring容器创建-初始化事件派发器、监听器等
    Atom编辑器入门到精通(四) Atom使用进阶
    Atom编辑器入门到精通(三) 文本编辑基础
    Atom编辑器入门到精通(二) 插件的安装和管理
  • 原文地址:https://www.cnblogs.com/mm20/p/7694944.html
Copyright © 2020-2023  润新知