2020.10.9收获

学习内容:

变量的初始化:在定义变量时,Java要求必须显式初始化变量

对象变量的初始化:对象变量如果不引用一个真实的对象,则必须声明为null;

注:特殊值null代表一个对象变量不引用任何对象

 

引用对象后的对象变量

MyClass obj = new MyClass();

当对象不再使用时,JVM会回收MyClass对象所占用的内存,这个过程称为“垃圾回收”

 

理解赋值“=”的含义

 

独特的对象引用:this

对象中所有数据字段都是通过this指针间接引用的

同一类中的方法可以相互调用,或者直接存取本类定义的字段,可看成其中隐含了一个this调用

 

 

 

作为常量的对象变量

可以使用final定义一个“常量”对象变量

final MyClass obj = new MyClass();

注意:“常量”对象变量不能指向另一个对象,但可以修改对象,比如设置它所引用对象的某共有字段值

 

对象判等

对于原始数据类型的变量(比如int),可以直接使用“==”判断两变量值是否相等

 

 

 

重写基类的equals 方法

 

class MyTestClass{
    public int Value;
    @Override
    public boolean equals(Object obj){
        return ((MyTestClass) obj).Value == this .Value;
        }

     public MyTestClass(int initValue){
        Value   = initValue;
          }
}

 

 

注意:左边这种重写equals()方式是简化的,在实际开发中不应该这样写,应该加上对参数有效性的检测代码

equals()方法从哪来?

当你定义一个类时,如果不显式指明它的“父亲”类是哪个,则默认是Object.

Object是Java的最顶层基类,其中定义了equals()方法

 

 

自定义 equals()方法

除了重写基类的equals方法,也可以重载(overload) equals()方法:

注意:

  与前面“重写”方式的代码相比,equals()方法的参数类型是 MyTestClass,而不是Object,并且方法本身也没有附加“@Override”标记

 

类的构造方法

当创建一个对象时,它的构造方法会被自动调用。构造方法与类名相同,没有返回值

如果类没有定义构造函数,Java编译器在编译时会自动给它提供一个没有参数的“默认构造方法”

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

 

多构造函数

同一类可以有多个构造函数,多个构造函数之间通过参数来区别,这是方法重载的一个实例

构造函数之间可以相互调用

 

class Fruit{
    int grams;
    int calsPerGram;
    Fruit(){
            this(55,10);
        }
    Fruit(int g,int c){
        grams=g;
        calsPerGram=c;
       }
}

 

 

类的初始化块

可以在类中使用“{”和“}”将语句包围起来,直接将其作为类的成员

类的这种“没有名字"的”成员”,多用于初始化类的字段

 

 

 

 

类字段的初始化顺序

 

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

 

(2)执行类的构造函数

 

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

 

 

 

访问类的静态字段

 

 

class Employee
{

    String name;
    long salary;
    short employee_id;
    static int total_employees;
    static void clear(){
        total_employees=0;
    }
}

类的静态方法只能访问类的静态成员

包装类

基本数据类型仅仅提供了数据,却缺少一些常用的功能,为此,Java提供了包装类

包装类=基本数据类型的数据+扩充的一些方法和字段

包装类是引用类型,可以创建相应的对象

 

 

Java中的包装类:

 

 

装箱和拆箱

 

 BoxAndUnbox.java

 

public class BoxAndUnbox {

    /**
     * @param args
     */
    public static void main(String[] args) {
        int value=100;

        Integer obj=value;  //装箱

        int result=obj*2;     //拆箱

    }

}

 

posted @ 2020-10-09 23:13  第厘  阅读(77)  评论(0编辑  收藏  举报