运算符
算术运算符 : +,-,*,/,%,++,-- 赋值运算符 关系运算符 逻辑运算符 三元运算符
++,--运算符
++,--运算符 : 变量做+1/-1操作 运算法则: 1. 变量的值做+1/-1操作 2. 变化后的值重新赋值给原变量 注意事项: 1. ++,-- 只能和变量一起使用,不可以和常量一起使用 例如: a++,b-- 不可以 -> 10++ 2. ++,--可以放在变量的前面或者变量的后面 a. 单独使用时: ++,-- 放在变量的前后对运算结果没有影响 b. 参与其他运算时 : ++,-- 在变量的前面, 先自增或者自减再参与运算 ++,-- 在变量的后面, 先参与运算再自增或者自减 ++,-- 单独使用的情况是最多的,极少情况会使用参与运算的自增/自减法则!
赋值运算符
= : 把=号右边的值赋值给左边的变量 例如: int a = 10; -> 把10赋值给int类型的变量a 拓展的赋值运算符: +=,-=,*=,/=,%= -> 拓展的赋值运算符隐含了强制类型转换 展开式 : a += 值; ==> a = (a的数据类型)(a + 值);
关系运算符
关系运算符 : ==,!=,>,>=,<,<= 注意事项: 1. 关系运算符连接起来的式子叫关系表达式! 2. 关系表达式的结果一定是boolean类型的 3. 不要把==写成了=
逻辑运算符
逻辑运算符 : 连接关系表达式的 分类: &: 逻辑与 -> 并且 有false则为false |: 逻辑或 -> 或者 有true则为true !: 逻辑非 -> 取反 true则false,false则true ^: 逻辑异或 -> 中国的领结婚证关系 相同则为false,不同则为true 0 < a < 10 -> a > 0 & a < 10; a < 0 或者 a > 10 -> a < 0 | a > 10; 拓展的逻辑运算符: &&:有false则为false -> 短路效果: 左边为false,右边的表达式 不执行! ||:有true则为true -> 短路效果: 左边为true,右边的表达式 不执行! 注意: 1. 逻辑表达式的结果也一定是boolean类型 2. 只要用到逻辑与和逻辑或,请使用逻辑双与和双或
二进制的逻辑运算和位移运算
//二进制的逻辑运算 : 0 认为是false 1 认为是true System.out.println(3 & 5);//1 00000000 00000000 00000000 00000011 --> 3 & : 有false则为false 00000000 00000000 00000000 00000101 --> 5 ------------------------------------------------ 00000000 00000000 00000000 00000001 --> 1 System.out.println(3 | 5);//7 00000000 00000000 00000000 00000011 --> 3 | : 有true则为true 00000000 00000000 00000000 00000101 --> 5 ------------------------------------------------ 00000000 00000000 00000000 00000111 --> 7 System.out.println(3 ^ 5);//6 00000000 00000000 00000000 00000011 --> 3 ^ : 相同则为false,不同则为true 00000000 00000000 00000000 00000101 --> 5 ------------------------------------------------ 00000000 00000000 00000000 00000110 --> 6 二进制中的位移运算 : 右位移>>,左位移<< //二进制的位移运算 //右位移>> 一定是变小 System.out.println(8 >> 1);//4 00000000 00000000 00000000 00001000 --> 8 000000000 00000000 00000000 0000100|0 -> 右位移: 往右边移动几位 结果是 : 4 //左位移<< 一定是变大 System.out.println(8 << 1);//16 00000000 00000000 00000000 00001000 --> 8 0|0000000 00000000 00000000 000010000 --> 左位移: 往左边移动几位 结构是 : 16 1.
三元运算符(掌握)
元 : 板块,元素 一元运算符 : ++,--,! 二元运算符 : 大部分运算符都是二元运算符 三元运算符 : 格式: 结果的数据类型 变量名 = 结果为boolean类的式子 ? 结果1 : 结果2; 执行流程: 1. 计算结果为boolean类型式子的结果 2. 如果结果是true,整个三元的结果是 结果1 3. 如果结果是false,整个三元的结果是 结果2 解决的问题: 求2个数的较大值,求3个数的较大值
键盘录入功能(掌握)
键盘录入功能 : Scanner 键盘录入功能的类 -> 此类的对象可以完成键盘录入功能 使用步骤: 1. 导包 : 从JDK中把此类导入到自己的代码中 import java.util.Scanner; //写在类的上面,package下面 //使用IDEA开发,IDEA自动导包!! 2. 创建对象 : Scanner 对象名 = new Scanner(System.in);//对象名 : 可以由程序员自己取名字 -> sc 2.5 : 提示用户行为 3. 接收录入的整数 : int 变量名 = 对象名.nextInt(); //变量名: 可以由程序员自己取名字 //定义一个int类型的变量来接收录入的一个整数 注意: 1. 键盘录入需要用户配合 2. 录入整数就只能接收整数 InputMismatchException : 输入不匹配异常 3. 如果要多次录入,只需要多次使用对象调方法即可,不需要重复创建对象 -> 对象可以重复使用
流程控制
1. 顺序结构 2. 分支结构 switch if..else if..else 3. 循环结构 for while do..while
顺序结构
顺序结构: 从main方法进入,从上至下,从左至右执行代码 (小括号的优先级最高) 从左至右 : 在等号的右边从左至右 int sum = a + b;
分支结构
分支结构 : 代码出现了岔路口,需要做选择,选哪一条路走; 已经学过的分支结构 : 三元运算符 分支结构执行完毕一定会执行分支结构后方的代码
switch语句(理解)
switch : 分支,开关 格式 : switch(表达式){ case 值1 : 语句体1; break; case 值2 : 语句体2; break; case 值3 : 语句体3; break; ....... default : 语句体n+1; break; } 格式解释: switch : 代表switch分支结构 表达式 : 只能填 byte,short,char,int,String,枚举对象 以上类型之一的变量/常量值 //绝大多数情况这个表达式填写的是变量!! //自己记忆的话 : 整数int 和 字符串 String case : 事件,情况 -> 有多少case就代表有多少种情况(分支) 值 : 必须是常量值 , 此常量值必须和表达式的类型一致! 语句体 : 当表达式的结果和case后的值匹配后需要执行的代码 //此语句体可以是多句代码 break : 中断,结束 -> 结束switch语句 default : 默认的,缺省的 当所有的case后的值和表达式结果都不匹配,若有default语句,执行default语句中的语句体n+1; //兜底 执行流程: 1. 计算switch小括号内表达式的结果 2. 从上至下依次和case后面的值进行匹配 -> 匹配 : 做全等(表达式的结果 == 值)比较 3. 如果结果是true,进入当前case中执行case中的语句体,遇到break立刻结束switch语句 4. 如果所有的case与表达式的结果都不匹配,若有default语句,执行default语句中的语句体n+1; case穿透现象 : 当执行case中的语句体没有遇到break,那么会出现击穿效果,直接执行下方case中的语句体,直到遇到break或者switch的反括号结束switch语句 //弊大于利 : 写switch记得写break!!
if语句(重点)
if : if 语句 -> 假如,假设 if 的第一种格式: if(结果为boolean类型的表达式){ 语句体; } //if后方代码 执行流程: 1. 计算if小括号内表达式的结果 2. 如果结果是true,执行if大括号内的语句体; 3, 如果结果是false.结束if语句,执行if结构后方的其他代码 if的第一种格式是对一种情况的判断操作! 伪代码 : if(小丽来不来){ //小丽来的时候才能执行大括号内的代码 去小树林走走; } if 的第二种格式: if(结果为boolean类型的表达式){ 语句体1; }else{ 语句体2; } //if后方代码 执行流程: 1. 计算if小括号内表达式的结果 2. 如果结果是true,执行if大括号内的语句体1; 3. 如果结果是false,执行else大括号内的语句体2; 4. 执行if后方的代码 if的第二种格式是对两种情况的判断操作! 伪代码 : if(小丽来不来){ //小丽来的时候能执行的代码 去小树林走走; }else{ //小丽不来的时候能执行的代码 约小丽闺蜜小红; } if的第三种格式 : 完整版if格式 if(结果为boolean类型的表达式1){ 语句体1; }else if(结果为boolean类型的表达式2){ 语句体2; }......这里可以有很多else if else{ 语句体n+1; } 执行流程: 1. 计算表达式1的结果,如果为true执行语句体1; 2. 如果表达式1的结果是false,计算表达式2的结果,如果为true执行语句2; 3. 如果表达式2的结果是false,继续计算下方if小括号内的其他表达式 ...... 4. 如果所有的if判断结果都是false,如果有else结构执行else结构中的语句体n+1 if的第三种格式是对三种及以上的情况进行的判断操作! 伪代码 : if(小丽来不来){ //小丽来的时候能执行的代码 去小树林走走; }else if(小丽的男朋友来了?){ 一起去打LOL; }else if(小丽的闺蜜小红带着她的闺蜜来了?){ 一起去小树林走走; }else{ 约小丽闺蜜小红; } 注意: if结构可以不打大括号,但是不打大括号的if语句只能控制离他最近的那一句代码是否执行,控制不了其他代码 //现阶段写if结构必须写大括号!!
循环结构
循环结构 : 提高代码的复用性 循环结构的组成: 1. 初始化语句 : 定义一个变量,用来控制循环 -> 变量定义一次!! 2. 条件判断语句 : 本质是boolean类型结果的式子 -> 决定重复事物是否执行!! 3. 控制条件语句 (步进表达式) : 初始化语句做变化,变化的方向要往不满足循环条件的方向前进 4. 循环体语句 : 重复执行的代码
for循环结构(重点)
for循环结构格式: for( 初始化语句1;条件判断语句2;步进表达式3){ 循环体语句4; } 执行流程: 1. 执行初始化语句 2. 执行判断条件语句 -> false : 立刻结束循环 3. 若判断条件语句结果是true,执行循环体语句 4. 执行步进表达式 5 从第二步骤开始重复执行 执行流程代码: 1 -> 2 -true-> 4 -> 3 -> 2 -true-> 4 -> 3 -> .... -false-> 结束循环 -false-> 结束循环 快捷代码 : 次数.fori : 正序循环 次数.forr : 倒序循环 for循环中初始化语句定义的变量,只在循环内有效;
Debug断点调试(重点)
断点调试代码 : debug 原理让代码慢下来,按照程序员的操作一步一步的执行代码 断点调试的步骤: 1. 打断点 : 对着行号点一下 (取消再次点击一下) 在哪打? 哪里不会点哪里 (一个方法内点一个断点即可,点在可执行的代码上) 2. 断点执行 -> debug