java语法优先级_06.基础语法(Java修饰符、运算符、运算符的优先级)

六、Java修饰符

Java修饰符,主要分一下两类:

访问修饰符

非访问修饰符

修饰符用来定义类、方法或者变量,通常放在语句的最前端;

一些例子:

public class clasName{

//...

}

private boolean myFlag;

static final double weeks = 9.5;

protected static final int BOXWIDTH = 42;

public static void main(String[] arguments) {

// 方法体

}

访问控制修饰符/可见性修饰符

用来控制对类、变量、方法和构造方法的访问权限;

默认的,default,在同一包?内可以见(用),不使用修饰符。

私有的,private,在同一类内可见。

公共的,public,所有类可见。

受保护,protected,对对同一包内的类和所有子类可见。

?:类是一个个写好的功能,包是用来包装一大部分的功能。

访问控制和继承

父类中声明为 public 的方法在子类中也必须为 public。

父类中声明为 protected 的方法在子类中要么声明为 protected,要么声明为 public。不能声明为 private。

父类中声明为 private 的方法,不能够被继承。

非访问修饰符

static,用来创建类方法和类变量。

final,用来修饰类、方法和变量,final 修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。

abstract,用来创建抽象类和抽象方法。

synchronized,volatile,主要用于线程的编程。

transient,该修饰符包含在定义变量的语句中,用来预处理类和变量的数据类型。

七、运算符

算数运算符

加+,减-,乘*,除/,取模取余:%,自增:++,自减:--

关系运算符

是否相等:==

是否不相等:!=

大于>,小于=,小于等于<=

关系运算符返回的是布尔值true/false

逻辑运算符

&& 与 都是真返回true,|| 或 有一个是真返回true,! 非 反转逻辑

位移运算符

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

6845a8ba608eafb580a0d9e46e96ff82.png

跑一节代码看看:

public class Test {

public static void main(String args[]) {

int a = 60; /* 60 = 0011 1100 */

int b = 13; /* 13 = 0000 1101 */

int c = 0;

c = a & b; /* 12 = 0000 1100 */

System.out.println("a & b = " + c );

c = a | b; /* 61 = 0011 1101 */

System.out.println("a | b = " + c );

c = a ^ b; /* 49 = 0011 0001 */

System.out.println("a ^ b = " + c );

c = ~a; /*-61 = 1100 0011 */

System.out.println("~a = " + c );

c = a << 2; /* 240 = 1111 0000 */

System.out.println("a << 2 = " + c );

c = a >> 2; /* 215 = 1111 */

System.out.println("a >> 2 = " + c );

c = a >>> 2; /* 215 = 0000 1111 */

System.out.println("a >>> 2 = " + c );

}

}

得到结果如下:

a & b = 12

a | b = 61

a ^ b = 49

~a = -61

a << 2 = 240

a >> 2 = 15

a >>> 2 = 15

赋值运算符

操作符

=

赋值,右边赋值给左边

+=

C + = A 等价于 C = C + A

-=

C - = A 等价于 C = C - A

*=

C * = A 等价于 C = C * A

/=

C / = A 等价于 C = C / A

(%)=

C%= A 等价于 C = C%A

<<=

C << = 2 等价于 C = C << 2

>>=

C >> = 2 等价于 C = C >> 2

&=

C&= 2 等价于 C = C&2

^=

C ^ = 2 等价于 C = C ^ 2

|=

C | = 2 等价于 C = C | 2

条件运算符(三元运算符)

variable x = (expression) ? value1 if true : value2 if false

expression是否为真,真:x=value1;否:x=value2

instanceof 运算符

instanceof 严格来说是Java中的一个双目运算符,用来测试一个对象是否为一个类的实例,用法为:

boolean result = obj instanceof Class

//例子:

String name = 'James';

boolean result = name instanceof String; // 由于name是Strine类型,所以返回真

其中obj 为一个对象,Class 表示一个类或者一个接口,当 obj 为 Class 的对象,或者是其直接或间接子类,或者是其接口的实现类,结果result 都返回 true,否则返回false。

注意:编译器会检查 obj 是否能转换成右边的class类型,如果不能转换则直接报错,如果不能确定类型,则通过编译,具体看运行时定。

八、运算优先级

0f9aa4f44b9e760d18074278b6a8c850.png

从上到下的优先级

其实在实际的开发中,不需要去记忆运算符的优先级别,也不要刻意的使用运算符的优先级别,对于不清楚优先级的地方使用小括号去进行替代,示例代码:

int m = 12;

int n = m << 1 + 2; //结果是96

int n = m << (1 + 2); //结果同样是96,这样更直观

这样书写代码,更方便编写代码,也便于代码的阅读和维护。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值