博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 中函数的参数传递详细介绍
阅读量:5334 次
发布时间:2019-06-15

本文共 2605 字,大约阅读时间需要 8 分钟。

 java中函数的参数传递

总结:

  1.将对象(对象的引用)作为参数传递时传递的是引用(相当于指针)。也就是说函数内对参数所做的修改会影响原来的对象。

  2.当将基本类型或基本类型的包装集作为参数传递时,传递的是值。也就是说函数内对参数所做的修改不会影响原来的变量。
  3.数组(数组引用))作为参数传递时传递的是引用(相当于指针)。也就是说函数内对参数所做的修改会影响原来的数组。
  4.String类型(引用)作为参数传递时传递的是引用,只是对String做出任何修改时有一个新的String对象会产生,原来的String对象的值不会做任何修改。(但是可以将新的对象的       引用赋给原来的引用,这样给人的表面现象就是原来的对象变了,其实没有变,只是原来指向它的引用指向了新的对象)。

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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
package
StringTest;
  
class
A{
  
int
a=
1
;
  
char
b=
'A'
;
  
public
A(){}
  
public
A(
int
_a,
char
_b){
    
this
.a=_a;
    
this
.b=_b;
  
}
  
public
String toString(){
    
return
"a="
+
this
.a+
",b="
+
this
.b;
  
}
}
  
  
public
class
ReferenceTest {
  
public
static
A changeA(A classa){
    
classa.a=
2
;
    
classa.b=
'B'
;
    
return
classa;
  
}
    
  
public
static
String changeString(String str){
     
System.out.println(str.hashCode());
     
str=str.toLowerCase();
     
System.out.println(str.hashCode());
     
return
str;
  
}
    
  
public
static
int
changeint(
int
a){
    
a=a+
1
;
    
return
a;
  
}
    
  
public
static
Integer changeInteger(Integer a){
    
a=
new
Integer(
9
);
    
return
a;
  
}
    
  
public
static
int
[] changeintarray(
int
a[]){
    
a[
0
]=
10
;
    
return
a;
  
}
    
  
public
static
void
printArray(
int
a[]){
    
for
(
int
i=
0
;i<a.length;i++){
      
System.out.print(a[i]+
" "
);
    
}
    
System.out.println();
  
}
    
  
public
static
void
main(String[] args) {
    
//自定义的对象传递的是引用
    
A a=
new
A();
    
A b=changeA(a);
    
System.out.println(a);
    
System.out.println(b); 
    
System.out.println(
"----------------------"
);
    
//String对象作为参数传递的也是引用(只是String对象的值不能变,每一个修改String对象的值都会重新创建一个新的String对象用以保存修改后的值,原来的值不会变)
    
String str1=
"HUHUALIANG"
;
    
System.out.println(str1.hashCode());
    
String str2=changeString(str1);
    
System.out.println(str2.hashCode());
    
System.out.println(str1);
    
System.out.println(str2); 
    
System.out.println(
"----------------------"
);
    
//基本类型是值传递
    
int
inta=
8
;
    
int
intb=changeint(inta);
    
System.out.println(inta);
    
System.out.println(intb); 
    
System.out.println(
"----------------------"
);
    
//基本类型的包装集作为参数传递的是值而不是引用
    
Integer c=
new
Integer(
1
);
    
Integer d=changeInteger(c);
    
System.out.println(c);
    
System.out.println(d); 
    
System.out.println(
"----------------------"
);
    
//数组传递的是引用
    
int
[] arraya={
0
,
1
,
2
,
3
};
    
int
[] arrayb=changeintarray(arraya);
    
printArray(arraya);
    
printArray(arrayb);
  
}
}

运行结果:

a=2,b=B

a=2,b=B
----------------------
711139030
711139030
226046678
226046678
HUHUALIANG
huhualiang
----------------------
8
9
----------------------
1
9
----------------------
10 1 2 3
10 1 2 3 

转载于:https://www.cnblogs.com/fnlingnzb-learner/p/7240681.html

你可能感兴趣的文章
G - Bear and Friendship Condition
查看>>
Word,PDF,PPT,TXT之间的转换方法
查看>>
linux 下mysql 字段插入的值超过 预设大小报错
查看>>
专用服务器模式&共享服务器模式
查看>>
ORACLE绑定变量隐式转换导致性能问题
查看>>
spring边边角角
查看>>
php代码
查看>>
卸载python2.7出错
查看>>
谈渗透测试方法和流程
查看>>
添加随笔添加随笔添加随笔
查看>>
[转]df命令
查看>>
AngularJS checkbox/复选框 根据缓存数据实时显示
查看>>
二叉搜索树的查找
查看>>
漫画:程序员的一生
查看>>
Windows_GDI概述
查看>>
AbstractBootstrap的研读
查看>>
acl 框架库简介
查看>>
【Android】GLSurfaceView
查看>>
不带头结点的单链表递归删除元素为X的结点
查看>>
单向链表 golang
查看>>