欢迎访问宙启技术站
智能推送

Java函数中如何传递和返回引用类型和值类型的数据

发布时间:2023-05-31 03:39:08

Java中有两种基本的数据类型:引用类型和值类型。

值类型的特点是它们的值被存储在固定大小的存储单元中。它们可以是int,float,double,boolean等。

引用类型是指对象的引用,如String,Array,List等。它们的值是存储在堆中的对象的地址。

在Java中,函数可以传递和返回引用类型和值类型的数据。下面将分别讨论这两种情况。

1. 传递和返回值类型的数据

在Java中,函数通过参数和返回值传递值类型的数据。

传递值类型的数据时,仅仅传递了该数据的副本,该数据的原始值不会受到影响。例如:

public static void main(String[] args) {
    int a = 10;
    changeValue(a);
    System.out.println(a);  // 输出10,a的值未改变
}

public static void changeValue(int a) {
    a = 20;
}

在上面的代码中,我们在main函数中定义了一个变量a并赋值为10。然后将a作为参数调用了changeValue函数。changeValue函数通过参数a获取到了a的副本,在函数内部将a赋值为20,但是这个变化并没有影响到原始的a的值。

返回值类型的数据时,函数返回一个值类型的值。例如:

public static int add(int a, int b) {
    int result = a + b;
    return result;
}

public static void main(String[] args) {
    int result = add(1, 2);
    System.out.println(result);  // 输出3
}

在上面的代码中,add函数接受两个参数a和b,并返回它们的和。在main函数中调用add函数,并将返回值存储在变量result中,然后将result输出到控制台。

2. 传递和返回引用类型的数据

在Java中,函数通过参数和返回值传递引用类型的数据。

传递引用类型的数据时,函数传递的是该引用类型数据的引用,可以通过该引用修改原始数据的属性值。例如:

public static void main(String[] args) {
    StringBuilder sb = new StringBuilder("hello");
    changeValue(sb);
    System.out.println(sb.toString());  // 输出world
}

public static void changeValue(StringBuilder sb) {
    sb.append(" world");
}

在上面的代码中,我们在main函数中定义了一个StringBuilder对象sb,并将其初始化为“hello”。然后将sb作为参数调用了changeValue函数。changeValue函数通过参数sb获取到了sb的引用,在函数内部将sb的值修改为“hello world”。

返回引用类型的数据时,函数返回一个引用类型的值。例如:

public static ArrayList<String> getList() {
    ArrayList<String> list = new ArrayList<String>();
    list.add("hello");
    return list;
}

public static void main(String[] args) {
    ArrayList<String> list = getList();
    System.out.println(list.get(0)); // 输出hello
}

在上面的代码中,getList函数创建了一个ArrayList对象并添加“hello”这个元素,然后返回该对象的引用。在main函数中,我们通过调用getList函数获取到了一个ArrayList对象,并将其存储在list变量中。然后我们通过调用list的get方法获取到了该列表的 个元素并输出到控制台。

总结

Java中可以传递和返回值类型的数据和引用类型的数据。

传递值类型的数据时,函数传递的是该值类型数据的副本,函数内部对该副本的修改不会影响到原始值。

返回值类型的数据时,函数返回一个值类型的值。

传递引用类型的数据时,函数传递的是该引用类型数据的引用,在函数内部对该引用修改会影响到原始数据的属性值。

返回引用类型的数据时,函数返回一个引用类型的值。