进制,字符 布尔值拓展 ,转义字符
public class num4 {
public static void main(String[] args) {
//整数拓展 进制 二进制0b 十进制 八进制0 十六进制0x
int c=10;
int c1=010;
int c2=0x10;
System.out.println(c);//十进制
System.out.println(c1);//八进制
System.out.println(c2);//十六进制 //0~9 a~f
//十六进制算法:首位*进制+尾数 a~f=10~15
//=============================================
//浮点整数拓展 银行业务怎么表示?钱
//BigDecimal 数学工具类
//fLoat 表示字长有限 离散 舍入误差 接近但不等于
//double
//最好完全避免使用浮点数进行比较
//最好完全避免使用浮点数进行比较
System.out.println("=============================");
float f=0.1F;
double d=1.0/10;
System.out.println(f==d);
float a1=85885868768521231f;
double a2=a1+1;
System.out.println(a1==a2);
System.out.println("=============================");
//字符拓展
char a4='b';
char a5='我';
System.out.println((int) a4);//加int强制转换
System.out.println((int) a5);
//所有字符的本质还是数字
//编码 Unicode 表 2字节 0-65536 每个字符有对应的数字
System.out.println("=============================");
char a6='\u0061';
System.out.println(a6);//a
//转义字符
// \t 制表符
// \n 换行
System.out.println("Hello,world");
System.out.println("===============================");
String sa=new String("Hello world");
String sb=new String("Hello world");
System.out.println(sa==sb);
String sc="Hello world";
String sd="Hello world";
System.out.println(sc==sd);//从面向对象问题 从内存问题分析
//布尔值扩展
boolean flag = true;
if (flag ==true);{}//新手
if(flag);{}//老手
//less is more 代码要精简易读
}
}
类型转换
- 强制转换:由高到低
- 自动转换:由低到高
public class num5 {
public static void main(String[] args) {
//强制转换(类名)+变量名 高——低 避免超过转换范围导致内存溢出
int a=128;
byte b=(byte)a;
System.out.println(a);
System.out.println(b);//-128 高转低 内存溢出
//自动转换 低——高 可以直接输出
int d =128;
long f=d;
System.out.println(d);
System.out.println(f);
/*
注意点:
1.不能对布尔值进行转换
2.不能把对象类型转换为不相干的类型
3.由高到低强制转换时候可能存在内存溢出,精度丢失问题
*/
System.out.println("==================");
System.out.println(23.7);
System.out.println((int) 23.7);//23
System.out.println((int)45.89F);//45 高转低 精度丢失
System.out.println("==================");
char o='l';
int p=o+1;
System.out.println(p);
System.out.println((char) p);
}
}
数据溢出问题
public class num6 {
public static void main(String[] args) {
//操作数值比较大的时候注意溢出问题
//数字间可以用下划线表示
int money=10_0000_0000;
int years=20;
int ab=money*years;
System.out.println(ab);//-1474836480 数值过大 内存溢出
long lk =money*((long)years);
System.out.println(lk);//默认是int 所得数值超过int范围 需要将其中一个数转换为更大范围的long类型
}
}