double
浮点数,即小数
float,单精度—不常用
double,双精度—常用
具有舍入误差
double a = 3.15;//浮点数直接量---double
float a1 = 3.15f; //F、 f -->float
float b1 = 1.4;//编译错误
double b = 8; //可以是直接整数
double c = a + b;
System.out.println("c="+c);
double d = 3.12e2;//科学计数法
舍入误差:二进制无法精确表示1/10
double/float均有舍入误差
double a = 3.0;
double b = 2.9;
System.out.println(a-b);//是否0.1?
精确的运算,可以用BigDecimal,如财务场景
boolean
布尔类型,true/false
boolean a = false;//python 中False
char
- 字符类型,字符是表现形式—对应的编码(int)
- 默认Unicode编码方式,0-65535,16位的无符号整数
- 必须存入一个字符,且单引号
- 必须有且一个字符
- 赋值数值必须在0-65535之间
ASCII编码:
‘A’–65
‘a’–97
‘0’–48
char a = 'n'//只能存入一个字符----实际内存中为Unicode编码
char b = 5;//存入整数对应的Unicode编码 0-65535
char c = "\u0041";//Unicode编码形式
System.out.println('2'+'2');//输出100
基本类型的转换
数据类型,小—>大
byte,short,int,long,float,double
char–>(int)
小----->大,自动类型转换
大----->小,强制类型转换,可能溢出或精度丢失
- 整数直接量可以直接赋给 byte/short/char,不能超范围
- byte/short/char参与运算,先转为int
long a = 100l;
int b = (int)a;
double c = 5;//自动类型转换
double e = 3.14;
int f = (int)e;//损失精度
double a1 = 80/100;//0.0
double a2 = 80.0/100;//0.8
//byte/short/char
byte b1 = 5;//不能超分为
byte b2 = 6;
byte b3 = b1 + b2;//运算转整形 5 + 6 在赋值 int--->byte大到小需强制转换
byte b4 = (byte)(b1+b2);
Scanner
接收用户输入的值
//在包下
import java.util.Scanner; //类
//main中
Scanner scan = new Scanner(System.in);
System.out.println("请输入年龄:");
int a = scan.nextInt();//赋值,等待用户输入 同python---input
System.out.println("请输入价格:");
double b = scan.nextDouble();
//scan.nextLong();nextShort;nextByte();nextBoolean();
//scan.next();字符串