一、变量的定义
二、数据类型
三、类型转换
一、变量的定义
①、变量是什么
定义一个变量首先我们需要知道变量是什么,为什么需要变量。
变量的用处就在于存放一个临时的数据。
比如当我们去酒店住房时,需要先选择房间类型,再给你选择哪一间房,
这个时候就会出现四个东西:房间、房间名字、房间类型、入住的客人。变量也可以这样看待:
房间 | 变量 | |
房间名字 | 变量名 | |
房间类型 | 变量类型 | |
入住的客人 | 变量值 |
你来酒店开房间,当房间号给你了就相当于你入住了,哪怕你没来,这个房间也是代表你的了。
也就是说当设置一个变量之后这个空间就存在了,哪怕你不用这个变量,这个空间也存在。
所以以此推出:
变量是一个具有大小的空间,一个数据储存空间的表示;
变量类型就是限制这个空间储存东西的条件;
变量名就是数据储存空间的名字;
变量值就是这个储存空间里面储存的东西;
②、变量名的定义
变量命名规则:
一、字母、下划线、美元符号人民币符号、数字、驼峰、有意义,即这五种规则命名正确,
二、但是不能以数字开头,也不能用空格符号。
三、变量命名最好别用abcd去命名,这样会显得不专业,而且还会混乱,以后和别的程序员进行 交互的时候也会让其他程序员看混乱,所以最好设置其英文名字的变量名。名字多则用驼峰命名法,即第一个字母小写,不同单词的首字母大写。
四、变量名字不能为关键字,例如public、static、void等等
二、数据类型
java语言有八种基本数据类型:
数据类型 | 大小 | 取值范围 |
---|---|---|
byte | 1字节8位 | -128 ~ 127 |
short | 2字节16位 | -32768 ~ 32767 |
int | 4字节32位 | -2147483648 ~ 2147483647 |
long | 8字节64位 | -2的63次方 ~ 2的63次方-1 |
float | 4字节32位浮点数 | 1.4E-45 ~ 3.4E+38 |
double | 8字节64位浮点数 | 4.9E-324 ~ 1.7E+38 |
对于数据类型大小一般只记住前三个byte、short、int就行,因为现在一般超过界限的就是这三个
以八个类型都会有默认值,即不给变量赋值,计算机也会默认有一个值。
整型默认值为0,float型默认值为0.0f,double型默认值为0.0
字符型默认值为\u0000 表示空字符 布尔值型默认值为false
当然除了这八种基本数据类型,还有其他的数据类型:
字符串类型:String
其他Java类型
自定义类型等等
三、类型转换
①数据的计算
数据计算首先要知道浮点型的概念,浮点型也就是小数型,计算机不能表示小数,都是通过分数来计算的,有时候分数会出现除不尽也就是无限小数,单精度float就是在小数第六位的情况下四舍五入,双精度double就是在24位小数四舍五入,这个理解就好。
当一个数值比数据类型的范围更大的时候,数据就会溢出,数据就会乱码
例如 byte 127+1; byte的范围是-128 ~ 127,这时候+1就会溢出,输出的是-128
输出的为什么是-128呢?
前面文章提到,java编译是先要转换成电脑能识别的.class文件才能继续运行,电脑能识别的只有0和1,所以这里我们用二进制来进行说明:
127用二进制表示是(1111 1111)
当127+1时为128,用二进制表示为(1 0000 0000)
这个时候因为byte的范围最大只在(1111 1111)多了一个1
在计算机中1表示为否,零表示为是,所以多一个1输出的值就为负数,数值就会出现乱码。
当然,到了这里为了变量不出现乱码的现象说直接用最大的long或者double数据类型来定义,这样就不会出现溢出的情况了,这样是不会出现溢出的情况,当然不支持这样做。
因为当你定义了一个变量之后,这个程序内储存空间就变大了,运行会变得更慢,尤其是在工作中,计算钱或者货运数据的时候,定义一个更大的变量空间只会让程序变得效率更低,所以是不支持这样做的。。
②、数据的定义
讲到这里,我们就可以进行变量定义了:
变量类型 变量名 = 变量值;
变量定义也有规则:
定义float值的时候结尾必须加上f; float number = 12.5f;
字符型值必须写在单引号中,且只能是一个字符 char num = ‘男’;
字符串必须写在双引号中,且变量类型首字母必须大写 Strnig num = “你好”;
除了变量,还有就是常量,变量是一个可以随意更改的数值,常量一般不会变化,就是储存空间里面的东西已经固定了。
常量的定义可以在前面加上final
例如: final double PI = 3.1415926
关键字 final来标记常量,常量名的书写格式应该全用大写,如果常量名很长的话可以在一个词的中间加上下划线来实现驼峰。
③、类型转换
类型转换规则:
①、小类型与大类型转换时,会自动转换成大类型。
②、大类型接收小类型的时候,会默认转换成大类型。
③、小类型接收大类型的时候,需要强制转换类型。
④、强制类型转换时有可能造成溢出的问题,会舍弃精度。
⑤、强制类型转换会丢失精度,直接截取掉。
小类型转大类型比如:
byte A = 1;
int B= 2;
B = A+B;
这时候a就会自动转换成int类型在计算了
byte b =1;
b = b+1;
这时候运行就会报错,因为1在这是默认int类型,这是大类型往小类型转换。
这个时候可以给1强制类型转换
b=b+ (byte)1;
这时候就不会报错了,在数据前面加一个括号然后输入数据类型就是强制类型转换
byte c= 127;
c = (byte)(c+1);
当偏要强制类型转换时结果就会变成-128,应为超出了byte的最大值,当超出了就会导致溢出,出现乱码的现象。
字符串+任意基本数据类型,都会默认转换为字符串类型(字符串拼接)
例如(“请看结果”+1+1)这时候输出的是:请看结果11,而不是请看结果2;
因为前面是先字符串类型,然后在加int类型,所以把+1+1变成字符串类型。
如果要计算1+1可以写在字符串前面(1+1+“请看结果”),或者写成(“请看结果”+(1+1))
比较字符串也不能简单的使用==要用equals对比
比如需要比较字符串a和字符串b是否相等
a.equals(b);即可