Day03Java基础-运算符及其优先级&方法的定义及其相关问题

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虚拟机会通过参数的不同来区分同名的方法

  • 在同一个类中,定义了多个同名的方法,但每个方法具有不同的参数类型或参数个数,这些同名的方法,就构成了重载关系

  • 简单记:同一个类中,方法名相同,参数不同的方法(参数不同:个数不同、类型不同、顺序不同)

注意:识别方法之间是否是重载关系,只看方法名和参数,跟返回值无关。

方法重载的好处:不需要记忆过多繁琐的方法名字

  • 20
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码里码理~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值