文章目录
- 一.字面常量
- 二.数据类型
- 三.变量
- 1.变量类型
- 2.变量转换
- 2.1自动类型转换(隐式)
- 2.2强制类型转换(显式)
- 3.byte和byte的运算
一.字面常量
字面常量分为六种
1.字符串常量:由"“括号括起来的,比如"123456”,“helloworld”,“你好”.
2.整形常量:程序中直接写的数字,比如:100,200.
3.字符常量:由’'单引号括起来的字母、数字、汉字,比如:‘A’ ‘1’ ‘笛’
4.浮点数常量:程序中用到的小数,比如:3.14 0.78
5.布尔常量:布尔常量只有true和fales两种
6.空常量:null
注意:字符串、整型、字符、浮点数、布尔,在Java中都称为数据类型
二.数据类型
在Java中数据类型分为两类:基本数据类型和引用数据类型(四类八种)
1.四类:整型、浮点型、字符型、布尔型
2.八种:
什么是字节?
字节是计算机中表示空间大小的基本单位。
计算机使用二进制表示数据,我们认为8个二进制为一个字节。即:1byte=8bit
三.变量
1.变量类型
Java中对于那些经常改变的量我们称为变量。而数据类型就是用来定义不同种类变量的。
变量的种类包括(短整型变量、整型变量、长整型变量、浮点型变量、字符型变量、布尔型变量)我们在使用时要根据变量的类型来选择不同变量。
2.变量转换
2.1自动类型转换(隐式)
代码在编译时类型不同时会自动的由小范围转换为大范围
int a = 100;
long b = 200;
b = a;//a和b都是整型,a时小范围,b是大范围,将a值赋给b是小范围会自动提升为大范围及将int类型提升为long类型,然后赋值
a = b;//此时大范围赋值给小范围时,会存在数据丢失,编译器会报错
2.2强制类型转换(显式)
代码在编译时如何将大范围的数据类型强行赋值给小范围
int c = 100;
long d = 200L;
c = (int)d;//此时大范围赋值给小范围就需要在大范围前面加上小范围的类型
注意:1.大范围的类型强制转换成小范围时,可能存在精度丢失
2.强制类型转换不一定能成功,互不相干的两个类型不能相互转换
3.byte和byte的运算
明明是两个byte类型的运算,为什么会报错呢?
public static void main(String[]args){
byte a = 10;
byte b = 20;
byte c = (a+b);
System.out.println(c);
}
计算机在运算a+b时,会将a和b两个byte类型提升为int类型来计算,得到的结果也就是int类型,int类型的值再赋给byte就出现了大范围类型赋值小范围的情况,编译器就会报错。
正确的写法:
public class Test{
public static void main(String[]args){
byte a = 10;
byte b = 20;
byte c = (byte)(a+b);
System.out.println(c);
}
计算机的CPU通常都是以4个字节为单位来读取数据的。为了实现硬件上的饭方便比如:byte、short这种低于4个字节的类型会提升到4个字节的类型(int)来处理。