java 函数参数的传递问题。
最近在学习java的时候,对于java函数的传递了解了一下。java的数据类型大的分为两种,一种是基本数据类型,另一种是非基本数据类型,(类数据类型)。在参数传递时候,基本的数据类型传递的是对实参数的一份拷贝,而非基本数据类型则是实例的引用的一份拷贝。我的理解是类的实例,即对象存放的内容就是引用,实际是地址。
下面的内容引用地址如下:http://blog.sina.com.cn/s/blog_5198c7370100dut4.html
java函数中的传值和传引用问题一直是个比较“邪门”的问题,其实java函数中的参数都是传递值的,所不同的是对于基本数据类型传递的是参数的一份拷贝,对于类类型传递的是该类参数的引用的拷贝,当在函数体中修改参数值时,无论是基本类型的参数还是引用类型的参数,修改的只是该参数的拷贝,不影响函数实参的值,如果修改的是引用类型的成员值,则该实参引用的成员值是可以改变的,例子如下。
首先是定义改变参数的
public static void changeInt(int i){//改变int型变量的函数
i=100;
}
public static void changeString(String s){//改变String型变量的函数
s="changeString";
}
public static void changeModel(Model model){//改变Model型变量的函数
model=new Model();
model.i=1;
model.s="changeModel";
}
public static void changeModel2(Model model){//改变Model型变量的成员的函数
model.i=1;
model.s="changeModel";
}
类Model
class Model{
public int i=0;
public String s="no value";
}
测试程序
public static void main(String[] args) {
int i=0;
String s="hello";
Model model=new Model();
Model model2=new Model();
changeInt(i);
System.out.println("i="+i);
changeString(s);
System.out.println("s="+s);
changeModel(model);
System.out.println("model:"+model.s);
changeModel2(model2);
System.out.println("model2:"+model2.s);
}
测试结果:
i=0
s=hello
model:no value
model2:changeModel
可以看出i没有改变,s也没有改变,mode也没有改变,model2的s改变了。
总结:java中的形参是
相关文档:
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.SortedSet;
import java.util.TreeSet;
import java.util.logging.Logger; ......
Java把内存划分成两种:一种是栈内存,一种是堆内存。
在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。
当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量 ......
一个Java程序员应该掌握的10项技能
一个合格的Java程序员应该学什么、学到什么程度、怎么学?本文总结了十项Java程序员应该具备的基本技能,供您参考。
1、语法:必须比较熟悉,在写代码的时候IDE的编辑器对某一行报错应该能够根据报错信息知道是什么样的语法错误并且知道任何修正。
2、命令:必须熟悉JDK带的一些常用 ......
import java.io.*;
public class FileReaderSample {
public static void main(String args[]) throws IOException
{
// 建立可容纳1024个字符的数组
char data[]=new char[1024];
// 建立对象fr
FileReader fr= ......