一,修饰符
Java中的修饰符分为两类访问修饰符和非访问修饰符。
修饰符用来定义类、方法或者变量,通常放在语句的最前端。
public class Demo {
public int temp;
private static int staticTemp;
public void test () {
}
}
访问控制修饰符
Java中可以对类,方法,构造方法,变量进行访问控制。Java支持四种不同的访问权限。
类的访问修饰符一般是public或默认。
-
public:
- 类成员被声明为
public
可以被任何其他类访问,无论是同一个包中的类还是不同包中的类。
- 类成员被声明为
-
protected:
- 类成员被声明为
protected
可以被同一个包内的其他类访问,也可以被其他包中的子类访问(即继承该类的类)。
- 类成员被声明为
-
default (no modifier):
- 如果没有指定任何访问修饰符,则默认为包私有(package-private)。这意味着类成员只能被同一个包中的其他类访问,而对于不同包中的类则不可见。
-
private:
- 类成员被声明为
private
只能被同一个类内部的其他成员访问,即仅限于当前类中可见。
- 类成员被声明为
-
如果父类中的方法被声明为
public
,那么子类中继承的方法也必须是public
。这意味着子类中不能降低访问权限,而只能保持或提高访问权限。 -
父类中声明为
protected
的方法可以被子类继承。在子类中,可以将继承的protected
方法保持为protected
,也可以提升为public
,但不能降级为private
。 -
父类中声明为
private
的方法是私有的,子类无法继承这样的方法。因此,私有方法对子类是不可见的,子类中不能直接调用或覆盖父类的私有方法。
非访问修饰符
-
static修饰符:
static
修饰类方法和类变量(静态方法和静态变量)。- 静态方法和静态变量属于类而不是实例,在类加载时就被分配内存,可以通过类名直接访问,而不需要创建类的实例。
-
final修饰符:
final
修饰类、方法和变量。- 当用
final
修饰一个类时,该类不能被继承,即它是不可扩展的。 - 当用
final
修饰一个方法时,子类不能覆盖(重写)这个方法,即它是不可重写的。 - 当用
final
修饰一个变量时,这个变量成为常量,其值不能被修改,常量名通常大写。
-
abstract修饰符:
abstract
修饰抽象类和抽象方法。- 抽象类不能被实例化,它的存在主要是为了被子类继承和实现。
- 抽象方法没有方法体,只有方法签名,需要子类提供具体的实现。
-
synchronized和volatile修饰符:
synchronized
用于实现线程同步,它可以修饰方法或代码块,确保在多线程环境下方法或代码块的安全执行。volatile
用于声明变量,确保多个线程能正确处理该变量。volatile
变量的值在每次被线程访问时,都会强制从内存中重新读取,而不是使用缓存。
二,运算符
Java运算符大概可以分为六种。
-
算术运算符:用于执行基本的数学运算,如加法、减法、乘法、除法、取模等。例如:
+
(加法)、-
(减法)、*
(乘法)、/
(除法)、%
(取模)、++ (自增)、--(自减)。 -
关系运算符:用于比较两个值之间的关系,返回布尔值
true
或false
。例如:>
(大于)、<
(小于)、==
(等于)、!=
(不等于)、>=
(大于等于)、<=
(小于等于)。 -
位运算符:用于对整数类型的数据进行位运算。位运算是直接对二进制位进行操作的。例如:
&
(按位与)、|
(按位或)、^
(按位异或)、~
(按位取反)、<<
(左移位)、>>
(右移位)>>>
(右移位补零)。 -
逻辑运算符:用于对布尔类型的变量或表达式进行逻辑运算。例如:
&&
(逻辑与)、||
(逻辑或)、!
(逻辑非)。 -
赋值运算符:用于给变量赋值。例如:
=
,+=
,-=
,*=
,/=
,%=
等。 -
其他运算符:包括三元运算符
? :
,instanceof 运算符(用于判断对象是否是某个类的实例),以及一些特殊的运算符和语法糖。
Java运算符优先级
以下是Java中常见运算符的优先级,从高到低的顺序:
- 后缀运算符:
expr++
,expr--
- 一元运算符:
++expr
,--expr
,+expr
,-expr
,!expr
,~expr
- 乘性运算符:
*
,/
,%
- 加性运算符:
+
,-
- 移位运算符:
<<
,>>
,>>>
- 关系运算符:
<
,<=
,>
,>=
,instanceof
- 相等运算符:
==
,!=
- 按位与运算符:
&
- 按位异或运算符:
^
- 按位或运算符:
|
- 逻辑与运算符:
&&
- 逻辑或运算符:
||
- 条件运算符:
? :
- 赋值运算符:
=
,+=
,-=
,*=
,/=
,%=
,&=
,|=
,^=
,<<=
,>>=
,>>>=
- 逗号运算符:
,
(最低优先级)
运算符的优先级决定了表达式中运算符的执行顺序,如果有需要,可以使用圆括号来改变表达式的计算顺序。