package pig;public class Car {
private static Car car;
public static Car getInstance(){
if(car==null){
car=new Car();
}return car;
}
}
package pig;public class Test {
public static void main(String[] args) {
Car car1=Car.getInstance();
Car car2=Car.getInstance();
System.out.println(car1==car2); }}
红色字那部分实在是不理解,car是一个引用类型变量名,为什么要判断car==null呢?
car==new Car()是不是相当于实例化?
return car返回值返回给谁?
明白的麻烦详细点讲,或者语音也可以,qq号149040935
private static Car car;
public static Car getInstance(){
if(car==null){
car=new Car();
}return car;
}
}
package pig;public class Test {
public static void main(String[] args) {
Car car1=Car.getInstance();
Car car2=Car.getInstance();
System.out.println(car1==car2); }}
红色字那部分实在是不理解,car是一个引用类型变量名,为什么要判断car==null呢?
car==new Car()是不是相当于实例化?
return car返回值返回给谁?
明白的麻烦详细点讲,或者语音也可以,qq号149040935
解决方案 »
- 类型信息的问题
- 百位乘法计算器
- java数据结构哪本比较好,请给些建议
- 我给你的分虽然很少,但是我希望大家还是能进来看一看
- 关于Socket建立连接时,程序等待没有返回结果的问题
- 我在命令行下的jdk设置运行程序时,编译没问题,执行是老是出现NoClassDefFoundError哪个高手能告诉我怎么回师 ?我在命令行下的jdk设置
- udp数据包接收问题?
- java的例外处理机制问题
- 请教jar的用法
- 问个jframe的问题,请问如何在后台弹出jframe,也就是一创建就是在其他窗口的后面?
- 在JAVA中有没有改变显示器分辨率的技术,请高手们指教,能不能给发点代码?
- 悬赏100分,咨询个jframe 的icon问题
楼主【QAI0803】截止到2008-07-28 17:46:07的历史汇总数据(不包括此帖):
发帖的总数量:1 发帖的总分数:20 每贴平均分数:20
回帖的总数量:2 得分贴总数量:0 回帖的得分率:0%
结贴的总数量:1 结贴的总分数:20
无满意结贴数:0 无满意结贴分:0
未结的帖子数:0 未结的总分数:0
结贴的百分比:100.00% 结分的百分比:100.00%
无满意结贴率:0.00 % 无满意结分率:0.00 %
敬礼!
引用类型才能和null进行比较判断,看是否指向了对象,如果没指向任何对象,就是null
car==new Car()是不是相当于实例化?
是的.
return car返回值返回给谁?
谁调用这个方法就返回给谁
String s = "Hello world!"; 许多人都做过这样的事情,但是,我们到底声明了什么?回答通常是:一个String,内容是“Hello world!”。这样模糊的回答通常是概念不清的根源。如果要准确的回答,一半的人大概会回答错误。
这个语句声明的是一个指向对象的引用,名为“s”,可以指向类型为String的任何对象,目前指向"Hello world!"这个String类型的对象。这就是真正发生的事情。我们并没有声明一个String对象,我们只是声明了一个只能指向String对象的引用变量。同样的道理static Car car是不是也是一样呢?由于有了static导致car有了固定的地址?所以在实例化时指向了Car(),所以Car car1=Car.getInstance(); Car car2=Car.getInstance();之所以是true是因为car是静态引用变量地址都是一样的而且值也相同所以为true
Car car1=new Car();
Car car2=new Car();
car1.num=10;
那么car2.num也就等于10了,就是Car.num=car1.num=car2.num。那private static Car car; 就依此类推了。楼主可以直接baidu搜static类变量。
package pig; public class Car {
private static Car car;
public static Car getInstance(){ car=new Car();
return car;
} }
package pig; public class Test {
public static void main(String[] args) {
Car car1=Car.getInstance();
Car car2=Car.getInstance();
System.out.println(car1==car2); } }
Car car1=Car.getInstance();
如果没有声明为static的,就得先创建一个Car的实例,如Car car=new Car();
再调用其getInstance()方法,如car.getInstance();
而用null 判断的时候,只要对象存在了我就不新创建了,这样每次调用得到的是同一个对象。
Singletion模式。
作用是保证在java应用程序中,一个类class只有一个实例存在。
这个题就是这样了。
一般这中模式有几种形式,在这和大家分享下。
1.定义一个类,构造函数为private的,然后定义一个private ,static修饰的类变量。在类初始化时实例化,通过一个getIntance()方法获得对它的引用。
2.把getiIntance()方法用synchronized修饰,然后判断是否为null,然后每次都new一个对象出来。提高效率。
不过,一般认为第一种比较安全。
分享了。
高手继续往下说。
code=Java]package pig;
public class Car {
static int num=0;
public static int getnum(){
num++;
return num;
}}
package pig;
public class Test {
public static void main(String[] args) {
int num1=Car.getnum();
int num2=Car.getnum();
System.out.println(num1);//num1=1;
System.out.println(num2);//num2=2;
}}[[/code]
17楼正解