方法的重载:在java中,在同一个类中,允许多个方法的名称相同,但是参数列表不同。
同一个文件中可以包含多个类,public修饰的类只能有一个,public修饰的类必须与文件名相同。
构造方法:1)常常给成员变量赋初值 2)构造方法必须与类同名,没有返回类型 3)在创建对象时被自动调用 4)如果没有写,则调用默认的 5)构造方法可以重载
this关键字:指代当前对象,那个对象调,则指代那个对象,方法中访问成员变量之前默认都有个this。用在方法中。
this的用法:1)this.成员变量 2)this.方法名() 3)this() 调无参构造方法,this(int i) 调有参构造方法
class Cell{
int row;
Cell(int row,int col){
this.row=row; //需要表明this ,否则依据就近原则row=row 其均为局部变量。
}
}
new关键字所创建的对象存放在堆内,其地址(引用)存放在栈内,赋值时,先找地址,然后通过地址找到堆并更改数据。
在Java中类型可分为两大类:值类型与引用类型。值类型就是基本数据类型(如int ,double 等),而引用类型,是指除了基本的变量类型之外的所有类型(如通过 class 定义的类型)。基本的变量类型只有一块存储空间(分配在stack栈中), 而引用类型有两块存储空间(一块在stack中,一块在heap堆中)
int[ ] [ ] arr=new int [3][ ] //3个int[ ]型 默认为null /引用类型为null,arr[0]表 int [ ]型 。
jvm 为Java程序提供并管理所需要的内存空间。jvm内存分为“堆”、“栈”、“方法区”分别用于存储不同的数据
堆:1)用于存储所有new出来的对象(包括成员变量)2)成员变量的生命周期:创建(new)对象时存在堆中,对象被垃圾回收器(GC)时其也会 消失。
垃圾:没有任何引用所指向的对象,快速回收可以调用System.gc(); 4)内存泄漏:不在使用的对象没有被及时的回收。
栈:1)程序在运行时调用方法中的所有的局部变量
2)调用方法时在栈中为该方法分配一块对应的栈桢,栈桢中包含所有的局部变量(包括参数),方法调用结束时,栈桢消失,局部变量一并消失。
class k {
public static void main(String[] args) {
int a;//局部变量,需要初始化 存储在栈内
T t=new T();
t.d(); }
}
class T {
int b;//成员变量,有默认值 存储在堆内,在new对象时会给其分配默认值
void d(){
int c;//局部变量,需要初始化
System.out.println(b); }
}
方法区:1)java程序运行时存入类文件的字节码信息(.class),解析后装入方法区。类的各种信息(包括方法)都在方法区存储
2)方法只有一份,通过this区分具体是哪个引用