逻辑运算符 代码:/*
* 与 (并且) && 全部都是true,才是true:否则就是false
* 或 (或者) || 至少一个是true,就是true:全都是false,才是false
* 非 (取反) ! 本来是true,变成false:本来是false,变成true
*
* 与“&&”,或“||”,具有短路效果:如果根据左边已经可以判断得到最终结果,那么右边的代码将不再执行,从而节省一定的性能。*
* 注意事项:* 1. 逻辑运算符只能用于boolean值。* 2. 与、或需要左右各自有一个boolean值,但是取反只要有唯一的一个boolean值即可。* 3. 与、或两种运算符,如果有多个条件,可以连续写。* 两个条件: 条件A && 条件B
* 多个条件: 条件A && 条件B && 条件C
*
* TIPS:
*对于1 < x < 的情况,应该拆成两个部分,然后使用与运算符连接起来;* int x = 2;
* 1 < && x < 3
*
* */
public class Demo09Logic {
public static void main(String[] args) {
System.out.println(true &&false); // false
// true && true --> true
System.out.println(3 <4 &&10 >2); // true
System.out.println("=======");
System.out.println(true ||false); // true
System.out.println(true ||true); // true
System.out.println(false ||false); // false
System.out.println("=======");
System.out.println(true); // true
System.out.println(!true); // false
System.out.println("=======");
int a =10;
// false && ...
System.out.println(3 >4 && ++a <100); //false
System.out.println(a); // 10
int b =20;
// true || ...
System.out.println(3 <4 || ++b <100); // true
System.out.println(b); // 20
}
}
三元运算符 代码:/*
* 一元运算符: 只需要一个数据就可以进行操作的运算符。例如: 取反!、自增++、自减--
* 二元运算符: 需要两个数据才可以进行操作的运算符。例如: 加法+、赋值=
* 三元运算符: 需要三个数据才可以进行操作的运算符。*
* 格式:* 数据类型 变量名称 = 条件判断 ? 表达式A:表达式B
*
* 流程:* 首先判断条件是否成立:* 如果成立为true,那么将表达式A的值赋值给左侧的变量* 如果不成立为false,那么将表达式B的值赋值给左侧的变量:* 二者选其一*
* 注意事项:* 1. 必须同时保证表达式A和表达式B都符合左侧数据类型的要求。* 2. 三元运算符的结果必须被使用。* */
public class Demo10Operator {
public static void main(String[] args) {
int a =10;
int b =20;
// 数据类型 变量名称 = 条件判断 ? 表达式A: 表达式B;
// 判断a > 是否成立将a的值赋值给MAX;如果不成立将b的值赋值给max。二者选其一
int max = a > b ? a : b; //最大的变量
System.out.println("最大值:" + max); // 20
// int result = 3 > 4 ? 2.5 : 10; // 错误写法!
System.out.println(a > b ? a : b); // 正确写法!
// a > b ? a : b;// 错误写法!
}
}
方法入门 概述:
我们在学习运算符的时候,都为每个运算符单独的创建一个新的类和main方法,我们会发现编写代码非常的繁琐,而且重复的代码呢过多,能否避免这些重复的代码呢,就需要使用方法来实现。
方法:就是讲一个功能抽取出来,把代码单独独立定义在一个大括号内,形成一个单独的功能。
当我们需要这个功能的时候,就可以去调用。这样即实现了代码的复用性,也解决了代码冗余的现象。
方法的定义
定义格式:
修饰符 返回值类型 方法名 (参数列表) {
代码...
return;
}
定义格式解释;
1.修饰符:目前固定写法 public static。
2.返回值类型:目前固定写法 vold ,其他返回值类型载后面的课程讲解
3.方法名:为我们定义的方法起名, 满足标示符的规范,用来词用方法
代码 /*
* 定义一个方法的格式:* public static void 方法名称(){
* 方法体* }
*
* 方法名称的命名规则和变量一样,使用小驼峰* 方法体:也就是大括号当中可以包含任意条语句。*
* 注意事项:* 1. 方法定义的先后顺序无所谓* 2. 方法的定义不能产生嵌套包含关系* 3. 方法定义好了之后,不会执行的。如果要向执行,一定要进行方法的调用。*
* 如何调用方法,格式:*
* 方法名称();* */
public class Demo11Method {
public static void main(String[] args) {
// 调用方法
fanmer(); // 调用农民的方法
seller(); // 调用小商贩的方法
cook(); // 调用厨子的方法
me(); // 调用我的方法
}
//我
public static void me() {
System.out.println("我");
}
//厨子
public static void cook() {
System.out.println("洗菜");
System.out.println("切菜");
System.out.println("炒菜");
System.out.println("装盘");
}
// 小商贩
public static void seller() {
System.out.println("运输到农贸市场");
System.out.println("太高价格");
System.out.println("吆喝");
System.out.println("卖给厨子");
}
// 农民伯伯
public static void fanmer() {
System.out.println("播种");
System.out.println("浇水");
System.out.println("施肥");
System.out.println("除虫");
System.out.println("收割");
System.out.println("卖给小商贩");
}
}
JShell脚本工具
JShell脚本工具是JDK9的新特征
什么时候会用到JShell工具呢,当我们编写的代码非常少的时候,而又不愿意编写类,main方法,也不愿意去编译和行动,这个时候使用JShell工具。
启动JShell工具,在DOS命令行直接输入JShell命令。
代码1: public class Demo12Notice {
public static void main(String[] args) {
// 右侧确实是一个int数学,但是没有超过左侧的范围,就是正确的。
// int --> byte,不是自动类型转换
byte num1 =/*(byte)*/ 30; // 右侧没有超过左侧的范围
System.out.println(num1); // 30
// byte num2 = 128; // 右侧超过了左侧的范围
// int --> char,没有超过范围
// 编译器将会自动补上一个隐含的(char)
char zifu =/*(char)*/ 65;
System.out.println(zifu); // A
}
}
代码2:/*
*再给变量进行赋值的时候,如果右侧的表达式当中全都是常量,没有任何变量,*那么编译器javac将会直接将若干个常量表达式计算得到结果* short result = 5 + 8;// 等号右边全部都是常量,没有任何变量参与运算* 编译之后,得到的,class字节码文件当中相当于【直接就是】:* short result = 13;* 右侧的常量结果数值,没有超过左侧范围,所以正确。*
* 这称为“编译器的长常量优化”。*
* 但是注意:一旦表达式中有变量参与,那么就不能进行着中优化了。* */
public class Demo13Notice {
public static void main(String[] args) {
short num1 =10; // 正确写法,右侧没有超过左侧的范围
short a =5;
short b =8;
// short + short --> int + int --> int
// short result - a + b; // 错误写法! 左侧需要是int类型
// 右侧不用变量,而是采用常量,而且只有两个常量,没有别人
short result =5 +8;
System.out.println(result);
// short result2 = 5 + a + 8; // 一旦表达式中有变量参与,那么就不能进行着中优化了。
}
}
流程控制 概述
在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。也就是说,程序的流程对运行结果有直接的影响。所以,我们必须清楚每一条语句的执行流程。而且,很多时候我们要通过控制语句的执行顺序来实现我们要完成的功能。
顺序流程 代码:// 顺序结构
public class Demo01Sequence {
public static void main(String[] args) {
System.out.println("今天天气不错");
System.out.println("挺风和日丽的");
System.out.println("我们下午没课");
System.out.println("这的确挺爽的");
}
}
判断语句 代码:import org.w3c.dom.ls.LSOutput;
// 判断语句
public class Demo02If {
public static void main(String[] args) {
System.out.println("去网吧!!!");
int age =16;
if (age >=18){
System.out.println("进去嗨皮!!");
System.out.println("遇见老铁!!");
}else{
System.out.println("淡定回家");
}
}
}
if——else语句 代码:// 标准的If——else语句
public class Demo03IfElse {
public static void main(String[] args) {
int num =15;
if (num %2 ==0){//如果除以2能够余数为0,说明是偶数
System.out.println("偶数");
}else{
System.out.println("奇数");
}
}
}
扩展if-else语句 代码:// x和y的关系满足如下:
// 如果x >= 3,那么y = 2x + 1;
// 如果-1 < x < 3,那么y = 2x;
// 如果x <= -1,那么y = 2x - 1;
public class Demo04IfElseExt {
public static void main(String[] args) {
int x =10;
int y;
if (x >=3) {
y =2 * x +1;
}else if (-1 < x && x <3) {
y =2 * x;
}else {
y =2 * x -1;
}
System.out.println("结果是:" + y);
}
}
用if语句实现考试成绩 代码:public class Demo05IfElseParctise {
public static void main(String[] args) {
int score =100;
if (score >=90 && score <=100) {
System.out.println("优秀");
}else if (score >=80 && score <90) {
System.out.println("好");
}else if (score >=70 && score <80) {
System.out.println("良");
}else if (score >=60 && score <70) {
System.out.println("及格");
}else if (score >=0 && score <60) {
System.out.println("不及格");
}else {// 单独处理边界之外的不合理情况
System.out.println("数据错误");
}
}
}
用if语句代替三元运算 代码:// 题目:使用三元运算符和标准的if-else语句分别实现取两个数字当中的最大值
public class Demo06Max {
public static void main(String[] args) {
int a =105;
int b =20;
// 首先使用三元运算符
// int max = a > b ? a : b;
// 使用今天if语句
int max;
if (a > b) {
max = a;
}else {
max = b;
}
System.out.println("最大值:" + max);
}
}
标准的switch 代码: public class Demo07Switch {
public static void main(String[] args) {
int num =10;
switch (num) {
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
case 6:
System.out.println("星期六");
break;
case 7:
System.out.println("星期日");
break;
default:
System.out.println("数据不合理");
break; // 最后一个break语句可以省略,但是强烈推荐不要省略
}
}
}
穿透的switch 代码:/*
* switch语句使用的注意事项:*
* 1. 多个case后面的数值不可能重复*
* 2. switch后面小括号当中只能是下列数据类型:* 基本数据类型:byte/short/cher/int
* 引用数据类型:String字符串、enum枚举*
* 3. switch语句格式可以很灵活:前后顺序可以颠倒,而且break语句还可以省略。* “匹配哪一个case就从哪一个位置想下执行,知道遇到break或者整体结束为止。”
* */
public class Demo08SwitchNotice {
public static void main(String[] args) {
int num =2;
switch (num) {
case 1:
System.out.println("你好");
break;
case 2:
System.out.println("我好");
// break
case 3:
System.out.println("大家好");
break;
default:
System.out.println("他好,我也好");
break;
}// switch
}
}