Java基本数据类型
注:本文中所有代码都应在主函数中执行
1.整型变量:
整型变量:各整数类型有固定的表数范围和字段长度,不受具体操作系统的影响
类型 | 占用存储空间 | 取值范围 | 二进制位数 |
---|---|---|---|
byte | 1字节 | -128~127 | 8 |
short | 2字节 | -32768 ~ 32767 | 16 |
int | 4字节 | -2147483648~2147483647 | 32 |
long | 8字节 | -2的63次方 ~ 2的63次方-1 | 64 |
1个byte字节=8bit(第一个比特位表符号)
Java语言默认整形常量为 int,声明long类型变量时后面加上"L";
进制 | 表示 | 运算 | 标记 |
---|---|---|---|
二进制 | 0,1 | 满2进1 | 以0b或0B开头 |
十进制 | 0-9 | 满10进1 | 以D开头 |
八进制 | 0-7 | 满8进1 | 以数字0开头 |
十六进制 | 0-9,A-F | 满16进1 | 以0x或0X开头 |
注:十六进制中的A-F不区分大小写
//整型变量的定义
int a;//声明
a = 10;//赋值
/**
* 声明之后必须赋值
*/
int b,c,d;
b = 2;
c = 4;
d = 6;
/*
* 可以分开声明赋值,也可以直接声明赋值
*/
/*
* int b = 2,c = 4,d = 6;
*/
/*
* int e = 43.4;
* int默认为整型,而43.3double型,则无法赋值
*/
System.out.print(a);
2、浮点类型
类型 | 占用空间内存 | 二进制位数 |
---|---|---|
float | 4字节 | 32 |
double | 8字节 | 64 |
Java的浮点型默认为double,如果要声明 float 型的变量,则要在数据后面加 f 或 F
//浮点型变量的定义
//浮点型默认为double
double a = 9.8;
//float可以直接写为整数,如果是小数,就要加f
float b = 9.5f;
/*
* 虽然double和float只差了0.3,但是由于计算机是将数字转换为二进制计算的,算出来的 结果不等于0.3
*/
System.out.print(a-b);
3、逻辑型变量boolean(布尔)
boolean类型适于逻辑运算,数据只允许取值true或false
boolean b1 = true;
boolean b2 = false;
不可以用0或非零的数字代替 false 和 true
4、字符型(char)
char型用来表示通常意义上的"字符",char占2个字节,用单括号引起来的单个字符
char a = ‘瑜’;(不论是英文还是中文都只能有一个)
char a = 'a';
char b = '你';//底层值为20321
System.out.println(a);
System.out.println(b);
System.out.println(a+1);
System.out.println(b+1);//20322
运算:char类型是可以运算的因为char在字符编码表中有对应的数值。在JAVA中,对char类型字符运行时,直接当做对应编码表的整数来对待。
编码问题:计算机表示字符:
计算机底层都是二进制,计算机如何表示字符
编码表:人为定义的
字符在不同的编码表中有一个对应的十进制数,最终在计算机上使用数存储
最早的ASCII码只能表示英文,然后不同的国家定义了自己国家的编码,后来诞生了Unicode编码,包括了全球所有字符
utf-8是一种长度可变的编码表
5、基本数据类型转换
8种基本数据类型,除了布尔型(boolean),其余都可转换为其他类型
分类:
1.默认转换:数据类型按容量大小排序为:byte,short,char->int->long->float->double
byte,short,char之间不会互相转换,他们三者在计算时首先会转换为int类型
int a = 10;
long b = a;
float f = b;
float f1 = a+b;
System.out.println(f);
System.out.println(f1);
运行结果 :
2.强制转换:容量大的数据类型转换为容量小的数据类型时,要加上强制转换符,但可能造成精度降低或溢出,有多种类型的数据混合运算时,系统首先自动的将所有数据转换成容量最大的那一种数据类型,然后再进行计算。
int y = (int)x;
int x = 10;
byte y = (byte)x;//int转换为byte时存在移位的情况
System.out.println(y);
float f = 6.2f;
long c = (long)f;
System.out.println(c);
运行结果 :