Java语言分为两种数据类型:基本数据类型和引用数据类型(Java中不再使用指针这个词,其实引用数据变量就是一个指针)。
- 基本数据类型分为8种4类,分别为(整数类型【byte, short, int, long】,字符类型【char】,浮点类型【float, double】,布尔类型【boolean】)
- 引用数据类型包括类、接口和数组。
其中整数类型的数值有四种表示方式:二进制、八进制、十进制、十六进制;
字符型值有三种表示方式:直接通过单个字符指定字符型值、通过转义字符表表示特殊字符型值、直接使用Unicode值来表示字符型值;
浮点型值有两种表示方式:十进制数形式、科学技术法形式;
布尔型值只能是true或false。
值得注意:字符串不是基本数据类型,它是一个类,也就是说它是一个引用数据类型。
对于字符型数值应该注意以下几点:由于计算机底层保存字符时,实际是保存该字符对应的编号,因此char类型的值也可以作为整型值来使用,它想当一个16位的无符号的整型数。如果把0~65535范围内的一个int型的数赋值给char类型变量,系统会自动把这个int整数当做char类型来处理。
把任何基本数据类型的值与字符串类型的值进行连接运算时,基本类型的值将自动类型转换为字符串类型。
值得注意:只有浮点数才可以用科学技术法形式表示。
类型转换分为强制类型转换和自动类型转换。图一的左边向右边转换为自动类型转换,右边向左边转换为强制类型转换。
Java所有的数值型变量都可以相互转换。
- 整数默认类型是一个int型。
- 浮点类型默认为double类型。
- 可以直接将一个较小的整数值(在byte或short类型的表数范围内)直接赋值给一个byte或short变量。
- byte类型不能自动转换为char。
- 整数不能直接赋值给字符串。
- 将一个浮点型强制转换为整型时,Java会直接截断浮点的小数部分。
- 将int类型强制转换为byte时,将截断前面的24位。
- String类型的直接量不能赋值给其他类型的变量,null类型的直接量可以直接赋值给任何引用类型的变量,包含String类型。boolean类型的直接量只能赋值给boolean类型的变量,不能赋值给其他任何类型的变量。
- 通常情况下,字符串不能直接转换为基本类型,但是通过基本类型对应的包装类则可以实现把字符串转换成基本类型。
基本类型与基本类型的包装类的区别:
int 是基本类型,直接存数值
Integer是类,产生对象时用一个引用指向这个对象
Java把内存划分成两种:一种是栈内存,另一种是堆内存
在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配
而实际的对象是在存储堆内存中
即
int i = 5;//直接在栈中分配空间
Integer i = new Integr(5);//对象是在堆内存中,而i(引用变量)是在栈内存中
在堆中分配的内存,由java虚拟机的自动垃圾回收器来管理.
因为在堆中分配空间所需的时间远大于从栈中分配存储空间,所以JAVA速度比C 慢
当需要往ArrayList,HashMap中放东西时,像int,double这种基本类型是放不进去的,因为容器都是装object的,这是就需要这些基本类型的包装类了。Java中每种基本类型都有相应的包装类。
Integer是类,产生对象时用一个引用指向这个对象
Java把内存划分成两种:一种是栈内存,另一种是堆内存
在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配
而实际的对象是在存储堆内存中
即
int i = 5;//直接在栈中分配空间
Integer i = new Integr(5);//对象是在堆内存中,而i(引用变量)是在栈内存中
在堆中分配的内存,由java虚拟机的自动垃圾回收器来管理.
因为在堆中分配空间所需的时间远大于从栈中分配存储空间,所以JAVA速度比C 慢
当需要往ArrayList,HashMap中放东西时,像int,double这种基本类型是放不进去的,因为容器都是装object的,这是就需要这些基本类型的包装类了。Java中每种基本类型都有相应的包装类。