JAVA基础02
前言:
“字不在多日更就行”,哈哈哈,我又来了,本篇虽然篇幅不长,但是算下来觉得写了两个小时,哭死我吧(;´༎ຶД༎ຶ`) ,虽然耗时耗力,但是还是想用这种方式记录我学习Java的成长路线,这个过程可能很漫长…(比较推荐小伙伴们看一下boolean类型空间的占用问题)
To自己:前路漫漫亦灿灿
数据类型
强类型语言(安全性高,但速度比较慢),要求变量的使用严格符合规定,所有的变量都必须先定义后才能使用。也就是说,一旦定义了一个变量,并且指定了某一确定的数据类型,如果没有经过转换,这个变量永远是这个确定的类型。
Java数据类型分为两大类
基本类型(primitive type):
-
数值型:整数类型(byte、short、int、long)、浮点类型(float、double)、字符类型(char)
注:对于long类型,需要在数字后面加L或l;
在默认情况下,小数都被看做double,若使用float型小数,则需要在小数后面添加F或f
数据类型 内存空间(1字节=8位) byte 1字节 short 2字节 int 4字节 long 8字节 float 4字节 double 8字节 char 2字节 -
boolean型
boolean类型其值有两个“True”和“False”,这个类型与Java虚拟机有关,《Java虚拟机规范》书中也有提到,一是JVM没有提供Boolean类型专用的字节码指令,而是使用int相关指令来代替,也就是说Boolean在底层实际会调用int,int占4个字节,所以Boolean也会占用4个字节;二是对Boolean数组的访问与修改,会共用baload和bastore指令,也就是说Boolean数组在底层会用到byte指令byte占1个字节,所以Boolean也会占用1个字节。
综上,在符合JVM规范的虚拟机中,若Boolean单独使用,Boolean占用4个字节;若Boolean以Boolean数组使用的,Boolean占用1个字节。
补充:什么是字节?
位(bit):是计算机内部数据存储的最小单元,11001100是一个8位二进制数
字节(byte):是计算机中数据处理的基本单元,习惯上用B表示
1B(byte,字节)=8bit(位)
字符:是指计算机中使用的字母、数字、字和符号
1bit表示1位
1B=1b
1KB=1024B
1M=1024KB
1G=1024M
1T=1024G
引用类型(reference type): 类,接口,数组
拓展:
整形:进制包括二进制(0b开头)、十进制、八进制(0开头)、十六进制(0x或0X开头)
浮点数:
eg:
float f=0.1f; //0.1
double d=1.0/10; //0.1
System.out.println(f==d);//false
float d1=231313123f;
float d2=d1+1;
System.out.println(d1==d2);//true
分析上面代码可知,是存在矛盾的,因为float特点是有限、离散、存在舍入误差、大约、接近但不等于,所以,最好避免使用浮点数进行比较。
字符:
char c1='a';
char c2='中';
System.out.println(c1);//a
System.out.println((int)c1);//强制转换后结果97
System.out.println(c2);//中
System.out.println((int)c2);//强制转换后结果20013
由此可知,所有字符本质还是数字,char类型涉及到编码问题,Unicode字符集,占2个字节,可识别65535个字符
布尔:
boolean flag=true
if(flag==true){}//语句一
if(flag){}//语句二
这个情况,语句一和语句二是相等的
注:基本类型boolean默认值是false
包装类Boolean默认值是null (关于类以后会详细介绍,此处就说到这里)