栈:存储基本的数据类型,和类的实例的引用(内存地址)。
规则:first in,last out(先存进后取出)。局部变量在调用栈中分配内存,当方法执行完成后,这些变量就被抛弃了。
堆:存放动态产生的数据,比如 new出来的对象,而且只保存对象的成员变量。
常量池:例:
String str = "abc";
String str2 = new String("abc");
str,str2的值“abc"就存放在常量池中,而new出来的这个 str2对象存放在堆中,str2中创建
了两个对象,一个存放在堆中,一个存放在常量池中,str和str2一共也创建了两个对象,在常量池中有了一个相同的之后就不会再重新创建了。
方法签名:
访问修饰符:(能否被访问)
本类 同一包中不同类 不同包 子类
public(公有的) 是 是 是 是
protected(受保护的) 是 是 否 是
default(默认) 是 是 否 否
private(私有的) 是 否 否 否
可选修饰符:static(静态的) , final(最终的) , abstract(抽象的) , native(本地的) , synchronized();
返回值:
方法名:
形式参数列表:
按值调用:工作原理是不管传递给方法的实际参数是什么类型,相关的形式参数都会得到该数据的一份拷贝。
方法重载:当一个类有两到多个同名但是有不同参数列表的方法时,就是方法重载。
例:在一个类中模拟计算器
public class Calculator {
public int multiply(int x ,int y){
System.out.println("这是整数与整数相乘");
return x*y;
}
public doouble multiply(double x , double y){
System.out.println("这是实数与实数相乘");
return x*y;
}
public double multiply(int x ,double y){
System.out.println("这是整数与实数相乘");
return x*y;
}
}
可以传入多个参数。
构造器:用于当对象实例化时,初始化对象中的成员变量。
必须满足如下两个属性:
1.构造器的名称必须与类名相同。
2.构造器不能声明返回值,也不能返回void。
例:
public class Radio{
public int volume;
public float tuning;
public char band;
public Radio(){
System.out.println("在无参构造器中");
tuning = 80.0F;
band = ‘F‘;
volume = 5;
}
public Radio(float t){
System.out.println("在float参数构造器中");
tuning = t;
band = ‘A‘;
volume = 8;
}
}
在有参构造器中可以有多个参数,在不写构造器的情况下,系统会自动写出无参构造器,如果自己写了有参构造器就必须同时写出无参构造器,否则会报错。
构造器的使用:
Radio x = new Radio(); // 这是无参构造器
float station = 100.3F;
Radio y = new Radio(station); //有参
在构造器中调用构造器this.();有参数的传入参数,调用语句必须是这个构造器中的第一条语句。