Java类和对象

■ 类的三要素:属性(field)、构造器(constructor)和方法(method)。
■ 内存分析:
  栈:
    ①每个线程私有,不能实现线程间的共享!
    ②局部变量存放于栈中。
    ③栈是由系统自动分配,速度快!栈是一个连续的内存空间!
  堆:
    ①放置new出来的对象!
    ②堆是一个不连续的内存空间,分配灵活,速度慢!
  方法区:
    ①被所有线程共享!
    ②用来存放程序中永远是不变或唯一的内容。(类代码信息。静态变量、字符串常量)
■ 属性(field,或者叫成员变量)
  属性用于定义该类对象包含的数据或者静态属性。
  属性作用范围是整个类体。
  在定义成员变量时可以对其初始化没如果不对其初始化,Java使用默认的值对其初始化。(数值:0,0.0,char:u0000,boolean:false,所有引用类型:null)
  属性定义格式:[修饰符] 属性类型 属性名 = [默认值]
■ 引用类型
  Java语言中除基本类型之外的变量类型都称之为引用类型。
  Java中的对象是通过引用对其操作的。
■ 类的方法
  方法用于定义该类或该类的实例行为特征和功能实现。方法是类和对象行为特征的抽象。
  方法类似于面向过程中的函数。面向过程中,函数是最基本单位,整个程序由一个个函数调用组成;面向对象中,整个程序的基本单位是类,方法是从属于类的。
  方法定义格式:
    [修饰符] 方法返回值类型 方法名(形参列表){
      //n条语句
    }
■ 对象的创建和使用
  ①必须使用new关键字创建对象 
  ②使用对象(引用).成员变量来引用对象的成员变量。
  ③使用对象(引用).方法(参数列表)来调用对象的方法。
  ④同一类的每个对象有不同的成员变量存储空间。
  ⑤同一类的每个对象共享该类的方法。
■ 构造器(或者叫构造方法,constructor)
  构造器用于构造该类的实例。
  Java通过new关键字来调用构造器,从而返回该类的实例。
■ 垃圾回收(Garbage Collection)
  Java的内存管理实际上指的是对对象的管理,其中包括对象空间的分配和释放。
  对象空间的分配:
  使用new关键字创建对象即可。
  对象空间的释放:
    将对象赋值null即可。垃圾回收器将负责回收所有“不可用”对象的内存空间。
  要点:
    ①程序员无权调用垃圾回收器。
    ②程序员可以通过System.gc()方法通知GC运行,但Java规范并不保证立刻运行。
    ③finalize是Object类的一个方法,在垃圾收集器执行的时候会掉用被回收对象的finalize()方法,该方法可被覆盖用于回收其他资源(关闭文件等),但JVM不保证此方法总被调用。
■ 方法的重载(overload),构造方法的重载
  ①方法的重载是指一个类中可以定义具有相同名字,但参数列表不同的多个方法。调用时,会根据不同的参数列表选择对应的方法。
  ②方法调用时,匹配离得最近的类型。
  ③不同的含义:类型、个数、顺序不同
  ④只有返回值不同不构成方法的重载
  ⑤只有形参的名称不同不构成方法的重载
  ⑥与普通方法一样,构造方法也可以重载
■ this关键字
  普通方法中,this总是指向调用该方法的对象。
  构造方法中,this总是指向正要初始化的对象。
  this最常用的用法:
    ①让类中的一个方法访问该类的另一个方法或属性。
    ②使用this关键字调用重载构造方法。避免相同的初始化代码,只能在构造方法中用,并且必须位于构造方法的第一句。
    ③this不能用于static方法。
■ static关键字
  ①在类中,用static声明的成员变量为静态成员变量。它为该类的公用变量,属于类,被该类的所有实例共享,在类被载入时被显式初始化。对于该类的所有对象来说,static成员变量只有一份,被该类的所有对象共享。可以使用“对象.属性”来调用。不过,一般都是用“类名.属性”。
  ②用static声明的方法为静态方法,不需要对象,就可以调用(类名.方法名),在调用该方法时,不会将对象的引用传递给它,所以在static方法中不可访问非static的成员。
  ③可以通过对象引用或类名(不需要实例化)访问静态成员。
■ 静态初始化块(经常用来初始化类,加载类信息时执行!)
  执行顺序:先执行Object类的静态初始化块,再向下执行子类的静态初始化块,直到我们的类的静态初始化块为止。

原文地址:https://www.cnblogs.com/lxcmyf/p/6525504.html