Java基础Day2
(由于作者之前学过c和c++很多语法内容直接省略,直接记最重要的和容易忘记的)
类型的拓展
整数拓展: 进制 二进制0b 十进制 八进制0 十六进制0x
int i=0b101;
int i2=101;
int i3=0101;
int i4=0x101;
int i5=10_0000_0000//较大的数可以用下划线隔开
浮点数拓展:浮点数溢出问题
float f=0.1f;
float d=1.0/10;
f!=d;//两者不相等
folat d1=12133564651231321f;
float d2=d1+1;
di==d2;//两者相等
float 浮点数是有限且离散的,根据舍入误差,其数应该是大约值
最好完全避免使用浮点数进行比较
字符拓展,转义字符,布尔值拓展
比较简单不多说
类型转换
强制类型转换:高位到低位
自动类型转换;低位到高位
byte,short,char,->int->long->float->double
注意
- 不能将布尔值进行转化,
- 不能把对象类型转化为不相干的类型,
- 转换的时候可能存在内存溢出,或者精度问题
变量常量作用域
(修饰符不存在先后顺序)
static final double PO=3.2;
final static double PO=3.2;//常量的定义
实例变量:
- 布尔值:默认是false
- 从属于对象;如果不自行初始化,这个类型的默认值为0或0.0
- 除了基本类型,其余的默认值都是NULL
- 实例变量的使用有点像c的结构体数据调用
类变量 static double i=222;
运算符
byte和short等类型进行运算结果应该是int类型
byte a=5;
short b=3;
byte c=a+a;//错误
short d=b+b;//这两种情况a+a,a*a,b+b,b*b都是int型
//为啥咱还不清楚
关系运算符返回的结果是布尔值
幂运算以及其他很多运算会使用类工具来做
位运算符
&&,||,!
&,|,~
<<相当于*2,>>相当于/2(效率极高)
int A=0b0010_1100;int B=0b0000_1111;/*A&B=0b0000_1100A|B=0b0010_1111;A^B=0b0010_0011;异或~B=0b1111_0000;*/
思考题
怎么计算2*8=16最快?
补充
条件运算符?:
字符串连接符+其他类型,后面的其他类型会转化成string型
int a=20;
int b=30;System.out.println(""+a+b);System.out.println(a+b+"");