木 头 课 堂
小 木 前 言前面我们在python讲过,python语言为解释型语言,没有具体的数据类型声明,但是赋值给对应的变量是何种类型值,那么该变量就具有对应的类型。但是Java就不同了,声明其变量必须要有对应的数据类型声明。在Java中,数据类型主要分为基本数据类型和引用型数据类型。这章我们来想写说明下。
小 木 正 文——————————————
❶八种基本数据类型
——————————————
整型: byte, short, int, long
浮点型: float, double
字符型:char
Boolean型: boolean
整数类型
整数类型有byte, short, int, long都是有符号(补码)整数(即能表示负数)。
整数字面量(127和-128就是字面量)默认是int类型, 如果不超出声明类型的范围,则可以给小类型直接赋值(不需要强记,在编写程序过程中会逐渐理解)
//byte b = 128;超赋值范围byteb= 127;bytec=-128;
使用整数类型(byte, short, int)要注 意取值范围,(-128~127)之间的整数字面量可以直接赋值给byte类型,Java会 自动处理符号位,比如-8在计算机中用1111 1111 1111 1111 1111 1111 1111 1000表示,如果使用byte b=-8语句,则Java 自动截掉前面的24位。
//byte e = 0x80;编译错误,超赋值范围//128 00000000 00000000 00000000 1 0000000
同理,short类型也是一样的。(极少使用)
short s = 32767;//short s2 = 0x8000;超赋值范围short s2 = 0xffff8000; //可以,最小值
java底层byte, short按照32位计算(注意int类型范围也是32位)
注意:输出byte, short的二进制形式时候,Java会自动类型转换,字符扩展符号位。也就是说,将输出32个1,而不是16个1。
short s3=-1;System.out.println(Integer.toBinaryString(s3)); //32 1
实际上相当于如下代码,效果相同:
short s3=-1;int i= s3;System.out.println(Integer.toBinaryString(i)); //32 1
注意体会。
long类型的字面量需要使用"L","l"后缀,否则编译不通过。注意如下所示,因为整数值的默认字面量是int类型,12123123123明显 超出了int的范围,所以报编译错误,但是如果在后面加了后缀"L",则表示该数是long类型的。
public class BinDemo {
public static void main(String[] args) {
long l= 12123123123; long p= 12123123123L; }}
浮点数类型