Day0之数据类型
代码解释
/**
* @author bood
* @since 2022/06/19 13:48
*/
public class Demo02 {
public static void main(String[] arg){
//八大基本数据类型
//整数
byte num2 = 20; //一个字节byte(1*8=8位(bit)) +-2的7次方,共2的8次方
short num3 = 30; //两个字节byte(2*8=16位(bit)) +-2的15次方,共2的16次方
int num1=10; //默认数 四个字节(4*8=32个位(bit))+-2的31次方,共2的32次方
long num4 = 30L; //Long 类型要在后面加个L 八个字节() 依此类推
//小数:浮点数
float num5 = 50.1F; //(记得加;) float类型要在数字后面加个F 四个字节
float num6 =(float)50.1; //第二种方法
double num7 = 3.141592653; // 八个字节,默认浮点数
double num8 =3;
System.out.println(num8); //运行结果为3.0
//字符 两个字节,char只能插入一个字符,a,A,1,锅,一定不可以打两个字符,如Aa
char name = '锅';
//字符串
/*注意:1,String没有高亮,不是关键字,是个类;
2,一定是双引号,不能是单引号*/
String namea ="方Jhao";
//布尔值:是/非,占1位(bit) 0 or 1
boolean a = true;
boolean b = false;
boolean c = 5 > 8;
if (c)
System.out.println("对的");
else
System.out.println("错的");
}
}
拓展一
(各类型的相关参数:基本类型,二进制位数,包装类,最大值,最小值)
代码
/**
* @author bood
* @since 2022/06/20 0:50
*/
public class Demo02拓展1 {
public static void main(String[] args) {
// byte
System.out.println("基本类型:byte 二进制位数:" + Byte.SIZE);
System.out.println("包装类:java.lang.Byte");
System.out.println("最小值:Byte.MIN_VALUE=" + Byte.MIN_VALUE);
System.out.println("最大值:Byte.MAX_VALUE=" + Byte.MAX_VALUE);
System.out.println();
// short
System.out.println("基本类型:short 二进制位数:" + Short.SIZE);
System.out.println("包装类:java.lang.Short");
System.out.println("最小值:Short.MIN_VALUE=" + Short.MIN_VALUE);
System.out.println("最大值:Short.MAX_VALUE=" + Short.MAX_VALUE);
System.out.println();
// int
System.out.println("基本类型:int 二进制位数:" + Integer.SIZE);
System.out.println("包装类:java.lang.Integer");
System.out.println("最小值:Integer.MIN_VALUE=" + Integer.MIN_VALUE);
System.out.println("最大值:Integer.MAX_VALUE=" + Integer.MAX_VALUE);
System.out.println();
// long
System.out.println("基本类型:long 二进制位数:" + Long.SIZE);
System.out.println("包装类:java.lang.Long");
System.out.println("最小值:Long.MIN_VALUE=" + Long.MIN_VALUE);
System.out.println("最大值:Long.MAX_VALUE=" + Long.MAX_VALUE);
System.out.println();
// float
System.out.println("基本类型:float 二进制位数:" + Float.SIZE);
System.out.println("包装类:java.lang.Float");
System.out.println("最小值:Float.MIN_VALUE=" + Float.MIN_VALUE);
System.out.println("最大值:Float.MAX_VALUE=" + Float.MAX_VALUE);
System.out.println();
// double
System.out.println("基本类型:double 二进制位数:" + Double.SIZE);
System.out.println("包装类:java.lang.Double");
System.out.println("最小值:Double.MIN_VALUE=" + Double.MIN_VALUE);
System.out.println("最大值:Double.MAX_VALUE=" + Double.MAX_VALUE);
System.out.println();
// char
System.out.println("基本类型:char 二进制位数:" + Character.SIZE);
System.out.println("包装类:java.lang.Character");
// 以数值形式而不是字符形式将Character.MIN_VALUE输出到控制台
System.out.println("最小值:Character.MIN_VALUE="
+ (int) Character.MIN_VALUE);
// 以数值形式而不是字符形式将Character.MAX_VALUE输出到控制台
System.out.println("最大值:Character.MAX_VALUE="
+ (int) Character.MAX_VALUE);
}
}
代码运行结果
Demo02拓展1
基本类型:byte 二进制位数:8
包装类:java.lang.Byte
最小值:Byte.MIN_VALUE=-128
最大值:Byte.MAX_VALUE=127
基本类型:short 二进制位数:16
包装类:java.lang.Short
最小值:Short.MIN_VALUE=-32768
最大值:Short.MAX_VALUE=32767
基本类型:int 二进制位数:32
包装类:java.lang.Integer
最小值:Integer.MIN_VALUE=-2147483648
最大值:Integer.MAX_VALUE=2147483647
基本类型:long 二进制位数:64
包装类:java.lang.Long
最小值:Long.MIN_VALUE=-9223372036854775808
最大值:Long.MAX_VALUE=9223372036854775807
基本类型:float 二进制位数:32
包装类:java.lang.Float
最小值:Float.MIN_VALUE=1.4E-45
最大值:Float.MAX_VALUE=3.4028235E38
基本类型:double 二进制位数:64
包装类:java.lang.Double
最小值:Double.MIN_VALUE=4.9E-324
最大值:Double.MAX_VALUE=1.7976931348623157E308
基本类型:char 二进制位数:16
包装类:java.lang.Character
最小值:Character.MIN_VALUE=0
最大值:Character.MAX_VALUE=65535
Process finished with exit code 0
整数拓展(进制)
-
十进制整数,如:99, -500, 0。
-
八进制整数,要求以 0 开头,如:015。
-
十六进制数,要求 0x 或 0X 开头,如:0x15 。
public class Demo02拓展2 { public static void main(String[] arg){ int i1 = 10; int i2 = 010; int i3 = 0x10; System.out.println(i1); //10 System.out.println(i2); //8 System.out.println(i3); //16 } }
小数(浮点数)拓展
【金融面试问:银行金融业务用什么类型表示?】
代码问题
public static void main(String[] args) {
float f = 0.1f;
double d = 1.0/10;
System.out.println(f==d); //false
float d1 = 2131231231f;
float d2 = d1+1;
if(d1==d2){
System.out.println("d1==d2");//结果为这个,但明显是不相等的,是错误的
}
else{
System.out.println("d1!=d2");
}
}
主要理由:
由于字长有限,浮点数能够精确表示的数是有限的,因而也是离散的。
浮点数一般都存在舍入误差,很多数字无法精确表示,其结果只能是接近,但不等于;
计算机是二进制的,二进制浮点数不能精确的表示0.1,0.01,0.001这样 10的负次幂。
并不是所有的小数都能可以精确的用二进制浮点数表示。
- 最好完全避免使用浮点数比较 !
数值大:
Java.math下面的两个有用的类:BigInteger和BigDecimal,这两个类可以处理任意长度的数值。
BigInteger实现了任意精度的整数运算。
BigDecimal实现了任意精度的浮点运算。
浮点数使用总结:
- 默认是double
- 浮点数存在舍入误差,很多数字不能精确表示。如果需要进行不产生舍入误差的精确数字计算,需要使用BigDecimal类。
类:BigInteger和BigDecimal,这两个类可以处理任意长度的数值。
BigInteger实现了任意精度的整数运算。
BigDecimal实现了任意精度的浮点运算。
浮点数使用总结:
- 默认是double
- 浮点数存在舍入误差,很多数字不能精确表示。如果需要进行不产生舍入误差的精确数字计算,需要使用BigDecimal类。
- 避免比较中使用浮点数