目录

  • 一、变量与常量
  • 1. 变量
  • 2. 常量
  • 二、运算符
  • 1. 算术运算符
  • 2. 数学函数与常量
  • 3. 数值类型之间的转换
  • 4. 强制类型转换
  • 5. 赋值
  • 6. 自增和自减运算符
  • 7. 关系和boolean运算符
  • 8. 条件运算符/三目运算符
  • 9. switch运算符
  • 10. 位运算符
  • 11. 括号与运算符级别


一、变量与常量

与所有的程序设计语言一样,Java也使用变量来存储值。常量就是值不变的变量。

1. 变量

变量就是可以变化的量。
声明变量

  • Java是一种强类型语言,每个变量都必须声明类型(type)。
  • Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
    例:
type varName   [=value]  [{,varName[=value]}] ;
 //数据类型  变量名 = 值 ; 可以使用逗号隔开来声明多个同类型变量
 
 double salary;
 int vacationDays;

注意

  • 每个变量都有类型,类型可以是基本类型,也可是引用类型
  • 变量名必须是合法的标识符。第一个字符不能是数字。不能使用Java关键字作为变量名
  • 变量声明是一条完整的语句,所有的Java语句都以分号结束,因此每一个声明都必须以分号结束
  • Java中的“字母”“数字”和“货币符号”的范围更大。字母是指一种语言中表示字母的任何Unicode字符
  • 可在一行中声明多个变量(不提倡,分别声明每一个变量可以提高程序的可读性):
int i,j;//both are integers

初始化变量
声明一个变量后,必须用赋值语句显示的初始化变量。避免使用未初始化的变量的值。

int a;
a = 13;
--------------------------------------------------
int a = 13
  • Java中可以将声明放在代码的任何地方(不过还是建议变量的声明要尽可能靠近第一次使用这个变量的地方)

2. 常量

在Java中,可以用关键字final指示常量
关键字final表示这个变量只能被赋值一次,赋值后,就不能再更改了,若在常量定义时初始化后强行赋值,数据库会跳出错误信息,并拒绝接受这一个新的值。在给常量取名时,一般都采用大写字符(主要是与变量进行区分)

注意

  • 类常量的定义位于main方法之外。这样同一类的其他方法也可以使用这个常量
  • 若一个常量被声明为public,那么其他类的方法也可使用该常量
  • 必须在常量声明时对其进行初始化
  • 关键字final不仅可以用来修饰基本数据类型的常量,还可用来修饰对象的引用或者方法
  • 当一个数组对象被关键字final设置为常量时,它只能够恒定的指向一个数组对象,无法将其改变指向另外一个对象,也无法更改数组中的值

二、运算符

运算符用于连接值,Java提供了一组丰富的算术和逻辑运算符以及数学函数。

1. 算术运算符

在Java中,使用+、 - 、* 、 / 来分别表示加减乘除运算,++自加、--自减
  • “ / ”表示整数除法,即参与 /运算的两个操作数都为整数,若操作数有一个是浮点数或者两个都是,则表示的是浮点除法,计算结果就是自然除法的结果
  • “ % ”表示整数的求余操作
  • 注意:整数被0整除将产生一个异常,而浮点数被0或0.0整除将会得到一个无穷大或NaN结果
  • “ + ”还可以作为字符串的连接运算符;“ - ”还可以作为求负的运算符

2. 数学函数与常量

Java中没有提供其他更复杂的运算符,若需要完成乘方、开方等运算,则可借助java.lang.Math类的工具方法完成复杂的数学运算。
Math类下包含了丰富的静态方法,用于完成各种复杂的数学运算
Math还提供了两个常量来表示π和e常量最接近的近似值:

Math.PI
Math.E

3. 数值类型之间的转换

经常需要将一种数值类型转换为另一种数值类型。如图:

Java的常量有几种类型 java常量的定义_运算符

图中的实线箭头表示无丢失的转换;虚线箭头表示可能有精度损失的转换

当用一个二元运算符连接两个值时(例:a+b,a为整数,b为浮点数),先要将两个操作数转换为同一种类型,然后再进行计算

  • 若两个操作数中有一个为double类型,另一个操作数就会转换为double类型
  • 否则,若其中一个操作数是float类型,另一个操作数就会转换为float类型
  • 否则,若其中一个操作数是long类型,另一个操作数就会转换为long类型
  • 否则,两个操作数都将被转换为int类型

