1.方法调用栈
举例:
public class Test2 {
public static void main(String[] args) {
int x = 1;
int []y = {1};
Test2 t2 = new Test2();
t2.add(x,y);
System.out.println(x);
System.out.println(y[0]);
}
public void add(int x,int [] y){
x = x + 1;
this.add1(y);
}
public void add1(int [] y){
y[0] = y[0] + 1;
}
}
进入main()方法 定义x,y 实例化对象
调用t2.add() 方法 传入x,y
执行add中的代码 x = x+1
调用add1()方法 并传入y
执行add2()中的代码
add1() 执行完成 退出栈
add()执行完成退出栈
然后运行打印
main()方法运行结束退出栈
2.调用方法
当一个方法正在执行的时候,可能发生三件事情
1.方法返回一个值
2.方法不返回值
3.方法抛出一个异常
注意:没有声明为静态方法(static修饰的)只能在对象实例化后才能使用。
3.方法的标签
方法的创建格式:
访问修饰符 返回类型 方法名字(参数列表){}
访问修饰符: public protected 默认(什么都不写) private
返回类型:基本数据类型和引用数据类型都可以
方法名字:遵循小驼峰
参数:
形式参数:一个方法中包含一个形式参数的列表 用于声明传递到方法中的数据的类型
实际参数:调用方法时传递给方法中形式参数的数据称为实际参数 用于传递给方法具体的数值
在传递的过程中 基本数据类型是拷贝一份,而引用数据类型是拷贝一份引用地址
4.方法的重载
定义: 在类中 方法名字一样而方法的参数类型、参数个数、参数顺序不同;
注意:方法重载只和方法的参数有关,和返回值类型无关;
5.构造器
作用:当对象通过new 关键字实例化时,JVM为对象分配内存,并初始化,以保证对象的数据有意义;
规则:
1.构造器的名字和类名相同
2.没有返回类型
分类: 无参构造 和 有参构造
无参构造:
在每一个类都会拥有一个默认的构造器,方便用户进行对象的初始化
默认构造器不包含任何语句 默认构造器中没有任何的参数,也不做任何事情
也可以手动写出来
public Test(){}
有参构造:
自定义一个构造器,可以添加参数,自定义初始化数据
一旦自定义构造器 将不会产生默认构造器了
public Test(int c){
this.c = c;
}
在构造器中this的使用
this. 代表对象的
public Test(int c){
this.c = c;
}
this() 代表构造器
public Test(){
this(4,10);
System.out.println("在无参构造中");
}
public Test(int c){
this(c,10);
System.out.println("在有一个参数的构造器中");
}
public Test(int c,int v){
System.out.println("在有两个参数的构造器中");
this.c = c;
this.v = v;
}