什么是方法

方法的定义和调用


值传递与引用传递
值传递:指的是在方法调用时,传递的是参数是按值的拷贝传递。
特点:传递的是值的拷贝,也就是传递后就互不相关了。
引用传递:指的是在方法调用时,传递的参数是按引用进行传递,其实传递的是引用的地址,也就是变量所对应的内存空间的地址。
特点:传递的是值的引用,也就是说传递前和传递后都指向同一个引用(也就是同一个内存空间)。
Java中数据类型分为两大类,基本类型和对象类型。相应的,变量也有两种类型:基本类型和引用类型。
基本类型的变量保存原始值,即它代表的值就是数值本身;
而引用类型的变量保存引用值,"引用值"指向内存空间的地址,代表了某个对象的引用,而不是对象本身,
对象本身存放在这个引用值所表示的地址的位置。
基本类型包括:byte,short,int,long,char,float,double,Boolean,returnAddress,
引用类型包括:类类型,接口类型和数组。
其中比较特殊一点的是String类型和基本类型的包装类类型,它们也是按值传递的,但它是属于引用类型
基本类型,值就直接保存在变量中。而String是引用类型,变量中保存的只是实际对象的地址。一般称这种变量为"引用",引用指向实际对象,实际对象中保存着内容
事实上,java里面参数传递只有值传递一种,因为引用传递可以相当于传递的是引用值。至于引用值是什么,我们可以类比C语言得指针变量,它存放的也是一段内存空间的地址。在不同方法之间,看似传递的是一个对象,但其实对象的位置并没有动,只是将存放对象的内存地址进行了传递,这样当改变对象的一些属性时,也会的的确确改变堆内存中对象的某些属性值
方法的重载

命令行传递参数



可变参数

public class Demo02 {
public static void main(String[] args) {
Demo02 demo02 = new Demo02();
demo02.test(1);
}
public void test(int x,int... i){
System.out.println(i[0]);
}
}
递归
