Java语言一共提供了8种的基本数据类型(byte,short,int,long,float.double.char,boolean)这些数据类型不是对象,这些基本类型的数据变量在声明之后就会立刻在栈上被分配内存空间,除了8中基本数据类型外,其他数据类型都是引用类型(如类、接口、数组)这些变量在声明时不会被分配内存空间,只是存储了一个内存地址而已。
以上这些基本类型可以分为4种类型:
1)int 长度数据类型:byte(8bit)、short(16bit),int(32bit)、Long(64bit)
2)float长度数据类型:单精度(32 bit float) 、双精度(64bit double)
3)boolean类型变量的取值:true、false
4)char数据类型:unicode字符(16bit)
在Java中数值都是有符号的,不存在无符号的数,他们的取值范围是固定的,不会随环境或者操作系统的变化而变化。
5)java中还提供基本类型void,他对应的封装类:java.lang.void,只是无法对他进行操作而已。
6)封装类和原始类型有许多不同点:首先,原始数据类型在传递参数时都是按值传递。而封装类型都是按引用传递。
其次,当封装类型和原始类型用作某一个类的实例数据时,他们指向的默认值不同,对象引用实例变量的默认值为null,而原始类型实例变量的默认值与他们的类型有关(例如int默认初始化为0)
public class Test{
String s,
int i;
float f;
public static void main(String args[]){
Test t=new Test();
System.out.println(t.s==null);
System.out.println(t.i);
System.out.println(t.f);
}
}
运行的结果为:true 、0 、0.0
默认声明的小数时double类型的,因此要进行类型转换:float f=(float) 1.0, 如果在数据类型为long 的变量直接赋值时,int 类型的值无法表示一个非常大的数字。long l=26735663L;
7) 在java 语言中null值时什么?在内存中null是什么?
null 不是一个合法的Object实例,所以 编译器并没有为其分配内存,他仅仅用于表明改引用目前没有指向任何对象,其实,与C语言类似,null是将引用变量的全部置为0.
8)如何理解复制语句String x=null?
在java语言中,变量被分为两大类型:原始值(primitive)和引用值(referencr).声明为原始类型的变量,其存储的是实际的值,声明为引用类型的变量,存储的是实际对象的地址(指针,引用)。对于赋值语句String x=null ,x中存放的是String应用,此处为null.
4.float f=3.4是否正确?
不正确,数据3.4默认情况下是double类型,及双精度浮点数,将double类型数值赋值给float类型的变量,会造成精度损失,因此需要对其进行强制类型转换,float f=(float)3.4 \ float f=3.4F