引用传递:也称为传地址。方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法中相对应的形式参数,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,方法执行中形式参数值的改变将会影响实际参数的值。
分类
Java语言提供了很多修饰符,大概分为两类:
1. 访问权限修饰符
2. 非访问权限修饰符
访问权限修饰符
非访问权限修饰符
类
外部类修饰符
注意:
1.protected 和 private 不能修饰外部类,是因为外部类放在包中,只有两种可能,包可见和包不可见。
2. final 和 abstract不能同时修饰外部类,因为该类要么能被继承要么不能被继承,二者只能选其一。
3.不能用static修饰类,因为类加载后才会加载静态成员变量。所以不能用static修饰类和接口,因为类还没加载,无法使用static关键字。
内部类修饰符
内部类与成员变量地位一直,所以可以public,protected、default和private,同时还可以用static修饰,表示嵌套内部类,不用实例化外部类,即可调用。
方法修饰符
成员变量修饰符
final 和 static 经常一起使用来创建常量。
局部变量修饰符
only final is permitted。
为什么不能赋予权限修饰符?
因为局部变量的生命周期为一个方法的调用期间,所以没必要为其设置权限访问字段,既然你都能访问到这个方法,所以就没必要再为其方法内变量赋予访问权限,因为该变量在方法调用期间已经被加载进了虚拟机栈,换句话说就是肯定能被当前线程访问到,所以设置没意义。
为什么不能用static修饰
我们都知道静态变量在方法之前先加载的,所以如果在方法内设置静态变量,可想而知,方法都没加载,你能加载成功方法内的静态变量?
接口
接口修饰符
接口修饰符只能用public、default和abstract。
不能用final、static修饰。
接口默认修饰为abstract。
接口中方法修饰符
only public & abstract are permitted 。
意思只能用 public abstract修饰,当然如果你什么都不写,默认就是public abstract。
注意:在Java1.8之后,接口允许定义static 静态方法了!所以也可以用static来修饰!
public static void add(int x,int y){ int c; c=x+y; System.out.println©; }这个为自己构建一个方法,其中参数x和y就是形式参数,切记这里的变量c,它是变量,不是参数,这个容易混淆。
public static void main(String[] args){ int a=5; int b=6; add(a,b); }在这里,a和b就是实际参数。