java有A,B两个类,A类中有一个变量x,这个变量值在A类中改变了值,如何在B类中取得这

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java有A,B两个类,A类中有一个变量x,这个变量值在A类中改变了值,如何在B类中取得这相关的知识,希望对你有一定的参考价值。

个改变了的值

看了下面楼主的提问,我明白楼主什么意思了:
可以通过static关键字修饰成员变量,static表示的意思是该成员变量为类所拥有,并不是某一具体对象所拥有,通过该类实例化的所有对象共享static修饰的成员变量,static修饰的成员变量在内存中占有一块固定的内存,所以,你可以在A中修改staitc修饰的成员变量,在B中可以看到修改的结果。如果成员变量不定义为static,那么每当你new一次,相当于给该成员变量分配一次内存,所以你在A中修改的值,在B中是无法看到修改效果的,因为你在B中也重新new了一次对象,该成员变量和A中修改的成员变量在内存中指向的并不是同一个块区域,他们分别是自己所拥有的成员变量。自然也就出现你问的问题了。
参考技术A 1. 在A类中声明这个变量x是static静态变量,可以直接在B中取到(A.x)。
2. 在B类中,声明一个A类型的属性(B.A),并把A的一个实例赋值给B的这个属性。改变A实例的值(a.x = 10),可以在B中取到(b.a.x)追问

我是用你第一种方法做的 但是取到没变前的值
第二种看不懂

追答

把你代码给出来,第一种方法可以取到值的

追问

我是串口接到数据,把这个数据传到另一类 B
A class:
static String receivedStr = "";
receivedStr = receivedStr + new String(readBuffer);//这里我已经得到数据了
取:
B class:
String receivedStr=JFrame.receivedStr;
这里传过来就是""

追答

1. 确定 readBuffer 有值
2. 确定 B取值的操作在A赋值操作之后

参考技术B 如果你确定 类变量, 也就是static的,只要B类可以访问A类,就可以直接取到这个变量

比如 class A
public static int a = 0;



class B
//在这里面的任意地方均可以通过 A.a来访问这个值 , 而不管a这个值 是如何改变的

本回答被提问者和网友采纳
参考技术C 在B类的方法中写:
A a = new A();
System.out.print("这就是调用取值的问题,变化后的值:"+a.x);
如果觉得我理解错误,请再详细描述一下追问

说清楚这个x是怎么定义的,用static 还是public 我是用static 但是取出来的值是没变化之前的值

追答

static定义的值是不可改变的,如果你吧static去掉那么你取的值就会变化啦

追问

不是static定义的 就不能在B中取了 这是为什么

参考技术D N多种方法,b持有a的实例是一种,还有就是静态变量,还可以在a中将值与b对象进行捆绑,也就是将b对象实例传入到a中,然后进行设置,反射也行,静态加载还行,你自己考虑一下吧。追问

具体说一种哇 这样看不懂

Static字段

1)static方法:

在一个类中有个方法A,其他方法(比如B)想要调用A,那么就必须把A定义为static method

2)static变量:

如果想静态方法想要使用一个方法体外的成员变量(属于类的),那么这个成员变量就必须是静态变量!

Java中,static是不允许用来修饰局部变量

http://www.debugease.com/j2se/178932.html

3)static代码块

优化程序性能,类中可以有多个static块.每一次类被JVM加载到内存中的时候,会优先地加载静态代码块.

只需要进行一次的初始化操作都放在static代码块中进行

4)   static修饰内部类(inner class)

想要修饰一个类,这个要被修饰的类就必须是另外一个类的外部类.

java中,一个类是可以允许另外一个内部类在类中定义的,按规定,这种内部类才能被static修饰.

如果,外部类也用static来修饰的话,那么将毫无意义,因为类若是被使用,那么迟早是要被加载一次的,用static修饰它就是一种对资源的浪费.所以,java语法也不允许.

 

以上是关于java有A,B两个类,A类中有一个变量x,这个变量值在A类中改变了值,如何在B类中取得这的主要内容,如果未能解决你的问题,请参考以下文章

java一个类如何获得另一个类中的某个值

JAVA循环依赖

java 在调试的时候如何查看类中的静态变量值

java怎么实现在一个类中放置监听器,而在另一个类中事件呢?

Python3基础 一个类中有两个属性A,B。 只能对其中的一个进行赋值

Java中final有啥用