java是一种强类型语言,每一个变量都会声明一种类型。
变量同样可以类比数学中函数的自变量。在数学函数中自变量可以是某个值,整数或小数,而在java中,一旦变量定义好,那么变量的类型就是确定的。
java有8种基本类型。其中有4种整型、2种浮点数类型、1种字符类型和1种布尔类型。
整型
整型有四种,分别是 byte
、short
、int
、long
。这四种类型在计算机中进行存储的时候所在的空间是不一样的,能表示数据的范围也不同,见下表所示。
数据类型 | 默认值 | 存储空间 | 表示范围 |
---|---|---|---|
byte | 0 | 1 byte | -128 ~ 127 |
short | 0 | 2 byte | -32768 ~ 32767 |
int | 0 | 4 byte | -2147483648 ~ 2147483647 (21亿多) |
long | 0L | 8 byte | -9223372036854775808 ~ 9223372036854775807 |
我们知道,计算机智能识别二进制数据,也就是0和1。二进制的一位为1个bit,8个bit为1个字节。
拿byte
类型来说,它由8个bit组成,最高位是符号位,那么01111111
表示正127,最高位0表示正数。
负数在计算机中是以补码的形式存储的,补码11110011
对应的原码为10001101
,也就是十进制的-13。
short、int、long的存储方式是一样的。
整型变量的定义如下面的代码清单所示。
由 "/*" 开始,以"*/"结尾的内容属于块注释,以双斜杠开头的为行注释,注释的作用是用来表明代码的含义,它对代码的编译和运行不会起到任何作用。
/**
* @author: qiaoyihan
* @date: 2021/7/18
*/
public class IntegerDemo {
public static void main(String[] args) {
// byte类型
byte aByte = 1;
short b = 2;
int c = 3368;
// long型的结尾要加L
long d = 67890L;
System.out.println(aByte);
System.out.println(b);
System.out.println(c);
System.out.println(d);
int f = -2147483648;
// 加下划线更容易识别
int gg = 2_000_000_000;
// 十六进制
int h = 0xff0000;
// 二进制
int bin = 0b1000000000;
}
}
复制代码
long类型的整数,结尾要加"l" 或 "L",一般来说,建议加"L",因为小"l"容易和数字1混淆。
从java 7开始,数字可以加下划线,增加可读性,java编译器在编译的时候会去掉下划线。以"0x"和"0b"开头的数字分别表示十六进制和二进制数据。
"="号的作用是赋值,把等号右边的值赋给等号左边的变量。
浮点型
浮点类型就是有小数部分的数字。
数据类型 | 默认值 | 存储空间 | 表示范围 |
---|---|---|---|
float | 0.0f | 4 byte | 大约+/-3.40282347E+38 (有效位数为6-7位) |
double | 0.0d | 8 byte | 大约+/-1.79769313486231570E+308 (有效位数为15位) |
double能表示的精度是float类型的两倍,所以double类型又被称为双精度浮点数。一般来说我们都是用double类型。
默认一个浮点数,如3.14,是double类型,当然我们也可以在数字后加"D"或"d",如果在数字后面加"F"或"f"表示float类型。
public class FloatDemo {
public static void main(String[] args) {
double d = 3.14d;
double d2 = 4.23324343;
float f = -7.69f;
}
}
复制代码
字符类型
字符类型占两个字节。
数据类型 | 默认值 | 存储空间 | 表示范围 |
---|---|---|---|
char | '\u0000' | 2 byte |
Java的char类型除了可表示标准的ASCII外,还可以表示一个Unicode字符。
ascii码能表示128个字符,包括控制字符,详细见ascii码对照表。
char类型是用单引号括起来,区别于表示字符串的双引号。
public class CharDemo {
public static void main(String[] args) {
char en = 'a';
// 带斜杠,表示转义字符,制表符
char t = '\t';
// 可以表示一个中文字符
char ch = '好';
System.out.println(ch);
}
}
复制代码
布尔类型
布尔类型占一个字节,只有两个值,真和假。
数据类型 | 默认值 | 存储空间 | 表示范围 |
---|---|---|---|
boolean | false | 1 bit | true / false |
public class BoolDemo {
public static void main(String[] args) {
boolean t = true;
boolean f = false;
System.out.println(t == f);
}
}
复制代码
总结
- java有8种基本数据类型,分别是
byte
,short
,int
,long
,float
,double
,char
,boolean
; - 可以把数值赋值给对应数据类型的变量;
Question
你知道补码10000000为什么能表示-128吗?