Ⅰ java中怎么让函数传地址
你好 java中没有地址传递
java中都是基于值的传递
基本类型变量作为参数传递的话,是直接把变量值复制过去
引用类型作为参数传递的话,是把引用里面的值复制过去
Ⅱ java值传递和地址传递
JAVA传递参数有两种方式:值传递和引用传递
值传递是传递数据:如基本数据类型都是值传递
引用传递是把形参和实参的指针指向了堆中的同一对象,对象的引用和数组的引用。
实参,Java的基本数据类型,如int,double等在函数的参数传递时,传递的是副本。String也属于这一范畴。
形参,而如果是对象,则传递的是引用。
如下代码实例:
{
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
personp=newperson();
p.name="ken";
p.age="12";
reset(p);//传递的是p的指针地址,方法里面在对p的属性进行修改,方法结束后影响依然存在。
Stringname=p.name;
Stringage=p.age;
System.out.println(name+age);
//name=gg,age=223
setContentView(R.layout.main);
}
privatevoidreset(personap){
ap.name="gg";
ap.age="223";
} classperson{
Stringname;
Stringage;
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicStringgetAge(){
returnage;
}
publicvoidsetAge(Stringage){
this.age=age;
}
}
Ⅲ java 里函数调用怎么传递地址
Java 里面不存在指针之类的运算```
也不存在想 C#里面的 ref 值引用
但可以用 JavaBean 里面的get 和 set 方法封装数据,也挺好用的
Ⅳ JAVA数组地址传递问题!
在Java中,参数的传递严格意义上讲都是传值的,只不过简单很容易分清楚。而对于对象,有些复杂。
首先,在Java中是先声明一个类的变量。然后,用类生成一个类的实例,也就是在内存中的类的实例区域,最后把这个区域的指针赋给类的这个变量。注意,变量中存的是指向对象的指针。
若是按传址传参数,是要改变这个对象变量所指的内存对象区域,也就是要在方法内把新对象赋给方法外的对象变量。但是,这在Java中办不到。因为Java是把对象变量中的对象指针传入方法,并没有把变量本身的地址传入方法;在方法中,会生成新变量接受这个对象的指针。所以,在Java方法中,可以改变当前对象中的内容,却不能改变方法外边变量的值,即所指向的对象。对于传值、传址的分析就是为了在应用中少犯错误。其他是次要的。
明白没有,是传值而不是传值的地址!地址没有变,C当然不变了!
Ⅳ java中有地址参数传递吗
你需要明白,地址参数传递的真实含义,然后就明白了,只拿概念去套是没有意义的。套概念只会今天问 java 有没有,明天问其它的语言有没有。
java 的参数传递不同于按值传递,也不完全同于按地址传递,因为这需要区分基本类型和抽象类型。
名义上 Java 都是按值传递,但对于抽象类型来说又有引用传递的效果。指向原始对象,函数调用后的效果也导致了目标对象被改动,之后持有指向目标对象的符号的变量就跟着有了变化,这点就像引用传递。
所以 Java 的核心人士都说 Java 只有按值传递。但理解了 Java 的引用之后就明白,对于抽象类型的对象,这其实也是引用传递。所以在 Java 中没直接与 C++ 地址传递。
Java API 中有些类型的是 immutable,就是说它的状态在创建之后不再更改,所以修改需要创建一个全新的对象,比如 String, Integer 之类的,所以 str + "sest" 其实并未改变 str 对象本身,所以需要用 str = str + "test" 来接收改变之后的结果,它是一个新的 String 对象,不同于 str + "test" 调用之前的那个 str。
Ⅵ java传地址
a的地址赋值给b变量,就是b指向的值是a原来指向的值
java好像只有传值和传引用,好像没有传地址