准备写一写连续的博客来记录一下java部分,写这些的触发点是因为在地铁上听到一句,总以为学到了很多,却不去总结,时间久了便已忘记,感觉被戳中了,于是便萌生了这些撸博客的想法,如果有小伙伴看到我这些系列博客,感觉有些不妥的内容,欢迎指正,我先虚心请教了。
在写blog前,我们先瞎扯会,我们都知道java之所以这么强大就是它的跨平台(今天所说的平台是操作系统)性,之所以能跨平台都是因为jvm(java virtual machine),因为jvm运行在操作系统之上,将java代码编译的class文件,通过jvm解释成做成系统能看懂的语言,所以java才一直这么牛X,好了,装X到此,我们今天总结的内容并不是内部原理,类加载器等等,我们要说的是基本数据类型。
Java的基本数据类类型有8个,我们可以这么来分类:
整型:
byte 1个字节 8bit(比特位) 取值范围 到 (在计算机里面使用的是二进制,最高位表示符号位)
short 2个字节 16bit 取值范围 -到
int 4个字节 32bit 取值范围为 到
long ; 8个字节 64bit 取值范围 到
浮点型:
float 单精度 4字节 32 bit 最高位表示符号位,后面的9位计算小数点前的整数,其余计算小数点
double 双精度 8字节 64bit 最高位表示符号位,后面的19位计算小数点前的整数,其余计算小数点
字符型:char 2字节 16bit (英文 符号和数字占1个字节 因为他们用ASCII码 中文占两个字节Unicode编码)
布尔型:boolean 1字节 8bit 1 true 0 false
常量
程序在运行中,不能再次改变的值。
作用:1.固定的值,便于计算,比如数学计算的圆周率;
2.代表特定的含义。比如 android中的按键的键值
什么是常量:1.8种基本数据类型;2.String中的值可视为常量;3.自己创建的空间存储起来不能再次更改的值,final修辞的
变量
程序在程序中可以修改的,变量指的是内存空间或叫容器,里面存储的是一个值或者引用;
变量的申明: 类型 +变量名
命名规则:
1)、名称只能由字母、数字、下划线、$符号组成
2)、不能以数字开头
3)、名称不能使用JAVA中的关键字。
4)、坚决不允许出现中文及拼音命名。
推荐驼峰式命名法,见名知意;
下面撸个int类型的变量申明和赋值的代码,顺便画个内存的图,让大家理解下:
public class Demo {
public static void main(String[] args) {
int x=1;
}
}
我们知道main方法是java程序的入口,这里我定义了一个int 类型的变量x,并赋值为1,那我们看看内存中干了些什么事情:
我们在声明变量的时候需要注意的两点:float f=3.4F(需要人为告知,常量池中默认的是double 64位) long l=2147483674L; (默认的int类型 32位的常量值大于int类型的取值范围,则需要强制加上L,人为告知是long类型,去常量区创建)。
好了,我们在说说基本数据类型的自动转换和强转.主要是四点:
1.整型的转换,自动转换是有小空间到大空间转换的(如果定义的常量超过数据类型的范围,需要强制转换),如果大转小需要强转;
2.浮点的转换,自动转换是有小精度大精度转换的,如果大转小需要强转。整型和浮点之间的转换的是按精度来的,整型的精度小于浮点型的精度;
3.字符型,由于字符型对应的是每个unicode编码,每个字符对应的是数值,跟整型的short一样都占2个字节16位,转换方式参照以上两种;
4.布尔类型不能与其他类型转换。可以跟着下面的示例代码理解下:
//同种基本数据小类型的转换 小空间到大空间自动转化 大空间到小空间需要强转
byte a=1;
int b=a;
int a1=129;
byte b2=(byte)a1; // 如果定义的一个常量的值大于取值范围需要强转 但是值会改变 有精度损失
float f=1.5f;
double d=f;
//同种基本数据小类型不同的类型的 根据精确度高低转化
int a3=1; //32bit
float f1=a3; //32bit float更精确 所以可以自动转换
long l1=123;
float f2=l1;//float更精确 所以可以自动转换
int a4=(int)f2; //float 精度更高 需要强转 会砍掉小数点后面的数据
//char 类型的转换 2个字节 16位 char类型存在计算机的是二进制,有数字与之对应,所以char和整型可相互转化;
char c='a';
int a5=c;
byte bs=97;
char ch=(char)bs; //会有精度损失
好了,今天总结的内容就到此了,主要是整理了一些基本数据类型的范围、常变量的概念、数据类型的转换规则。本文如果不正之处。欢迎大家批评指正。