java语法基础复习(有用内容仅运算符和大括号构造和静态代码块)
运算符号
结合性以及结合方向
结合性实际上是确定同个表达之中,相同优先级的运算符的运算优先。也就是更细分的优先。
例如:表达式 a-b-c 这里有两个-运算符。那么先执行哪一个运算,就和结合性有关了。
左结合,那么就是相对左的运算符优先运算。
左结合符号
基本上都是左结合符号,所以除了右结合符号,就是左结合符号。
右结合符号
众多一元运算符
+正 -负 ~取反 !非 ++自增 –自减
三元运算符
?:
赋值以及赋值拓展运算符
= += /= %= &=…
相对小众的运算符
移位运算符
直接在内存二进制数据层面进行操作,效率非常高
注意数值在计算机内部通过补码表示,所以移位操作也是在补码的基础上移位,只不过正数的补码就是原码所以没有变化,但是负数的时候就需要注意了。
有符号和无符号移位的区别
在大多数情况下,我们进行移位运算,都不想要移动符号位,这样就是我们剩下的数据位进行移动,而符号位不变。
而无符号移位就不考虑符号位,全部看做数据位,这样移动是补零。最后显示的时候当然是通过有符号解读的方式展示的。就例如 -2>>>1 会变成1111111111111111111111111111111展示出来就是2147483647因为之前的-2的补码表示就是11111111111111111111111111111110
有符号移位左移位运算:使用<<符号表示,整体将二进制位向左侧移动,右侧补0,左移动1位,相当于乘2
右移位运算:使用>>符号表示,整体将二进制向右侧移动,左侧补0,右移动1位,相当于除2
如果移动的位数超过所能表述的长度,则采用求余方式计算例如: 如果移动32位时, 32%32=0 相当于移动0位
如果移动33位时, 33%32=1 相当于移动1位
无符号移位无符号右移位>>>,
instanceof
用于判断一个对象是否是右边的class的实例。兼容父类。
类语法
类中分为两个部分
静态描述和实例描述
局部变量没有默认值,但是数组是对象,会给初始值。
构造方法
直接大括号
如果直接在类代码块下面直接使用一个大括号代码块,那么这个代码块中的内容就是所有构造方法中的优先执行的一个代码块。但是在这个代码块中的内容,不能使用super,super只能在具体的构造方法中的第一行。
构造方法可以使用实例方法
访问修饰符
四个尺度,四个访问权限
分别是 同一个类中 同一个包中 继承关系 同一程序
private default protected public
多态
将子类对象,赋值装在父类的变量中。这样通过这个父类变量获得到的是子类父空间的属性,使用的是子类的重替方法。
接口
接口声明数据
数据都是默认public static final的
之后新增了一些
default方法(JDK8)
可以给接口中的方法一个默认的实现。如果不重写这个方法,那么实现接口的类就自动继承了这个方法的实现。
static方法(JDK8)
用于调用
private方法(JDK9)