抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

同一个坑掉进去两次的问题,对于String类型的字符串时不能修改的问题还是没有记住!

首先明确一个问题,在java中数据类型分为基本数据类型和引用数据类型。其中基本数据类型是值传递的,即在调用方法时是对原先传入的值无影响的,而引用数据类型在传递的却是在堆内存中的地址值。所以在调用方法的时候可以对堆内存的值进行操作。

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
public class App{
public static void main(String[] ages){
int a = 10;
String str = "tom";
int[] arr = new int[3];
System.out.println(Arrays.toString(arr));//[0,0,0]
//调用字符串方法
String result = char(str);//tom

//调用数组方法
arr(arr);
System.out.println(Arrays.toString(arr));//[1,2,3]

//调用基本类型变量
int value = variable(a);
System.out.println(a);//10
System.out.println(value);//20
}

//传入字符串(引用数据类型)
public static String char(String str){
str.replace("t","j");//由于String类型的变量在初始化之后就不可以再更改内容了,所以此方法是有返回值的
return str;
}

//传入数组(引用数据类型)
public static void arr(int[] arr){
for(int i = 1;i <= arr.length;i++){
arr[i] = i;//会修改堆内存中的数据
}
}

//传入变量a(基本数据类型)
public static int variable(int a){
a = 20;
return a;
}
}

评论