常量即在程序运行期间不变的的量。
字面常量的分类:
1.字符串常量:“内容”,双引号里的内容;
2.整形常量:100,像这样的;
3.浮点数常量:1.23,直接写的浮点数;
4.字符常量:’a‘,由单括号扩起的内容;
5.布尔常量:只有true和false这两种;
6.空常量:null。
这些字面常量都很好理解,其实我们仅通过阅读就可以直接判断出来这是什么。
基本数据类型有四类八种。
数据类型 | 关键词 | 内存占用 |
字节型 | byte | 1字节 |
短整型 | short | 2字节 |
整形 | int | 4字节 |
长整形 | long | 8字节 |
数据类型 | 关键词 | 内存占用 |
单精度浮点数 | float | 4个字节 |
双精度浮点数 | double | 8个字节 |
数据类型 | 关键词 | 内存占用 |
字符型 | char | 1个字节 |
数据类型 | 关键词 | 内存占用 |
布尔型 | boolean | 无明确规定 |
2.1 不管在多少位的系统上,int和long所占的字节数是不变的;
2.2 整形和浮点型都是有符号的;
2.3 整形默认的是int,浮点型默认的是double;
这就引出一个问题,在给float赋值时要注意,直接写是会报错的,要写成 float a=1.23f 或 float a=1.23F,后面要加一个f。
与常量相对,通过数据类型来定义变量。语法格式与c语言相同不过多赘述。
byte -> Byte short -> Short int -> Integer long -> Long
float -> Float double -> Double
char -> character
boolean -> Boolean
分为自动的和强制的。
小范围转到大范围,如把 int 转成 long ,因为int的范围小,就算换成 long 也不会丢失数据,所以可以自动转换。
需要手动完成,例如long a=233,int b=(int)a,这个就是将 long 强制转化成 int 。
要注意,强制类型转换可能会精度丢失,同时两种毫不相干的类型不能转换,如 int 和 boolean。
数据类型小的会被提升成数据类型大的。
例如:
- byte a=12;
- byte b=3;
- byte c=a+b;//错误的
- int c=a+b;//正确的
解释:计算机会先把a和b提升成 int 型再进行计算。
原因:计算机的CPU通常是按照4个字节为单位从内存中读写数据的,为了硬件实现方便,低于4个字节的类型会先被提升,然后参与计算。
当然上述的例子还可以进行强制转换成应该的类型:
byte c=(byte)a+b;
字符串类型属于引用数据类型。
例子:
String str="abc";
- int a=24;
- //方法一
- String str=a+"";
- //方法二
- String str=String.valueOf(a);
方法一应用字符串可相加的性质来进行转化的。
方法二使用的是String.valueOf()方法进行转换的。
- String str="12";
- int a=Integer.parseInt(str);