1.赋值运算符
package com.itheima.operator;
public class OperatorDemo01 {
/*
赋值运算符 :
+= : 将符号左右两边的数据,做加法运算,再将结果赋值给左边
-= : 将符号左右两边的数据,做减法运算,再将结果赋值给左边
*= :
/= :
%= :
----------------------------------------------------
细节补充:
扩展赋值运算符,内部自带强转效果(隐含了强制类型转换)
short s = 1;
s = s + 1;
*/
public static void main(String[] args) {
int num = 10;
num -= 20;
System.out.println(num); //-10
short s = 1;
// s = s + 1; // 会报错
s +=1; // 等价于 s = (short)(s + 1),内部自带强转效果,不会报错
System.out.println(s); //2
double a = 12.3;
int b = 10;
b += a; // 等价于 b = (int)(10 + 12.3)
System.out.println(b); //22
}
}
2.关系运算符
注:其符号均为boolean类型
3.逻辑运算符
(单与,单非)逻辑运算符
package com.itheima.operator;
public class OperatorDemo04 {
/*
逻辑运算符:
1. 用于连接boolean类型的表达式,或者是值
2. 整合多个条件,为一段整体的逻辑
分类:
& (与) : 并且,遇false, 则false
场景: 范围性的判断查找
举例: 键盘录入一个学生成绩,判断该成绩是否是90~100之间
伪代码: 不能运行,仅供理解
| (或) : 或者,与true, 则true
场景: 多个条件任选其一
! (非) : 取反
场景: 对一段逻辑整体做取反操作
^ (异或) : 相同为false, 不同为true
*/
public static void main(String[] args) {
System.out.println(true & true);
System.out.println(true & false);
System.out.println(false & true);
System.out.println(false & false);
System.out.println("----------------------");
System.out.println(true | true);
System.out.println(true | false);
System.out.println(false | true);
System.out.println(false | false);
System.out.println("----------------------");
System.out.println(!true);
System.out.println(!false);
System.out.println("----------------------");
System.out.println(true ^ true);
System.out.println(true ^ false);
System.out.println(false ^ true);
System.out.println(false ^ false);
}
}
短路(双与,双非)逻辑运算符
package com.itheima.operator;
public class OperatorDemo05 {
/*
短路逻辑运算符 :
& : 没有短路效果,无论左边是true, false, 右边都需要继续执行
&& : 具有短路效果,左边为false,右边不执行
左边为true, 右边继续执行
| : 没有短路效果,无论左边是true, false, 右边都要继续执行
|| : 具有短路效果,左边为true,右边不执行
左边为false, 右边继续执行
------------------------------------------------------
常用的逻辑运算符: && || !
*/
public static void main(String[] args) {
int x = 3;
int y = 4;
boolean result = ++x >5 && y-- < 4;
System.out.println(x); //4
System.out.println(y); //3
System.out.println(result); //false
}
}
3.三元运算符
package com.itheima.operator;
public class OperatorDemo06 {
/*
三元运算符(三目运算符)
格式:
判断条件 ? 值1 : 值2;
执行流程
1. 执行判断条件, 看其返回结果是true, false
2. true : 值1返回最终结果
3. false : 值2返回最终结果
需求: 求两个整数的最大值
*/
public static void main(String[] args) {
int num1 = 10;
int num2 = 20;
int max = num1 > num2 ? num1 : num2;
System.out.println(max);
}
}
package com.itheima.test;
import java.util.Scanner;
public class OperatorTest1 {
/*
需求:键盘录入三个整数,求出最大值并打印在控制台
*/
public static void main(String[] args) {
// 1. 召唤Scanner键盘录入精灵
Scanner sc = new Scanner(System.in);
// 2. 指挥精灵从键盘录入三个整数
int num1 = sc.nextInt();
int num2 = sc.nextInt();
int num3 = sc.nextInt();
// 3. 计算出三个整数的最大值 - tempMax
int tempMax = num1 > num2 ? num1 : num2;
// 4. 计算出三个整数中的最大值 - tempMax 和 第三个整数进行计算
int max = tempMax > num3 ? tempMax : num3;
// 5. 将最大值打印在控制台
System.out.println("最大值为:"+ max);
}
}
4.运算符优先级
5.方法的基本定义与相关问题
定义
一段具有独立功能的代码块。
package com.itheima.method;
public class MethodDemo1 {
/*
方法(函数)介绍 :一段具有独立功能的代码块,不调用不能执行。
好处:
1. 可以将原本挤在一起的臃肿低吗,按照功能做分类管理,提高代码的可阅读性
2. 提高了代码的复用性
定义格式:
public static void 方法名 (){
方法体 (逻辑代码)
}
方法的调用格式:
方法名();
注意事项:
1. 方法与方法之间是平级关系,不允许嵌套定义
2. 方法不调用就不执行
3. 说明方法的定义顺序和执行顺序无关,要想梳理执行顺序,就看调用顺序
*/
public static void main(String[] args) {
farmer();
cook();
me();
}
public static void me(){
System.out.println("点菜");
System.out.println("吃菜");
}
public static void cook(){
System.out.println("买菜");
System.out.println("洗菜");
System.out.println("做菜");
}
public static void farmer() {
System.out.println("除草");
System.out.println("耕地");
System.out.println("播种");
System.out.println("浇水");
System.out.println("收割");
}
}
package com.itheima.test;
public class MethodTest {
public static void main(String[] args) {
getMax();
}
/*
需求:定义一个方法,方法中定义出两个整数变量,求出最大值并打印出在控制台
*/
public static void getMax(){
int num1 = 10;
int num2 = 20;
int max = num1 > num2 ? num1 : num2;
System.out.println(max);
}
}
方法调用内存图解
-
方法没有被调用的时候,在方法区中的字节码文件中存放
-
方法被调用的时候,需要进入到栈内存中运行
带参数方法的定义和调用
-
形参:全称形式参数,是指在定义方法时,所声明的参数
-
实参:全称实际参数,调用方法时,所传入的参数
带返回值方法的定义和调用
由来:我们经常会根据一个方法产出的结果,来去组织另外一段代码逻辑为了拿到这个方法产生的结果,就需要定义带有返回值的方法。
package com.itheima.test;
public class MethodTest {
public static void main(String[] args) {
int result = getMax(10,20);
System.out.println(result);
}
/*
需求:定义一个方法,方法中定义出两个整数变量,求出最大值并打印出在控制台
*/
// void : 当前方法,没有返回值
public static int getMax(int num1,int num2){
int max = num1 > num2 ? num1 : num2;
return max;
}
}
方法的通用定义格式
-
定义方法时,要做到两个明确
明确参数:主要是明确参数的类型和 数量
明确返回值类型:主要是明确方法操作完毕之后是否有结果数据
-
调用方法时
void类型的方法,直接调用
非void类型的方法,推荐用变量接受调用
方法的常见问题
-
方法与方法之间是平级关系,不允许嵌套定义
-
方法不调用就不执行
-
说明方法的定义顺序和执行顺序无关,要想梳理执行顺序,就看调用顺序
-
当方法的返回值类型为void,表示此方法没有返回值,没有返回值的方法可以省略return语句不写,如果要编写return,后面不能跟具体的数据。
-
return语句下面,不能编写代码,因为永远执行不到,属于无效代码
方法重载
定义:方法与方法之间的一种关系。
缘由:调用方法的时候,Java虚拟机会通过参数的不同来区分同名的方法
-
在同一个类中,定义了多个同名的方法,但每个方法具有不同的参数类型或参数个数,这些同名的方法,就构成了重载关系
-
简单记:同一个类中,方法名相同,参数不同的方法(参数不同:个数不同、类型不同、顺序不同)
注意:识别方法之间是否是重载关系,只看方法名和参数,跟返回值无关。
方法重载的好处:不需要记忆过多繁琐的方法名字