Java Primitive/Container Type
Java 全局变量不一定初始化(即只声明就可以了) 但是局部变量一定要初始化
Java的基础类型变量不需要手动初始化。对于固定长度的容器(比如说Array)来说: 引用类型变量要么初始化其大小,要么初始化其内部元素。而不固定长度的容器(比如说ArrayList):(?)
关于int和Integer的区别以及其初始化:
- int和Integer是两种不同的数据类型
- int是基本类型, 但是Integer是对象,是一个引用类型,是一个int的封装类,是int的拓展,定义了很多int的操作方法(就像Array和Arrays)。
- int在声明时会自动被初始化为0, 而Integer则被初始化为null(所有的引用变量都是这样)
- 手动初始化:int i = 1; Integer i = new Integer(1); Integer i = 1;(也是可以的 因为有自动装箱和拆箱)
- 当需要往容器中放东西的时候 只能直接放入Integer, 因为容器只能装Object。要装基本类型的话只能转换以下。而且你在定义泛型的时候 也不支持int, 即List<Integer> list = new ArrayList<Integer>(); 而不是
List<Integer> list = new ArrayList<int>(); - int与Integer如何互相转换? int n = 1; Integer n1 = new Integer(n);
那么什么是容器呢?
上图中 画点虚线框的是接口, 线虚线框的是抽象类,画实线框的是实体类,画粗线框的是常用的。其他的箭头是继承和实现。
基础数据类型和这些容器类之间还隔着:
- 基础数据类型对应的包装类:Integer, Double, Float, Character, Short.
- Array类
- String类 以及其拓展 StringBuilder, StringBuffer(注意 纯array类和String类的长度都是不能变的 String更甚 甚至元素也不能变,所以如果调用String类的相关方法修改String,其实返回路一个新的String 原String变量不变)
容器类里面盛放的元数据都是对象 都是引用类型。
关于String类多说几句:
由于使用非常频繁 因此java的设计者决定在面向对象的语言中保留基本类型 而不是把所有东西都变成对象,从而提高语言性能。因为基本类型储存在调用堆栈种,占用空间少。而对象储存在程序堆中,需要更多的储存空间。处于性能原因,String被设计成了介于基本类型和引用类之间。其表现在可以使用’+‘操作符,而且String有两种初始化方式:String s1 = “Hello”; (基本类型的初始化方式)String s1 = new String(“Hello”);(引用类型的构造器初始化方式)//但是好像Integer其他的也可以的吧。

浙公网安备 33010602011771号