文章目录
- Java标识符命名规则,运算符,分支结构
- 1. Java标识符命名规则
- 1.1 命名规则案例
- 1.2 基于 阿里巴巴Java 开发规约限制 的标识符命名规范
- 2. 运算符
- 2.1 算术运算符
- 2.2 自增自减运算符
- 2.3 关系运算符
- 2.4 逻辑运算符
- 2.5短路原则
- 2.6运算符小案例
- 3. 分支结构
- 3.1 生活场景
- 3.2 if 分支结构
- 3.3 if else 分支解构
- 3.4 if else-if 分支结构
Java标识符命名规则,运算符,分支结构
1. Java标识符命名规则
1.1 命名规则案例
163邮箱,注册邮箱名限制
6 ~ 18个字符,可使用字母、数字、下划线,需要以字母开头
命名规则分析
1. 有长度限制
2. 可用字符限制(字母,数字,下划线)
3. 起始限制 要求使用字母开头
1.2 基于 阿里巴巴Java 开发规约限制 的标识符命名规范
标识符是什么???
程序员在代码开发中,可以用于自定义的名称信息,包括变量名,方法名,类名,接口名....
AJCG 标识符命名规范:
1. 标识符有且只允许使用英文字母(A ~ Z, a ~ z),数字(0 ~ 9), 唯一可以使用的标点符号 下划线( _ )
2. 标识符要求必须使用英文字母开头,不允许使用其他字符
3. Java 中的标识符严格区分大小写,大写和小写不同!!!
4. 标识符没有严格长度限制,但是会根据实际情况,限制标识符长度。
5. 标识符要求做到【见名知意,动宾结构】
正确案例:
studentName studentAge studentScore 【见名知意】
学生姓名 学生年龄 学生成绩
getStudentName setStudentName getStudentAge setStudentAge 【见名知意。动宾结构】
获取学生姓名 设置学生姓名 获取学生年龄 设置学生年龄
错误案例:
含糊不清,无法分析,变量名没有明确的语义性,要求变量定义单独成行,一行一个
int a,b,c,d,e,f,g;
看似高阶,实则啥也不是
payBeiZhu 不能出现英文和拼音的混合
zhiFuBeiZhu 不允许,拼音除专用名词(alibaba,beijing)之外,其他不能使用
tsgl1y 绝对不允许,阅读性极差
6. 标识符要求使用驼峰命名法或者下划线命名法
驼峰命名法:
小驼峰
标识符首字母小写,之后的每一个单词首字母大写,作为区分标记
studentName studentAge studentScore
getStudentName setStudentName getStudentAge setStudentAge
常用于:
变量名,方法名
大驼峰
标识符每一个单词首字母大写
FirstJava Demo1 Demo2
ArrayIndexOutOfBoundsException
数组下标越界异常
BufferedInputStream
常用于:
类名,接口名
class 之后的名称就是类名,
下划线命名法:
所有单词字母全部大写,不同的单词之间使用 _ 分割
JAVA_HOME MAX_VALUE MIN_VALUE MAX_ARRAY_SIZE DEFAULT_CAPACITY
7. 标识符不得使用已经被 Java 占用的关键字和保留字
代码中变颜色的内容都不可以用于自定义标识符,例如 int float double
8. 标识符在一定范围内容唯一
163邮箱绝对不可能出现两个人账号一样!!!
2. 运算符
2.1 算术运算符
开发中使用的算术运算符:
+ - * / () = %
开发中使用要求:
1. 先乘除后加减
2. 除数不能为 0
3. 从左至右基本原则
4. 有优先级需求,使用括号处理
5. = 赋值号,将赋值号右侧的数据,赋值给左侧的变量
取余 % :
小学没有学分数/小数
10 ÷ 6 = 1 ... 4
1 是商为结果
4 为余数
开发中的取余目标结果就是【余数】,如果按照上面的案例,结果为 4
除以 /:
Java 规定,如果是整数相除,没有小数,取整!!!
5 / 2 = 2;
小案例:
10 / 12 = ?
结果为 0
10 % 12 = ?
结果为 10
12 / 10 = ?
结果为 1
12 % 10 = ?
结果为 2
25 / 3 = ?
结果为 8
25 % 3 = ?
结果为 1
// 算术运算符案例
public class Demo1 {
public static void main(String[] args) {
int num1 = 10;
int num2 = 20;
num1 = num1 + num2; // num1 = 30 num2 = 20
/*
【注意】
代码运行过程中,要求关注变量存储数据变化过程。
num1 目前数据存储已通过第 7 行代码存储内容变化,结果为 30
下方代码执行过程中,num1 = 30 num2 = 20 ==> num1 = 30 * 20
num1 = 600
*/
num1 = num1 * num2; // num1 = 600 num2 = 20
num1 = num1 - num2; // num1 = 580 num2 = 20
num1 = num1 / num2; // num1 = 29 num2 = 20
num1 = num1 % num2; // num1 = 9 num2 = 20
/*
【注意】
num2 数据存储内容在整个的运行过程中,没有任何的变化,
因为 num2 数据存储内容没有被重新赋值
[结论]
变量数据存储内容,有且只有在被赋值的情况下,
才可以修改
*/
System.out.println(num1);
System.out.println(num2);
}
}
【增强版算术运算符】
+= -= *= /= %=
int num1 = 10;
int num2 = 20;
num1 = num1 + num2; // num1 = 30 num2 = 20
num1 += num2; // num1 = 50 num2 = 20
/*
优势:
1. 简化代码结构,节省代码体量
2. 自带 buff ,有特殊功能
*/
2.2 自增自减运算符
自增自减运算符格式:
++ 自增 ==> 操作的变量数据内容自增 1
-- 自减 ==> 操作的变量数据内容自减 1
// 自增自减运算符演示
public class Demo2 {
public static void main(String[] args) {
int num = 10;
System.out.println(num);
/*
自增运算符作用是操作的变量数据存储内容自增 1
*/
System.out.println(num++); // 10
System.out.println(num); // 11
System.out.println();
System.out.println(++num); // 12
System.out.println(num); // 12
/*
分析:
1. 所有的自增操作全部有效,num 数据存储结果原本是 10
通过该两次 自增操作之后,num 目前数据存储情况为 12
2. 发现问题
System.out.println(num++); 为什么结果为 10
当前代码运行时,num 数据存储结果为 10,++ 自增操作
在变量之后,执行流程
a. 取值目前 num 数据内容参与代码运行,得到数据 10
b. 代码当前执行完毕之后,num 完成自增操作 num 10 ==> 11
看到的展示效果为 10 的情况,【先取值后自增】
--------------------------------------------
System.out.println(++num); 为什么结果为 12
当前代码运行时,num 数据存储结果为 11,++ 自增操作
在变量之前,执行流程
a. 首先 num 执行自增操作,num 11 ==> 12
b. 取值当前 num 数据存储情况,参与代码运行,得到数据 12
看到的展示效果为 12 的情况,【先自增后取值】
【总结】
++ 在变量之前,【先自增后取值】
++ 在变量之后,【先取值后自增】
自减操作同理
代码歧义性过大!!!
*/
}
}
【语法总结】
1. 自增自减运算符有且只能操作变量,不可以操作常量!!!
2. 自增自减运算符在变量之前和变量之后,操作流程不同
在变量之前,【先操作后取值】
在变量之后,【先取值后操作】
【使用建议】
1. 自增自减歧义性过大,代码中尽量减少使用
2. 如果必要要使用
a. 单独成行
int num = 10;
num++;
++num;
b. 使用 += 1 or -= 1 替换 自增自减运算符
++num or num++ ===> num += 1
--num or num-- ===> num -= 1
[num1 =- num2 相当于 将 - num2 赋值给 num1 ]
[num1 =+ num2 相当于 将 num2 赋值给 num1]
Swift iOS开发语言中,已经禁用 自增自减运算符,避免代码歧义,全部使用 += 1 和 -= 1 替换
提高代码阅读性
【自增自减运算符常用位置】
1. 循环操作
2. 面试题
【面试题1】
int num = 5;
int ret = num++ * ++num;
num = 7
ret = 35
/*
num 初始化数据为 5 自增做了两次
自增操作是针对变量操作,自增自减运算符存在,一定会修改对应的变量数据内容
目前表达式中的存在 num++ 和 ++num
针对于 num 的自增操作执行了 两次
所以 num 变量的最终数据存储结果为 7
ret 的结果是取决于 num 在表达式中的数据提供效果。
ret = num++ * ++num;
num++ 先取值,后自增 针对于 ret计算表达式的数据提供为 5
num++ 自增后数据存储为 6
++num 先自增,后取值
++num 针对于 num 数据存储的修改,num 数据存储内容为 7
针对于 ret 计算表达式的数据提供为 7
ret = 5 * 7 ; ===> 35;
*/
【面试题2】
int num = 10;
++(num++)++;
num = ?
/*
语法错误!!
有小括号先处理括号中的内容
小括号中数据内容对于整个表达式而言是一个【值/数据】,不是变量!!
小括号里面的内容对外的结果不是 num 变量
自增自减运算符有且只能操作变量,不能操作【常量】,同样无法操作【值/数据】
*/
2.3 关系运算符
判断表达式两端的数据结果是否满足关系运算符需求,对外结果为boolean(true false)
Java中开发使用的关系运算符:
> < >= <= = == !=
public class Demo3 {
public static void main(String []args) {
boolean ret = 5 > 2;//ture
System.out.println(ret);
ret = 5 < 2;//false
System.out.println(ret);
ret = 5 <= 2;//false
System.out.println(ret);
ret = (5 == 5)//ture
System.out.println(ret);
ret = ('A' == 'a'); //false
System.out.println(ret);
ret = (434 != 434); //false
System.out.println(ret);
}
}
2.4 逻辑运算符
条件叠加,多个条件整合成一个完整的条件分析
逻辑运算符运算的最终结果为 boolean 类型
逻辑与
与 &&
同真为真,有假【即】假
逻辑或
或 ||
有真【即】真,同假为假
逻辑非
取反 !
强牛,犟,真变假,假变真
public class Demo4 {
public static void mian(String []args) {
boolean ret = 10 > 2 && 3 < 4;
System.out.println(ret); //true
ret = 18 > 8 || 8 > 19;
System.out.println(ret); //true
ret = !(10 > 5);
System.out.println(ret); //false
}
}
2.5短路原则
int num = 10;
boolean ret = num > 5 && ++num > 10;
num = ?
ret = ?
/*
结构分析
&& 同真则真,一假即假
如果一个逻辑与表达式中出现了一个false 条件,该逻辑与表达式有没有可能成为true??
绝对不可能!!
逻辑与表达式,计算机在运行过程中,一旦发先false 条件!!当前逻辑与表达式已经明确结果为false!
计算机为节约资源,从false 条件开始,之后的所有表达式不在运行!!
【逻辑与短路原则 同真为真,有假【即】假】
*/
int num = 10;
boolean ret = num > 5 || ++num > 5;
num = ?
ret = ?
/*
|| 有真【即】真,同假为假
逻辑或表达式中,如果发现了 ture 条件,之后的所有内容不再执行,节约计算机资源。
【逻辑或短路原则,有真【即】真,同假为假】
*/
2.6运算符小案例
- 完成条件判断书写,判断一个数值是否在 0 ~ 100 之间
int num = 50;
num >= 0 && num <= 100;
//使用逻辑与表达式连接条件,限制当前 num 数据范围在 0 ~ 100
2.完成条件判断书写,判断一个字符是否为数字字符
char ch = '4'; //存储 字符常量 '4' == > 数字字符
ch >= '0' && ch <= '9';
//使用逻辑与表达式连接条件,限制当前 ch 字符数据存储范围是 '0' ~ '9'
//如果操作过程涉及到字符内容,有且只允许使用字符本身
3.完成条件判断书写,判断一个字符是否为大写英文字母
char ch = 'Y';
ch >= 'A' && ch <= 'Z';
- 完成条件判断书写,判断一个字符是否为英文字母
char ch = 's';
ch >= 'A' && ch <= 'Z'
ch >= 'a' && ch <= 'z';
//不可能一个英文字母既满足大写,又满足小写!!
ch >= 'A' && ch <= 'Z' || ch >= 'a' && ch <= 'z';
(ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z');
/*
以上两个条件都正确!!
小括号的使用可以认为是一个整体,阅读角度上看,可能优于没有括号的版本
逻辑与运算符优先级高于逻辑或!无需括号限制优先级和整体性问题
*/
5.完成条件与判断书写,完成闰年条件判断
闰年条件:
- 可以被 4 整除,但是不能被 100 整除
- 可以除 400 整除
满足以上任意条件都是润年!!
int year = 2008;
year % 4 == 0;//可以被 4 整除
year % 100 != 0;//不可以被 100 整除
year % 400 == 0;//可以被 400 整除
year % 4 == 0; && year % 100 != 0; || year % 400 == 0;
3. 分支结构
3.1 生活场景
会员等级:
磊哥超市
消费满 100 元 黑铁 vip
消费满 500 元 青铜 vip
消费满 1000 元 白银 vip
消费满 3000 元 黄金 vip
消费满 10000 元 砖石 vip
充值返现
磊哥超市
充值 1000 送 100
充值 2000 送 300
充值 5000 送 1000
充值 10000 送 3000
学生成绩等级
满分100分
90 以上 秀儿
80 以上 良儿
70 以上 中儿
60 以上 过儿
60 以下 让你爹穿拖鞋来校区
3.2 if 分支结构
//格式
if (/*条件判断*/) {
//语句体
}
/*
执行流程:
代码运行判断 if 之后小括号里面的数据是否为 true. 如果为 true 之星1语句体内容, 如果为 false不执行。 不管 if 分支结构中的语句体是否执行
*/
public class Demo4 {
public static void main(String []args) {
int totalPrice = 88;
if (totalPrice >= 68) {
System.out.print("亲爱的贵宾,送你一张停车卷,");
}
System.out.println("欢迎您下次光临!!!");
}
}
3.3 if else 分支解构
//格式
if (/*条件判断。boolean true or false */) {
//true 语句体
} else {
//false 语句体
}
/*
执行流程:
代码执行 if else 分支结构, 首先 判断 if 之后小括号中的数据内容判断为 true。 如果为 true 执行 if 大括号对应的 true 语句体,如果为 false 执行 else 大括号对应大括号对应的 false 语句体,执行完毕继续执行后期代码。
世界上最遥远的距离不是我在你面前你不知道我爱你,而是我在 if 里 你在 else 里
*/
public class Demo5 {
public static void main(String []args) {
int totalPrice = 200;
if (totalPrice >= 168) {
System.out.println("亲爱的顾客,送一瓶小拉菲");
} else{
System.out.println("亲爱的顾客,送一瓶健力宝");
}
System.out.println("欢迎您下次光临!!");
}
}
3.4 if else-if 分支结构
//格式
if (/*条件匹配1*/) {
处理方式1
} else if (/*条件匹配2*/) {
处理方式2
} else {
//不满足任何条件匹配的备选处理方式
}
/*
执行流程:
代码运行 if else-if 分支结构, 自上而下匹配 if 之后下括号里面的条件, 如果发现匹配项,执行对应的处理方式,跳出分支结构,如果没有任何一个 if 条件匹配, 执行 else 中的备选处理方式。
if else-if 分支结构执行完成,继续执行之后的代码
*/
public class Demo5 {
public static void main(String []args) {
int totalPrice = 500;
if (totalPrice >= 2000) {
System.out.println("亲爱的顾客本店送给你了");
} else if (totalPrice >= 1000) {
System.out.println("亲爱的顾客送你劳斯莱斯1000元抵扣劵");
} else if (totalPrice >= 500) {
System.out.println("亲爱的顾客送你一包价值两块五的卫龙");
} else if (totalPrice >= 200) {
System.out.println("亲爱的顾客送你价值100元的商品抵用卷");
} else {
System.out.println("亲爱的顾客祝你生活愉快");
}
}
}
条件匹配, 执行 else 中的备选处理方式。
if else-if 分支结构执行完成,继续执行之后的代码
*/
public class Demo5 {
public static void main(String []args) {
int totalPrice = 500;
if (totalPrice >= 2000) {
System.out.println("亲爱的顾客本店送给你了");
} else if (totalPrice >= 1000) {
System.out.println("亲爱的顾客送你劳斯莱斯1000元抵扣劵");
} else if (totalPrice >= 500) {
System.out.println("亲爱的顾客送你一包价值两块五的卫龙");
} else if (totalPrice >= 200) {
System.out.println("亲爱的顾客送你价值100元的商品抵用卷");
} else {
System.out.println("亲爱的顾客祝你生活愉快");
}
}
}