JAVA中如何把一个类中赋值的变数传递到另一个类中使用

Python020

JAVA中如何把一个类中赋值的变数传递到另一个类中使用,第1张

JAVA中如何把一个类中赋值的变数传递到另一个类中使用 方法如下:

在第一个类中new一个A类的物件,定义的这个引数作为此物件的构造方法的引数,A中就可以取得这个变数的值用了

该类中New一个A类

public class MainClass{

String str = ""

A a = new A(str )

.........

}

A类

protected class A{

private String str = ""

A(String str){

this.str = str

}

此处就可以正常输出了

System.out.println("arg=" + str)

}

在类A中同样定义变数N,然后设定一个

setN( NType n ){ this.N = N}方法。

MFC 如何在一个类中使用另一个类中定义的变数

参考如下程式码:

class b

{public:

b (int i) {m_i=i}  class b只有一个带引数的建构函式

private:

int m_i}

class a{

public:

a ()

:m_b(1)  因为b没有预设建构函式,所以必须在初始化表中初始化

{

}

b m_b}

一个类如何读取另一个类中宣告并赋值的变数?

把int b = 0在类中宣告为 static:

public class Test {

public static void main(String[] args) {

a()

a()

a()

System.out.print(b())怎么写B里面的内容和main的内容 让b的结果为6

}

static int b=0

static int a(){

b+=2

return b

}

static int b(){

return b

}

}

php 类中的全域性变数怎么在另一个类中使用

换成static class a{static $ip} class b{ function x(){var_dump(a::$ip)}}

如何在一个类中赋值给另一个类的变数

有参的构造方法,比如你要把A类中的成员变数numA的值赋值给B当中的成员变数numB,你在B中建立一个有参的构造方法A a=new A()B b=new B(a.getNumA)

如何在一个类中使用另一个类定义的变数

首先注意一下private、public等限制呼叫的范围,确保可以呼叫时参考如下

1

2

3

4

5

6

7

8

public class A {

public static int i

}

public class B {

public int i

}

A.i呼叫全域性变数

new B().i用来呼叫非全域性变数(一般不用此方式呼叫全域性变数,虽然可以,但是建立类时会消耗效能)

java/android的动态变数值传递到另一个类中。如何将for里面的变数回圈传递到另一个类中?请大神另外帮

题主的意图无非是把一个String变数传递到SubActivity这个类中。不太懂android的具体细节,不过可行的方法无外乎两种:

1. 在建构函式里传参,比如:

SubActivity sub = new SubActivity(str) 将str赋值给sub的某个成员变数sub.printString() 列印那个成员变数

2. 有一个setter方法,比如说叫setString:

SubActivity sub = new SubActivity()sub.setString(str) 将str赋值给sub的某个成员变数sub.printString() 列印那个成员变数

并没有什么别的魔法。

在Java中如何把字串传递到另一个Java类中

有两种方式,实现字串传递到另一个Java类中。

第一种,呼叫另外一个java类的构造器,将字串作为引数,传入;

第二种,呼叫另外一个java类的set方法,将字串作为引数,传入。

java中怎么在一个类中使用另外一个类中的变数?

比如在A类中定义个字串str class A{ String str = "abc"} 那么在B类中,先定义个A类的例项a,然后通过例项a来访问变数str就行了,如下 class B{ public void test(){ A a = new A()System.out.println(a.str)} } 要注意A类中的str的修饰符不能是private;如果A类和B类不在一个包中,那么也不能是预设的;

