Java的数据类型分为两种,一种叫基本数据类型,一种叫引用数据类型
基本数据类型
基本数据类型有八种,接下来简单介绍一下(依次按照它在Java中存储的大小排列)
数值型
数值型又分为整数和小数,整数有
byte,short,int,long
1字节 = 8 bit(比特)
通过其占用的字节数量我们可以算出某某类型的最大存储空间
据我所知byte应该算是Java中基本数据类型里占有字节数最少的吧,byte占1字节,字如其名
short占用2字节,也叫short int,但一般会省略int
int 占用4字节,long占用8字节,当然以上的情况基本上是基于64位系统来说的
因为现在大部分电脑是64位系统的,32位就该另当别论了
public class Main {
public static void main(String[] args) {
byte x = 127;
short z = 123;
int y = 127;
long n = 123;
}
}
字符型
char
char字符类型,占用两字节
里面一般单独的存放一个字符
public class Main {
public static void main(String[] args) {
char x = 'a';
System.out.println(x);
char y = "a"; // 这是一种错误的写法,这涉及到了引用类型中的类String
char z = 'sad'; // 这也是一种错误的写法,多个字符
char n = '\n'; // 这也是多个字符,为什么它就行呢?
/*
这涉及到了转义字符,像上面的\n就表示了换行,转义字符只算一个字符
*/
}}
小数类型
float,double
float占用4字节,double占用8字节,如果你遇到一个浮点数和整数相加,它会变成浮点数。
public class Main {
public static void main(String[] args) {
float x = 1.0; // 错误写法,float定义需要在后面加上f
float t = 1.0f; // 正确写法
double z = 1.0; //Java中的默认小数类型就是double,所以它无需f
}
}
布尔类型
boolean
boolean有true和false
true翻译一下其实就相当于正确的意思
false翻译一下其实就相当于错误的意思
在代码中其实也就这个意思,它是可以进行一个逻辑判断,比如:
public class Main {
public static void main(String[] args) {
boolean x = false;
boolean y = true;
if (y){
System.out.println("正确的");
} // 这段代码如果翻译成中文来讲,如果正确的,就是输出一个正确的,否则输出一个错误的
else System.out.println("错误的");
}
}
引用数据类型
引用数据类型就大体上归结起来就三种,类,接口,数组
这三种在后面再说,知道就行
自动类型提升
关于自动类型提升,其实就是如果在两个不同类型之间做运算,得到的结果会是字节多的那个,因为字节数量多代表的存储容量大,这样运算得到的结果不容易溢出。
举个例子:
public class Main {
public static void main(String[] args) {
int x = 1;
double y = 23.2;
System.out.println(y+x);
}}
这样算出的结果是24.2,因为double占用的字节是大于int的所有对其做了一个自动类型提升,再例如
public class Main {
public static void main(String[] args) {
char x = 'a';
int a = 1;
System.out.println(x + a);
}}
这样算出的结果是98,因为字符在电脑中存储的是二进制,转换成十进制就是97,然后再和int类型相加一下就是98。
但是需要注意:short,char,byte不能互相进行运算
public class Main {
public static void main(String[] args) {
short x = 1;
char y = 'a';
short z = x + y;
char n = x + y;
}}
上面这段代码,是错误的。
但是如果将里面赋值的类型改成int,就是正确的了,我也不太明白原理,反正就是一个注意吧。