[b][/b]
参数的传递
一.种类
1.值传递
2.引用传递
二.值传递
1.适用范围:
基本数据类型(byte,int,short,long,float,boolean,double,char)
String字符串型
2.传递方式:
1)定义在栈内存中
2)变量名,属性名,参数名中存储的是值。
3)将值拷贝一份传入到另一个变量名,属性名,参数名中。
3.例
//创建一个类
public class Student{
public void number(int t){
System.out.println(t);
}
}
//程序运行入口
public class Test{
public static void main(String args[]){
Student stu=new Student();
int i=1000;
stu.number(i);
}
}
//输出结果
1000
说明:
方法中number中所改变的t与i没关系,不会影响到调用代码中i的值
三.引用传递
1.适用范围
对象类型(class,interface,abstract class定义的类)
数组
2. 传递方式:
1)对象名在栈内存中,对象堆内存中
2)对象名(变量名,属性名,参数名)中存储的是对象在堆内存中的首地址。
3)将对象名(变量名,属性名,参数名)中存储的首地址拷贝一份存入(传入)到另一个对象名(变量名,属性名,参数名)中。
3.例
//创建一个类
public class Student {
private String name;
public void setName(String name){
this.name = name;
System.out.println(name);//输出:1 2 3
}
//获得姓名的方法
public String getName(){
return name;
}
}
//程序执行入口
public class yinyong {
public static void main(String args[]){
//创建对象
Student st1=new Student();
st1.setName("1");
Student st2=new Student();
st2.setName("2");
Student st3=new Student();
st3.setName("3");
//进行交换
st1=st2;
st2=st3;
st3=st1;
String name=st3.getName();
System.out.println(name);//输出:2
}
}
//输出结果
1
2
3
2
说明:在方法的调用时,如果方法的参数是引用类型,传入的只是一个对象名的引用,而不是这个对象本身
参数的传递
一.种类
1.值传递
2.引用传递
二.值传递
1.适用范围:
基本数据类型(byte,int,short,long,float,boolean,double,char)
String字符串型
2.传递方式:
1)定义在栈内存中
2)变量名,属性名,参数名中存储的是值。
3)将值拷贝一份传入到另一个变量名,属性名,参数名中。
3.例
//创建一个类
public class Student{
public void number(int t){
System.out.println(t);
}
}
//程序运行入口
public class Test{
public static void main(String args[]){
Student stu=new Student();
int i=1000;
stu.number(i);
}
}
//输出结果
1000
说明:
方法中number中所改变的t与i没关系,不会影响到调用代码中i的值
三.引用传递
1.适用范围
对象类型(class,interface,abstract class定义的类)
数组
2. 传递方式:
1)对象名在栈内存中,对象堆内存中
2)对象名(变量名,属性名,参数名)中存储的是对象在堆内存中的首地址。
3)将对象名(变量名,属性名,参数名)中存储的首地址拷贝一份存入(传入)到另一个对象名(变量名,属性名,参数名)中。
3.例
//创建一个类
public class Student {
private String name;
public void setName(String name){
this.name = name;
System.out.println(name);//输出:1 2 3
}
//获得姓名的方法
public String getName(){
return name;
}
}
//程序执行入口
public class yinyong {
public static void main(String args[]){
//创建对象
Student st1=new Student();
st1.setName("1");
Student st2=new Student();
st2.setName("2");
Student st3=new Student();
st3.setName("3");
//进行交换
st1=st2;
st2=st3;
st3=st1;
String name=st3.getName();
System.out.println(name);//输出:2
}
}
//输出结果
1
2
3
2
说明:在方法的调用时,如果方法的参数是引用类型,传入的只是一个对象名的引用,而不是这个对象本身