一、三元运算符
条件表达式?表达式1:表达式2;
运算规则:
- 如果条件表达式的值为true,运算后的结果是表达式1;
- 如果条件表达式的值为false,运算后的结果是表达式2;
口诀:【一灯大师:一真大师】
//三元运算符
public class TernaryOperator{
public static void main(String[] args) {
int a = 10;
int b = 99;
/*
解读
1. a > b 为 false
2. 返回b--,先返回 b 的值,然后在b - 1;
3. 返回结果
*/
int result1 = a > b ? a++ : b--;
int result2 = a < b ? ++a : b--;
System.out.println("result1 = " + result1);//99
/*
解读
1. a > b 为 true
2. 返回++a,先a+1,再返回 a 的值;
3. 返回结果
*/
System.out.println("result2 = " + result2);//11
}
}
- 使用细节
- 表达式1和表达式2要为可以赋给接收变量的类型(或可以自动转换/或强制准换)
- 三元运算符可以转成if-else语句
int res = a > b ? a++:--b;
案例实现三个数的最大值
//三元运算符
public class TernaryOperatorDetail{
public static void main(String[] args) {
// 表达式1和表达式2要为可以赋给接收变量的类型(或可以自动转换/或强制准换)
int a = 3;
int b = 8;
int c = a > b ? a : b;
double d = a > b ? a : b+3;//满足int->double
// 实现三个数的最大值
int n1 = 55;
int n2 = 33;
int n3 = 123;
//思路
//1. 先得到 n1 和 n2 中最大数,保存到max1
//2. 然后再求出max1和n3中的最大数,保存到max2
int max1 = n1 > n2 ? n1 : n2;
int max2 = max1 > n3 ? max1 : n3;
System.out.println("最大的数 = " + max2);
//使用一条语句实现
int max = (n1 > n2 ? n1 : n2) > n3 ? (n1 > n2 ? n1 : n2) : n3;
System.out.println("最大的数 = " + max);
}
}
二、运算符优先级
- 运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。如表,上一行运算符总优先于下一行。
- 只有单目运算符、赋值运算符是从右向左运算的。
三、标识符命名规则和规范
- 标识符概念
- Java对各种变量、方法和类等命名时使用的字符序列成为标识符。
- 凡是自己可以起名字的地方都叫标识符。 int num1 = 90;
- 标识符的命名规则(必须遵守)
- 由26个英文字母大小写,0-9,_或$组成。
- 数字不可以开头。 int 3ab = 1;//错误示范
- 不可以使用关键字或保留字,但能包含关键字和保留字。
- Java中严格区分大小写,长度无限制。 int totalNum = 10;int n = 90;
- 标识符不能包含空格。 int a b = 90//错误示范
- 标识符命名规范
- 包名:多单词组成时所有字母都小写:aaa.bbb.ccc //比如 com.hsp.crm
- 类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz [大驼峰]
- 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz [小 驼峰, 简称 驼峰法]
- 常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ
四、关键字
定义:被 Java 语言赋予了特殊含义,用做专门用途的字符串(单词)
特点:关键字中所有字母都为小写
五、保留字
Java 保留字:现有 Java 版本尚未使用,但以后版本可能会作为关键字使用。自己命名标识符时要避免使用这些保留 字 byValue、cast、future、 generic、 inner、 operator、 outer、 rest、 var 、 goto 、const