static修饰变量只占一份内存空间与泛型
来源:互联网 发布:烟台海颐软件 编辑:程序博客网 时间:2024/06/05 14:34
Chapter 11,持有对象
在本章的第二个代码中【如下】,
package holding;
import java.util.ArrayList;
class Apples {
private static int number;// 表示苹果数量
private final long id= number++;
public long id(){
return id;
}
}
class Oranges {
}
public class CopyOfApplesAndOrangesWithoutGenerics {
public static void main(String [] args){
ArrayList<Apples> apples = new ArrayList<Apples>();
for (int i = 0; i<4; i++)
apples.add(new Apples());
//apples.add(new Oranges());
//illegal
for(int i=0;i<apples.size();i++){
System.out.println((apples.get(i)).id());
}
for(Apples a:apples){
System.out.println(a.id());
}
}
}
我们可以看到程序的执行效果图【如下】:
如果我没改掉代码public static int number;---->public int number;得到的城西执行结果如下:
这个时候我们看到输出全部成0,这是为什么呢?【知识点1】原因在于,在程序中,被static 修饰的成员变量只有一份,占一个固定空间,所以虽然在后面申请了三个Apples对象,但是仍然只有一个number ,所以对其做number++赋值给id,然后便可以成功返回啦。
【知识点2】通过使用泛型,就可以在编译期防止将错误类型的对象放到容器中。比如此例中的ArrayList<Apples> apples = new ArrayList<Apples>();
1 0
- static修饰变量只占一份内存空间与泛型
- static 修饰函数与变量
- Remember:static修饰只可修饰类的成员变量
- final 与static final修饰变量区别
- static 修饰成员变量与成员函数
- final 与static final修饰变量区别
- static修饰的变量与函数说明
- final 与static final修饰变量区别
- C语言extern与static修饰变量
- 结构体变量占内存空间大小
- 各类型占内存空间大小
- C# static修饰变量
- Static修饰成员变量
- static修饰变量
- Java static修饰变量
- static修饰局部变量
- static修饰符:static变量,static函数
- static extern修饰变量与函数的理解
- A - 还是畅通工程
- Nginx-Rtmp-Module命令
- npm的一些特殊使用
- js中几种实用的跨域方法原理详解
- P - Ant Trip
- static修饰变量只占一份内存空间与泛型
- git linux上自动化打包发布脚本
- 4. Median of Two Sorted Arrays
- ld: library not found for -l+第三方库名称报错分析
- 生活健康的9个标准
- H5:前端开发性能优化
- 勿忘初心,继续coding
- 碰撞的方向判定,和坐标转换
- 自己动手写一个属于自己的ARM9的bootloader