4. 强制类型转换

若想把图3-1中箭头右边的类型转换为左边的类型,则必须进行强制类型转换。

强制类型转换的语法格式是在()中指定想要转换的目标类型,后面紧跟待转换的变量名:
(targetType) value
------------------------------------------------------------------------------------
double x = 9.997;
int nx = (int) x;

当进行强制类型转换时,是有可能损失信息的。

5. 赋值

赋值运算符用于为变量指定变量值。赋值表达式是有值的,赋值表达式的值就是右边被赋的值。

  • 将一个直接量值赋给变量。
    var pi = 3.14; //为变量pi赋值3.14
  • 将一个变量的值赋给另一个变量
    var str2 = str; //将变量str的值赋给str2
  • 赋值表达式支持连续赋值,通过使用多个赋值运算符,可一次为多个变量赋值
int a;
int b;
//为a,b赋值,两个变量的值为2
a = b = 2;
  • 将表达式的值赋给变量
var d1 = 12.13;
var d2 = d1 + 3; //将表达式的值赋给都
  • 赋值运算符还可以和其他运算符结合

6. 自增和自减运算符

前缀是先完成加一或减一,后缀是会使用变量原来的值
例:
int m = 7;
int n = 7;
int a = 2 * ++m;//a为16,m为8
int b = 2 * n--; //b为14,n为8

7. 关系和boolean运算符

比较运算符用于判断两个变量或常量的大小,比较运算的结果是一个布尔值(即true或false)
逻辑运算符用于操作两个布尔型的变量或常量

比较运算符:==、!=、<、>、<=、>=
逻辑运算符:&&与、&不短路与、||或、|不短路或、!非、^异或

&&和||是按照“短路”方法来求值的:
若第一个操作数已经能够确定表达式的值,第二个操作数就不必计算

8. 条件运算符/三目运算符

Java提供了? :运算符,可根据一个布尔表达式选择一个值。若条件(condition)为真true,表达式condition ? expression1 : expression2就计算为第一个表达式的值,否则为第二个表达式的值
例:

(expresssion) ? if-true-statement : if-false-statement;
-----------------------------------------------------------------------------------
x < y ? x : y
会返回x和y中较小的一个

9. switch运算符

当需要在两个以上的值中做出选择时,可使用switch表达式

String seasonName = switch (seasonCode)
{
case 0 -> "Spring";
case 1 -> "Summer";
case 2 -> "Fall";
case 3 -> "Winter";
default -> "???";
};

case标签还可以是字符串或者枚举类型常量
与所有表达式类似,switch表达式也有一个值。注意各个分支中箭头->放在值前面

注意

  • 使用整数或者String操作数的switch表达式必须有一个default,因为不论操作数值是什么,这个表达式都必须生成一个值
  • 如果操作数为null,会抛出一个NullPointerException

10. 位运算符

处理整型类型时,还有一些运算符可以直接处理组成整数的各个位。这意味着可以使用掩码技术得到一个数中的各个位。一般来说,位运算符只能操作整数类型的变量或值。Java支持的位运算符有以下七个:

& :按位与。当两位同时为1时才返回1
| :按位或。只要有一位为1即可返回1
~:按位非。单目运算符,将操作数的每个位(包括符号位)全部取反
^ :按位异或。当两位相同时返回0,不同时返回1
<< :左移运算符
>> :右移运算符。会用符号位填充高位
>>> :无符号右移运算符。会用0填充高位

注意

  • 应用在布尔值上时,&和 | 也会得到一个布尔值。但&和 | 运算符不采用“短路”来求值,即计算结果前,两个操作数都需要计算
  • 不存在<<<运算符

11. 括号与运算符级别

Java中大部分运算符是从左向右结合的,同一级别的运算符按从左往右的次序进行计算,右结合运算除外。只有单目运算符、赋值运算符、三目运算符是从右向左结合的。

Java的常量有几种类型 java常量的定义_操作数_02

Java的常量有几种类型 java常量的定义_Java的常量有几种类型_03

注意

  • Java不使用逗号运算符
  • 源代码就是一份文档,其可读性很重要
  • 不要把表达式写的太复杂,可分几步完成
  • 不要过度依赖运算符优先级来控制表达式的执行顺序,可用()来控制