Java变量,形参,实参
成员变量
成员变量定义在类中,在整个类中都可以被访问。
成员变量分为类成员变量和实例成员变量,实例变量存在于对象所在的堆内存中,类成员变量也叫静态变量,存在于静态域内。
成员变量有默认初始化值。
成员变量的权限修饰符可以根据需要,选择任意一个。
局部变量
局部变量只定义在局部范围内,如:方法的形参,方法内的变量,代码块内的变量等。
局部变量存在于栈内存中。
作用的范围结束,变量空间会自动释放。
局部变量没有默认初始化值,除形参外每次必须显式初始化。
局部变量声明时不指定权限修饰符。
成员变量的默认初始值
基本类型 | 默认值 |
boolean | false |
int | 0 |
short | 0 |
byte | 0 |
char | ‘\u0000’ |
long | 0L |
float | 0.0F |
double | 0.0 |
引用类型(数组、对象…) | null |
关于形参和实参
定义方法的参数是形式参数,即方法的参数列表
调用方法的参数是实在参数,即调用方法时传递的参数
调用方法时要求参数个数相同,类型兼容
参数传递
基本数据类型的参数传递,无法通过方法调用改变变量的值,change内修改的变量i.j并不是main方法里的i,j
/*
* main方法定义的变量i,j没有改变
*/
public static void main(String[] args) {
int i = 10;
int j = 20;
System.out.println(i+","+j);//10,20
Test1.change(i, j);
System.out.println(i+","+j);//10,20
}
public static void change(int i,int j){
int temp=i;
i=j;
j=temp;
System.out.println(i+","+j);//20,10
}
引用数据类型的参数传递,可以通过方法调用改变变量的值,因为调用change方法时是把p的引用赋给change方法的形参了,change方法内修改的是堆内的对象
public class Test1 {
public static void main(String[] args) {
Point p = new Point(10,20);
System.out.println(p.getI()+","+p.getJ());//10,20
Test1.change(p);
System.out.println(p.getI()+","+p.getJ());//20,10
}
public static void change(Point p){
int temp = p.getI();
p.setI(p.getJ());
p.setJ(temp);
System.out.println(p.getI()+","+p.getJ());//20,10
}
}
class Point{
private int i;
private int j;
public Point(int i,int j){
this.i = i;
this.j = j;
}
public int getI() {
return i;
}
public void setI(int i) {
this.i = i;
}
public int getJ() {
return j;
}
public void setJ(int j) {
this.j = j;
}
}
还没有评论,来说两句吧...