通常是放在定义类,方法,变量的最前端javascript
修饰符 | 当前类 | 同一包内 | 子孙类 | 其余包 |
---|---|---|---|---|
public |
Y | Y | Y | Y |
protected |
Y | Y | Y | N |
default |
Y | Y | N | N |
private |
Y | N | N | N |
感受这个表格挺清晰的,至少我一眼就懂了前端
如果不加修饰符,貌似是默认publicjava
static 修饰符,用来建立类方法和类变量。编程
(静态变量的话,就是说不管被实例化多少次,静态变量只拷贝一次,并且不变spa
静态方法的话,不能使用类的非静态变量,并且不用new就能够调用该方法)线程
final 修饰符,用来修饰类、方法和变量,final 修饰的类不可以被继承,修饰的方法不能被继承类从新定义,修饰的变量为常量,是不可修改的。code
abstract 修饰符,用来建立抽象类和抽象方法。继承
(不是很懂抽象类,就四处问了问,最后得出个浅显易懂,可是估计理解还有些误差的解释:一个父类,我有不少子类,有同一个方法,可是每一个子类的处理不一样,因此就在父类里面定义个抽象的,至关于只是定了个名字,怎么处理,每一个子类看着办)ip
synchronized 和 volatile 修饰符,主要用于线程的编程。it
感受跟其余语言没什么区别啊,记录几个接触少的
Java定义了位运算符,应用于整数类型(int),长整型(long),短整型(short),字符型(char),和字节型(byte)等类型。
位运算符做用在全部的位上,而且按位运算。假设a = 60,b = 13;它们的二进制格式表示将以下:
A = 0011 1100 B = 0000 1101 ----------------- A&b = 0000 1100 A | B = 0011 1101 A ^ B = 0011 0001 ~A= 1100 0011
操做符 | 描述 | 例子 |
---|---|---|
& | 若是相对应位都是1,则结果为1,不然为0 | (A&B),获得12,即0000 1100 |
| | 若是相对应位都是0,则结果为0,不然为1 | (A | B)获得61,即 0011 1101 |
^ | 若是相对应位值相同,则结果为0,不然为1 | (A ^ B)获得49,即 0011 0001 |
〜 | 按位补运算符翻转操做数的每一位,即0变成1,1变成0。 | (〜A)获得-61,即1100 0011 |
<< | 按位左移运算符。左操做数按位左移右操做数指定的位数。 | A << 2获得240,即 1111 0000 |
>> | 按位右移运算符。左操做数按位右移右操做数指定的位数。 | A >> 2获得15即 1111 |
>>> | 按位右移补零操做符。左操做数的值按右操做数指定的位数右移,移动获得的空位以零填充。 | A>>>2获得15即0000 1 |
多是作的项目有限,位运算符这种没怎么遇到过
while,do...while,for
感受每一个语言都同样,没啥特别的,很少说
if,switch
同上,跟javascript没太大区别