1.java数据类型分为两大类 基本数据类型,引用类型
2.基本数据类型有8中 数值型[byte,short,int,long,float,double]char,boolean
3.引用类型[类,接口,数组]
类型 | 分类 | 所占字节 | 取值范围 |
---|---|---|---|
Boolean | 布尔型 | 1bit | false、 true |
char | 字符型 | 2字节 | -32768~32767 |
byte | 整形 | 1字节 | -128~127 |
short | 整形 | 2字节 | -32768~32767 |
int | 整形 | 4字节 | -2147483648~2147483647 |
long | 整形 | 8字节 | (-2的63次方~2的63次方-1) |
float(单精度) | 浮点型 | 4字节 | -3.4E+38 ~ 3.4E+38 |
double(双精度) | 浮点型 | 8字节 |
整形类型使用细节
1.Java各整数类型有固定的范围和字段长度,不受操作系统的影响,保证的Java程序的可移植性
2.Java整数类型默认时int型 ,如果时long型要在后面添加'l'或者L
3.Java程序中声明变量为int型,除非要表示的数字过大才使用long
4.bit是计算机最小的存储单位
package com.variable.dataType;
public class intDetail {
public static void main(String[] args) {
//1.Java各整数类型有固定的范围和字段长度,不受操作系统的影响,保证的Java程序的可移植性
int a = 10;//int 类型占4个字节
boolean loop = false;//boolean 类型占1个字节
//注意如果小数后面不加f,那么在Java中默认是double类型
//float v=1.2;//因此在将一个 小数赋给一个float类型变量的时候会报错,因为没有在数组后加f默认是double类型,因为float是4个字节而double是8个字节
float f = 1.0f;//float 类型占4个字节
double sum = 3.14;//double 类型占8个字节
char c = 'a';//char 类型占2个字节
short b = 2;//short 类型占2个字节
long s = 6;//long 类型占8个字节
byte bit = 1;//byte 类型占1个字节
//2.Java整数类型默认时int型 ,如果时long型要在后面添加'l'或者L
long l = 1;//此时没有在后面加上l或者L 因为默认是int,int 占四个字节,而long占8个字节,因此int可以存放在long的类型中,所以不会报错,加上l或者是L才表示是long类型
//3.Java程序中声明变量为int型,除非要表示的数字过大才使用long
//int aa = 1231231231233123;//这个数字 就太大了,因此会报错,超过了int类型的返回
long bb = 123123123123123l;//在最后加上了l说明是long类型可以存放下更大的数字
//4.bit是计算机最小的存储单位
//byte:byte数据类型是8位带符号的二进制补码整数。最小值为-128,最大值为127(含)。的byte数据类型可以是在大型保存存储器有用 阵列,
}
}
字符类型使用细节
1.字符常量是用单引号括起来的单个字符 (可以是一个中文也可以是一个数字或者字母)
2.Java允许使用转义字符''来将其后的字符转变为特殊字符常量 比如char n3= '\n' 这表示一个字符而并非两个
3.在Java char的本质是一个整数,在输出时是Unicode码对应的字符
4.可以直接给char赋一个整数,输出是会按照Unicode字符输出
5.char类型是可以进行运算的,相当于一个整数,都有对应的Unicode码
package com.variable.dataType;
public class charDetail {
public static void main(String[] args) {
//1.字符常量是用单引号括起来的单个字符 (可以是一个中文也可以是一个数字或者字母)
char c1 = 97;
System.out.println(c1); // a
char c2 = 'a'; //输出'a' 对应的 数字
System.out.println((int) c2);
char c3 = '雨';
System.out.println((int) c3);//38632
char c4 = 38632;
System.out.println(c4);//雨
//2.Java允许使用转义字符'\'来将其后的字符转变为特殊字符常量 比如char n3= '\n' 这表示一个字符而并非两个
char n1 = '\n';//这表示一个字符
char n2 = '\t';//这表示一个字符
//3.在Java char的本质是一个整数,在输出时是Unicode码对应的字符
System.out.println('a' + 10);//107
//4.可以直接给char赋一个整数,输出是会按照Unicode字符输出
char c5 = 122;
System.out.println(c5);
//5.char类型是可以进行运算的,相当于一个整数,都有对应的Unicode码
System.out.println(c5 + c3);//会把c5对应的Unicode码和c3对象的Unicode码加起来并输出
}
}
浮点类型使用细节
1.浮点类型也有固定的字段长度和范围 不受操作系统运行单精度4个字节双精度8个字节
2.Java的浮点类型默认是double类型的声明float类型常量要在后面加f 或者 F
3.一般情况下使用双精度因为比单精度更准确
4.不要使用2.7和8.1/3进行比较,很危险8.1/3在计算机看来是一个近似于2.7的数
package com.variable.dataType;
public class floatDetail {
public static void main(String[] args) {
//1.浮点类型也有固定的字段长度和范围 不受操作系统运行单精度4个字节双精度8个字节
//2.Java的浮点类型默认是double类型的声明float类型常量要在后面加f 或者 F
//float num1 = 1.1; //错误,默认是double却赋值给float
float num2 = 1.1F; //对的
double num3 = 1.1; //对
double num4 = 1.1f; //对 把float赋给double是可以的
//3.一般情况下使用双精度因为比单精度更准确
double num9 = 2.1234567851;
float num10 = 2.1234567851F;
System.out.println(num9);
System.out.println(num10);
//4.不要使用2.7和8.1/3进行比较,很危险8.1/3在计算机看来是一个近似于2.7的数
//浮点数使用陷阱: 2.7 和 8.1 / 3 比较
//看看一段代码
double num11 = 2.7;
double num12 = 2.7; //8.1 / 3; //2.7
System.out.println(num11);//2.7
System.out.println(num12);//接近2.7的一个小数,而不是2.7
//得到一个重要的使用点: 当我们对运算结果是小数的进行相等判断是,要小心
//应该是以两个数的差值的绝对值,在某个精度范围类判断
if (num11 == num12) {
System.out.println("num11 == num12 相等");
}
//正确的写法 , ctrl + / 注释快捷键, 再次输入就取消注释
if (Math.abs(num11 - num12) < 0.000000001) {
System.out.println("差值非常小,到我的规定精度,认为相等...");
}
System.out.println(Math.abs(num11 - num12));
//细节:如果是直接查询得的的小数或者直接赋值,是可以判断相等
}
}
布尔类型细节
Java里不可以用0或者非0的整数代替false 和true 这点和c语言不同
package com.variable.dataType;
public class BooleanDetail {
public static void main(String[] args) {
//Java里不可以用0或者非0的整数代替false 和true 这点和c语言不同
//比如
//在c语言中就可以,但是Java中不行
// while (1){
//
// }
//这样就可以
while (true) {
int i = 0;
System.out.println("hello" + (++i));
if (i == 10) {
break;
}
}
}
}