1、直接抽象类 对象 = new 抽象类(){//重写此抽象类的抽象方法}例子:privateTimerTask t1=newTimerTask(){@Overridepublicvoidrun() {//TODO Auto-generated method stub//在此实现该抽象方法}}外层publicclassTimerActivity2extendsActivity {/**Called when the activity is first created.*/publicTimer timer=newTimer()privateTimerTask t1=newTimerTask(){@Overridepublicvoidrun() {//TODO Auto-generated method stub}}@OverridepublicvoidonCreate(Bundle savedInstanceState) {..}}2、抽象类 对象 = new 子类()接口/实现类 对象= new 实现类()class 子类 extends 抽象类{//实现此抽象类的抽象方法即可。}class 实现类 implements 接口{//实现此接口的抽象方法即可}例子:publicclassTimerActivity2extendsActivity {/**Called when the activity is first created.*/publicTimer timer=newTimer()privateTimerTask tTask=newMyTimerTask()@OverridepublicvoidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState)setContentView(R.layout.main)}//子类classMyTimerTaskextendsjava.util.TimerTask {@Overridepublicvoidrun() {//TODO Auto-generated method stub//在此实现该抽象方法}}.......}接口时:......//某处//MySensorEventListener mSensorEventListenerSensorEventListener mSensorEventListener.....//某处,定义和赋值可以写在一句话里面mSensorEventListener=newMySensorEventListener().......//某处classMySensorEventListenerimplementsSensorEventListener {@OverridepublicvoidonAccuracyChanged(Sensor sensor,intaccuracy) {//TODO Auto-generated method stub}@OverridepublicvoidonSensorChanged(SensorEvent event) {//TODO Auto-generated method stub//在此做方法的实现即可}}3、直接把对象创建出来,比如在参数中需要用到某个类对象的时候,除了上述方法以外,也可以直接把此对象创建出来。public void method(class obiect,,)()中就可以这么写(new (抽象类/接口(){//在这实现抽象方法}))例子:b1.setOnClickListener(newButton.OnClickListener() {@OverridepublicvoidonClick(View arg0) {//定义计时器timer=newTimer()timer.schedule(newTimerTask() {//TimerTask 是个抽象类,实现的是Runable类@Overridepublicvoidrun() {}},1000,200)}})此例子中,newButton.OnClickListener()是一个接口对象,实现onClick这个接口的抽象方法。记住!不需要这个要让外部activity实现接口。是一个抽象类对象,里面也要实现run()这个抽象类的抽象方法。

你是c/c++或是vb转过来的吗?在java中过多考虑引用(指针)和值之间的关系是步入歧途,这正是java的设计者极力避免你考虑的问题。

你需要明白的是:

1、java中所有方法的参数的传递都是“值传递”;

2、java中所有对象类型的变量的“值”,本质上说,包含了java堆中的实际对象的地址,你可以大体认为java的变量对应了c/c++中的指针(其实这里面有更复杂的机制)。事实上,java并不像c/c++一样明确的区分“值语义”与“引用语义”,java栈中也不会存放任何对象的实体(这点与c/c++不同,c/c++栈中可以存放对象实体),所有的java对象都是在堆中。

概念上的区别在于,我这里提到的“变量”是指java栈中的内容,对应你说的“引用”;我提到的“对象”是指java堆中的实体,对应你说的“值”。而一般java教材中提到的“值传递”,是指这些“变量”的内容的传递,不是java堆中的对象实体的传递。

你用字符串来做实验,并推广为所有java对象的做法,并不是特别合适。java的string类型有特殊的处理:所有编译期认识的字符串,都会被放到常量池,于是下面的语句:

a

=

"s"

b

=

"s"

a和b并不像其它对象一样有创建的动作,都是直接指向常量池中的"s",所以你可以得到a==b。而下面的语句:

a

=

new

string("s")

b

=

new

string("s")

是分别在java堆中创建了2个对象,此时a!=b。

本质上说,对于基本数据类型(整数、字符等),java的符号==,用于判断二者的值是否相等;对于对象类型,java的符号==,用于判断两个变量是否是“同一个对象”,equals()方法才是用于判断两个对象是否相等。

你希望实现的swap逻辑,在java中通常认为是无法实现的。拿你这个例子来说,swapvalue()中的tmpvalue无论怎么更改,只是改变tmpvalue自己的内容(即不断指向不同的对象),并不会改变value中的内容(始终指向同一个对象)。这也是为什么java最初说自己永远是值传递。你只有改变tmpvalue指向的对象的值(通过调用这个对象的方法或是更改它的属性),使用value访问时,才能看到这些改变。

为了弥补这个缺陷,c#才加入了ref关键字,允许传入变量的引用(如果参考c/c++,c#传递的实际是二级指针,它的内容是栈中的变量的地址)。