java 传参的时候,有常量引用吗

ningweidong 2011-05-07 11:00:40
c++里可以成const &st,防止引用参数被修改,
在java里应该怎么写?
...全文
431 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
涅槃 2011-05-08
  • 打赏
  • 举报
回复
java 里面好像都是传值的
ZangXT 2011-05-08
  • 打赏
  • 举报
回复
写一个子类,涉及到修改属性值的方法空实现或者抛异常
ningweidong 2011-05-08
  • 打赏
  • 举报
回复
你好。我觉得常量指针的功能很重要啊,java没办法实现吗?
[Quote=引用 10 楼 inhibitory 的回复:]
引用 7 楼 ningweidong 的回复:

引用 6 楼 inhibitory 的回复:
c++里可以成const &st,防止引用参数被修改
不止是防止引用被修,还有几个更重要的原因
1. 速度
2. 可以传递临时参数 (非常重要,尤其是在Qt中到处都是)
3. 只有非const方法能被调用
4. 不能修对象的属性值

你好。
public s……
[/Quote]
Inhibitory 2011-05-08
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 ningweidong 的回复:]

引用 6 楼 inhibitory 的回复:
c++里可以成const &st,防止引用参数被修改
不止是防止引用被修,还有几个更重要的原因
1. 速度
2. 可以传递临时参数 (非常重要,尤其是在Qt中到处都是)
3. 只有非const方法能被调用
4. 不能修对象的属性值

你好。
public static void change(final ning n……
[/Quote]
Java里做不到
tianyu945473925 2011-05-08
  • 打赏
  • 举报
回复
参数前面加上final修饰符就OK
ningweidong 2011-05-08
  • 打赏
  • 举报
回复
你好,我想只读取参数的值,而不准修改它的属性值,应该怎么做?
[Quote=引用 5 楼 ganhaitian 的回复:]
引用 4 楼 ningweidong 的回复:

引用 2 楼 healer_kx 的回复:
Java 传递参数,如果是int String,不加final也没事。

你好。
public static void change(final ning n)
{
n.i = 1;
}
我声明了final还是可以改变参数。


这种语境下的常量是指,ningr的引用n不可以再指……
[/Quote]
ningweidong 2011-05-08
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 inhibitory 的回复:]
c++里可以成const &st,防止引用参数被修改
不止是防止引用被修,还有几个更重要的原因
1. 速度
2. 可以传递临时参数 (非常重要,尤其是在Qt中到处都是)
3. 只有非const方法能被调用
4. 不能修对象的属性值

你好。
public static void change(final ning n) { n.i = 1; }
我声明了final还是可以……
[/Quote]

你好。如果我想实现常量指针的功能,就是不请允许修改引用的属性值,应该怎么做?
Inhibitory 2011-05-08
  • 打赏
  • 举报
回复
c++里可以成const &st,防止引用参数被修改
不止是防止引用被修,还有几个更重要的原因
1. 速度
2. 可以传递临时参数 (非常重要,尤其是在Qt中到处都是)
3. 只有非const方法能被调用
4. 不能修对象的属性值

你好。
public static void change(final ning n) { n.i = 1; }
我声明了final还是可以改变参数。

Java里只是引用本身不能被修,但是引用的属性值是可以被修改的。相当于C++的指针常量,而非常量指针,即是int* const pointer
ganhaitian 2011-05-08
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ningweidong 的回复:]

引用 2 楼 healer_kx 的回复:
Java 传递参数,如果是int String,不加final也没事。

你好。
public static void change(final ning n)
{
n.i = 1;
}
我声明了final还是可以改变参数。
[/Quote]

这种语境下的常量是指,ningr的引用n不可以再指向其它的实例.但改变n实例内部的属性是没有问题的.
如果你这样写就编不过去啦....

ublic static void change(final ning n)
{
ning s=null;
n=s;
}

ningweidong 2011-05-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 healer_kx 的回复:]
Java 传递参数,如果是int String,不加final也没事。
[/Quote]
你好。
public static void change(final ning n)
{
n.i = 1;
}
我声明了final还是可以改变参数。
ningweidong 2011-05-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 enzo1986 的回复:]
你是指函数参数为常量吗?如果是,用final
public void test(final int a){

}
[/Quote]

你好。
public static void change(final ning n)
{
n.i = 1;
}
我声明了final还是可以改变参数。
healer_kx 2011-05-07
  • 打赏
  • 举报
回复
Java 传递参数,如果是int String,不加final也没事。
南通胡逗 2011-05-07
  • 打赏
  • 举报
回复
你是指函数参数为常量吗?如果是,用final
public void test(final int a){

}

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