1、数据类型的基本分类
8大基础数据类型:boolean、char、byte、short、int、long、float、double
3大引用数据类型:类、接口、数组
2、数据类型在java内存中的分配
①基础数据类型在被创建时,直接在栈上存储了具体信息;
②引用数据型在被创建时,首先要在栈上给其引用分配一块内存,而对象的具体信息都存储在堆内存上,然后由栈上面的引用指向堆中对象的地址。
使用基础数据类型效率会更高。
3、JAVA中不同数据类型作为参数传入函数并在函数中被修改时,主函数中的数据变化
①java的基本数据类型作为参数传入函数中并在函数中被修改时,如果没有返回值则其在主函数中不会被修改。
这是因为在函数中修改时是重新创建了值进行改动。
注:值传递是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。
②数组是引用数据类型,在参数传递时相当于给的是地址值,所以在函数中修改时会根据地址值指向存储。
因此在函数中修改传入的数组,在主函数中该数组的值就会发生对应的变化。
注:引用传递是指在调用函数时将实际参数的地址直接传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。
③对于基本数据类型的包装类,在修改值时经历了拆箱和装箱,而装箱的源码中可以看出新建了一个对象,方法中改变引用对象的地址后是不会改变原有对象所指向的地址的。
public static Integer valueOf(String s, int radix) throws NumberFormatException {
return Integer.valueOf(parseInt(s,radix));
} public static Integer valueOf(int i) {
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
因此在函数中修改传入的包装类,在主函数中该包装类的值不会发生对应的变化。