引用变量:
简称为引用,存储的是堆中的变量的地址信息,指向的是对象,
方法:
(1)方法签名:
方法签名 = 方法名(形参列表);
方法签名是用来在判断调用者执行方法时执行的是哪个方法以及判断是否存在此种类型方法
例如:
c.sum(3,3);当调用这种方法时,编译器会在类中查看是否存在sum(int)(int)类型的方法签名,如果存在,编译通过,如果不存在,编译器就会寻找比此类型大的类型,如sum(long)(double)..如果有,编译就通过,如果没有,编译失败。
不能找比本类型小的类型,如sum(short)(int)就会报错。
如果输入的是sum(short)(int),编译器会先查找本类型,如果没有,就会寻找sum(int)(int)类型的方法签名,如果有,就停止查找,编译通过,没有就继续查找比自己数据类型大的,如果有编译通过,没有编译出错。
(2)方法重载(overload)
在同一个类型中,方法名相同,形参列表不同,即方法的重载
方法重载用于方法相同的运算,(见名知意)但是逻辑体以及形参可能有所不同的方法,需要重写
方法的定义语法:
修饰词 返回值类型 方法名(形势参数){
逻辑体;
}
调用语法:
没有static修饰的方法的调用:必须使用 引用(对象).方法名(有参传参);
(3)构造方法:
构造方法也叫构造器,是特殊的方法,
语法:
public 类名(参数){
}
构造器可以分为无参构造器和有参构造器两大类型;
无参构造器:
public class Tiger{
String name;
int age;
int speed;
String color;
public Tiger(){
构造器方法体中可以直接对成员变量赋值;也可以不赋值,在实例化时赋值
}//这种无参构造器不灵活
调用语法:
public static void main(String[] args{
Tiger t = new Tiger();//对象的实例化,以及对成员变量进行赋值,因为是无参构造器,所以小括号内可以不用写
}
有参构造器:参数可以自己设置,类型也是:
比如我们想要形参name和age;
punlic Tiger(String name,int age){
this.name = name;
this.age = age;
color = "黄色";
speed = 50;
}
调用时:
Tiger t = new Tiger("杰克",5);在创建对象时,有形参就传实参;
注意:在没有定义构造器时,系统会默认提供一个无参构造器,定义了之后,系统就不再提供默认构造器
成员变量与局部变量的区别:
成员变量:
(1)成员变量在类体中,方法外;
(2)默认值:成员变量有默认值,可以不在构造器内对成员变量初始化;
(3)位置:成员变量在堆中,与对象绑定;
(4)生命周期:从对象的实例化到对象的消失
局部变量:
(1)在方法体内,包括形式参数;
(2)默认值:局部变量没有默认值,声明时直接进行初始化;
(3)位置:在栈中,程序在运行方法时会在栈中开辟一块独有的空间,称为栈帧,局部变量在栈帧中;
(4)生命周期:从变量的声明到栈帧消失;
内存管理机制:
jvm将内存分为三大主要区域,即方法区,栈,堆;
方法区:用于存储加载的字节码文件(类的信息),包含类的方法,类的方法只有一份,类中的对象共享这份方法,在没有
static修饰的类中,需要使用 对象.方法名(有参传参);来调用类中的方法;
堆:用于存储new出来的对象,给成员变量分配空间;
栈:存放的是局部变量,在栈中会给每一个方法分配一个空间(栈帧),局部变量存储在栈帧中
垃圾回收机制(GC):
垃圾回收机制是用来回收没有任何指向的对象;
如:
Person p = new Person();
p =null;
此时p的地址信息为空,没有任何指向,可以视为垃圾,等待被GC回收处理。