Java 将静态对象指定给非静态对象时会发生什么?
我想知道当我将静态对象指定给非静态对象时会发生什么? 例如:Java 将静态对象指定给非静态对象时会发生什么?,java,static,Java,Static,我想知道当我将静态对象指定给非静态对象时会发生什么? 例如: public class Test{ public void test(){ BoneCp cp=BoneCpLoad.getBoneCpPool(); } } public class BoneCpLoad{ private static BoneCpPool pool =new BoneCpPool(); public static BoneCp getBoneCpPool(){
public class Test{
public void test(){
BoneCp cp=BoneCpLoad.getBoneCpPool();
}
}
public class BoneCpLoad{
private static BoneCpPool pool =new BoneCpPool();
public static BoneCp getBoneCpPool(){
return pool;
}
}
这并不是将静态对象指定给非静态对象
BoneCp cp = BoneCpLoad.getBoneCpPool();
这条线相当于
BoneCp cp = new BoneCpPool();
这只是一个对象的普通实例化。整个问题基于一个错误的前提 在Java中,没有所谓的
静态对象。所有对象都存在于堆中,它们的生存期由可达性决定
有一个静态变量。但是,当您将引用指定给静态
变量时,不会发生任何特殊情况。变量现在只包含对对象的引用。类似地,当您将静态
变量中的引用指定给任何其他类型的变量时,不会发生任何特殊情况。静态对象实际上不存在
在本例中,static关键字引用getBoneCpPool()方法。这是完全合法的,静态方法返回BonceCp对象的实例
静态修饰符关键字可以应用于方法,并表示不属于类的特定实例,而是属于类本身的方法
静态修改器关键字也可以应用于字段(实际上是对对象的静态引用)。在本例中,表示不属于某个类的特定实例,但在同一类型的所有类实例之间共享的字段。这不是一个真正的问题……您不是getBoneCpPool()
返回一个新对象…newbonecppool
创建了一个对象。。。