抽象数据类型:将 不 同 的 数据类型集合组成起来 来描述一种新事物。

类:由 成员变量方法 组成。

成员变量:描述对象共同的数据结构。

方法:描述对象的行为。

面向对象:以对象为核心来构建系统。

引用变形对象:对实例化对象进行访问。

引用对成员变量访问和方法的调用。

引用类型变量的赋值:

   引用类型变量储存的是对象的地址信息。对引用类型变量的赋值, 除了使用上面的new关键字以外,还可以有另外一种赋值方式, 即:相同类型的引用类型变量之间相互赋值。

  

  1. Emp e1 = new Emp();
  2. Emp e2 = e1; //将e1的值(对象的地址信息)赋给e2,e2和e1指向相同的对象。
  3. e1.name =“黄河大虾”;
  4. e2.name = “白发馍女”;
  5. System.out.println(e1.name);

该引e1与e2两个引用指向同一个对象。

方法的重载:方法名相同参数列表不同。

签名:包含方法名和参数列表。

构造方法:初始化成员变量。

  1. class Cell {
  2. int row ;
  3. int col ;
  4. public Cell (int row1 , int col1){
  5.         row = row1;
  6. col = col1;
  7. }
  8. }
  9. class TestCell {
  10. public static void main(String args[ ] ){
  11. Cell c1 = new Cell( 15 , 6 );
  12.      printCell(c1);
  13. }
  14. }

 this关键字:this关键字用在方法体中,用于指代调用该方法的当前对象.

引用类型  数组:

      数组是对象,数组的元素可以看成 数组对象的成员变量。数组对象储存在堆中。

对象内存管理: 

      在JAVA中,有java程序、虚拟机、操作系统三个层次,其中java程序与虚拟机交互,而虚拟机与操作系统交互。编译好的java字节码文件运行在JVM中。

程序中无论代码还是数据,都需要存储在内存中,而java程序所需内存均由JVM进行管理分配,开发者只需关心JVM是如何管理内存的,而无需关注某种操作系统是如何管理内存的,这就保证了java程序的平台无关性。

JVM会将申请的内存从逻辑上划分为三个区域:堆、栈、方法区。这三个区域分别用于存储不同的数据。

   

   对象储存在堆中,引用数据类型储存在栈中。

  1. Cell c = new Cell ();

成员变量的声明周期:

   

    那么当一个对象没有任何引用时,该对象被视为废弃的对象,属于被回收的范围,同时该对象中的所有成员变量也随之被回收。

可以这样认为,成员变量的生命周期为:从对象在堆中创建开始到对象从堆中被回收结束。

 垃圾回收机制:    

垃圾回收器(Garbage Collection,GC)是JVM自带的一个线程(自动运行着的程序),用于回收没有任何引用所指向的对象

GC线程会从栈中的引用变量开始跟踪,从而判定哪些内存是正在使用的,若GC无法跟踪到某一块堆内存,那么GC就认为这块内存不再使用了,即为可回收的。但是,java程序员不用担心内存管理,因为垃圾收集器会自动进行管理。

栈:

  栈用来储存方法中的局部变量。

  方法中的变量即为局部变量,是在栈内存中分配,若变量为值类型,则在栈中存储的就是该变量的值。若变量为引用类型,则在栈中存储的是堆中对象的地址。

局部变量的生命周期;

    JVM会为每一个方法的调用在栈中分配一个对应的空间,这个空间称为该方法的栈帧。一个栈帧对应一个正在调用中的方法,栈帧中存储了该方法的参数、局部变量等数据。当某一个方法调用完成后,其对应的栈帧将被清除,局部变量即失效。

方法区:

    用于储存类的基本信息(属性和方法)

  

  1. Cell c = new Cell();
  2. 程序在执行这句话时,Cell类首先被装载到JVM的方法区,其中包括类的基本信息和方法定义等
  3.  

 

访问控制符

     

 

static  修饰成员变量

     当创建对象后,成员变量是存储在堆中的,而static成员变量和类的信息一起存储在方法区, 而不是在堆中。

  在static方法中不能对非static成员(对象成员)进行访问。

     static方法的作用在于提供一些“工具方法”和“工厂方法”  比如工具类

     static块为属于类的代码块,在类加载期间执行的代码块,只执行一次,可以用来在软件中加载静态资源(图像、音频等等)。如下代码演示了static块的执行:

final关键字

    修饰成员变量:final关键字修饰变量,意为不可改变。final可以修饰成员变量,也可以修饰局部变量,当final修饰成员变量时。

 final关键字修饰的方法不可以被重写。使一个方法不能被重写的意义在于:防止子类在定义新方法时造成的“不经意”重写。

   final关键字修饰的类不可以被继承。使一个类不能被继承的意义在于:可以保护类不被继承修改,可以控制滥用继承对系统造成的危害

static final 修饰的成员变量称为常量,必须声明同时初始化,并且不可被改变。常量建议所有字母大写。

实际应用中应用率较广,因为static final常量是在编译期被替换的

原文地址:https://www.cnblogs.com/jcfxl/p/5722245.html