Java---第二章(运算符,标识符,Scanner,进制转换)

在这里插入图片描述

一 运算符

运算符是一种特殊符号,用以表示数据的计算、赋值和比较等

  • 算术运算符
  • 赋值运算符
  • 关系运算符(比较运算符)
  • 逻辑运算符
  • 位运算符(需要二进制基础)
  • 三元运算符

算术运算符

在这里插入图片描述
除法举例:(易混)

public class study {
    public static void main(String[] args){
        System.out.println(5/2); //2
        System.out.println(5.0/2);//2.5
        double a = 5/2;
        System.out.println(a);//2.0
    }
}

解释:
5/2:都为整型,运行结果也为整型
5.0/2:前者为浮点型,运行结果也为浮点型
double a = 5/2:先计算5/2得2,再变为double类型,加上小数点

+= *= -+这些具有强制类型转换的功能

取模的使用:(易混)
公式:a % b = a - b / b * b

public class study {
    public static void main(String[] args){
        System.out.println(10%3);//1
        System.out.println(-10%3);//-1
        System.out.println(10%-3);//1
        System.out.println(-10%-3);//-1
    }
}

自增自减(易混)

public class study {
    public static void main(String[] args){
        int i = 8;
        int k = i++;
        System.out.println("k=" + k + "i=" + i);
    }
}

k=8
i=9

简单记忆法:++在后,先用再+;++在前,先+后用

面试题
第一题:
i=i++

public class study {
    public static void main(String[] args){
        int i = 1;
        i=i++;
        System.out.println(i);
    }
}

答案为1
解释:

  • 创建一个中间值(假设为temp)先存储 i 的值
  • 执行 i = i + 1
  • 再执行 i = temp
  • i = 1

第二题:
i=++i

public class study {
    public static void main(String[] args){
        int i = 1;
        i=++i;
        System.out.println(i);
    }
}

答案为2
解释:

  • 执行 i = i + 1
  • 创建一个中间值(假设为temp)先存储 i 的值
  • 再执行 i = temp
  • i = 2

赋值运算符

就是将某个运算的值赋给指定的变量
基本赋值运算符:

=

符合赋值运算符

+=
-=
*=
/=
%=

以+=为例,其他亦是如此

         a += b;        ----->     a = a + b;

关系运算符

关系运算符的结果都是boolean型,也就是true或者false
关系表达式经常用在if结构的条件中或循环结构的条件中
在这里插入图片描述注意:== 和 =

逻辑运算符

用于连接多个条件(多个表达式),最终的结果也是一个boolean值
在这里插入图片描述
说明逻辑运算规则:

  • 1.a&b:&叫逻辑与:规则:当a和b同时为true,则结果为true,否则为false
  • 2.a&&b:&&叫短路与:规则:当a和b同时为true,则结果为true否则为false
  • 3.ab:叫逻辑或,规则:当a和b,有一个为true,则结果为true,否则为false
  • 4.ab:叫短路或,规则:当a和b,有一个为true,则结果为true,否则为false
  • 5.!a:叫取反,或者非运算。当a为true,则结果为false当a为false是,结果为true
  • 6.a^b:叫逻辑异或,当a和b不同时,则结果为true,否则为false

注意:&& 和 & 的区别

&& 短路与:如果第一个条件为false,则第二个条件不会判断,最终结果为false,效率高

& 逻辑与:不管第一个条件是否为false,第二个条件都要判断,效率低

开发中,我们基本上使用&&短路与,效率高

注意:|| 和 | 的区别

|| 短路或:如果第一个条件为true,则第二个条件不会判断,最终结果为true,效率高

| 逻辑或:不管第一个条件是否为true,第二个条件都要判断,效率低

三元运算符

基本语法:

条件表达式?表达式1:表达式2;

若条件表达式为true,则运算后结果为表达式1
反之则运算后结果为表达式2

举例:

public class study {
    public static void main(String[] args){
        int a = 10;
        int b = 99;
        int result = a > b ? a++ : b--;
        System.out.println(result);
    }
}

运行结果为:

99

解释:
a=10,b=99,
a>b为假,则结果为b–

小细节:

  • 表达式1和表达式2要为可以赋值给接收变量的类型(或可以自动转换)
        int a = 10;
        int b = 99;
        int c = a > b ? 1.1 : 2.2;// 报错
        System.out.println(c);

修改为:

        int a = 10;
        int b = 99;
        int c = a > b ? int(1.1) : int(2.2);
        System.out.println(c);

这里主要也是数据类型那方面的知识

  • 三元运算符可以转为if-else语句
        int res = a > b ? a++ : --b;

上下代码含义相同

        if(a > b)
        {
            res = a++;
        }
        else:
        {
            res = --b;
        }

练习:求三个数的最大值

public class study {
    public static void main(String[] args){
        int a = 10;
        int b = 99;
        int c = 100;
        int max = (a > b ? a : b) >c ?  (a > b ? a : b) : c;
        System.out.println(max);
    }
}

运算符的优先级

在这里插入图片描述
优先级顺序为:

  • (),{}等
  • 单目运算符:++
  • 算术运算符
  • 位移运算符
  • 比较运算符
  • 逻辑运算符
  • 三元运算符
  • 赋值运算符

二 标识符

概念:

  • Java对各种变量,方法和类等的命名时使用的字符序列称为标识符
  • 凡是自己起名字的地方都是标识符(int num = 90)

规则:(必须遵守)

  • 由26个英文字母大小写,0~9,_或$组成
  • 数字不可以开头(int 3b = 1;)
  • 不可以使用关键字和保留字,但能包含关键字和保留字
  • Java中严格区分大小写,长度无限制
  • 标识符能包含空格

规范:(更加专业)

  • 包名:多单词组成时所有字母都小写:aaa.bbb.ccc//比如:com.hsp.crm
  • 类名,接口名:多单词组成时,所有单词首字母大写,比如:TankShort【大驼峰】
  • 变量名,方法名:多个单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写,比如:tankShort【小驼峰,简称驼峰法】
  • 常量名:所有字母都大写。多个单词用下划线_:TAX_RATE

关键字

在这里插入图片描述
在这里插入图片描述

保留字

Java保留字:现有Java版本尚未使用,但以后版本可能会作为关键字使用,自己命名标识符时要避免使用这些保留字

  • byValue
  • cast
  • future
  • generic
  • inner
  • operator
  • outer
  • rest
  • var
  • goto
  • const

三 控制台接收键盘输入:Scanner

在编程中,需要接收用户输入的数据,就可以使用键盘输入语句来获取。
input.java,需要一个扫描器(对象),就是Scanner

步骤:

  • 导入该类的所在包,java.util.*
  • 创建该类的对象(声明变量)
  • 调用里面的功能

举例:

import java.util.Scanner;//表示把java.util下的Scanner类导入
public class study {
    public static void main(String[] args){
        Scanner myScanner = new Scanner(System.in);
        System.out.println("请输入姓名:");
        String name = myScanner.next();
        System.out.println("请输入年龄");
        int age = myScanner.nextInt();
        System.out.println("请输入薪水");
        double sal = myScanner.nextDouble();
        System.out.println("该人的信息如下:");
        System.out.println("名字:" + name + "\n" + "年龄:" 
        + age + "\n" + "薪水:" + sal);
    }
}

请输入姓名:
汴京城下君
请输入年龄
20
请输入薪水
9600
该人的信息如下:
名字:汴京城下君
年龄:20
薪水:9600.0

四 进制

进制的介绍:

  • 二进制: 0,1。满2进1,以0b或者0B开头
  • 十进制:0~9。满10进1。
  • 八进制: 0~7。满8进1,以数字0开头表示
  • 十六进制: 0~9以及A(10)到F(15)。满16进1,以0x或者0X开头表示,此处的A到F不区分大小写

在这里插入图片描述

进制的转换(基本功

其他进制转为十进制

二进制转为十进制
规则:
从最低位(右边)开始,将每个位上的数提取出来,乘以2的(位数-1)次方,然后求和
案例:
将0b1011转为十进制
在这里插入图片描述

八进制转为十进制
规则:
从最低位(右边)开始,将每个位上的数提取出来,乘以8的(位数-1)次方,然后求和

十六进制转为十进制
规则:
从最低位(右边)开始,将每个位上的数提取出来,乘以16的(位数-1)次方,然后求和

十进制转为其他进制

十进制转为二进制
规则:
将该数不断除以2,直到商为0为止,然后将每步得到的余数倒过来,就是对应的二进制
案例:
将34转为对应二进制---->0b00100010
(一个字节占八位,只得到六位,还要用两个0填充高位)
在这里插入图片描述十进制转为八进制
规则:
将该数不断除以8,直到商为0为止,然后将每步得到的余数倒过来,就是对应的八进制

十进制转为十六进制
规则:
将该数不断除以16,直到商为0为止,然后将每步得到的余数倒过来,就是对应的十六进制

二进制转为其他进制

二进制转为八进制
规则:
从低位开始,将二进制数每三位一组,转成对应的八进制即可
案例:
将0b11010101转为八进制
在这里插入图片描述
二进制转为十六进制
规则:
从低位开始,将二进制数每四位一组,转成对应的十六进制即可

其他进制转为二进制

八进制转为二进制
规则:
将八进制数每一位,转成对应的一个3位的二进制数即可
案例:
将0237转成二进制
在这里插入图片描述

十六进制转为二进制
规则:
将十六进制数每一位,转成对应的一个4位的二进制数即可

原码,反码, 补码

  • 二进制的最高位是符号位:0表示正数,1表示负数
  • 正数的原码,反码,补码都一样(三码合一
  • 负数的反码 = 它的原码符号位不变,其他位取反(0->1,1->0)
  • 负数的补码 = 它的反码+1。负数的反码 = 负数的补码-1
  • 0的反码,补码都是0
  • java没有无符号数,换言之,java中的数都是有符号的
  • 计算机运算的时候,都是以补码的方式来运算的
  • 当我们看运算结果的时候,要看它的原码

位运算

在这里插入图片描述
在这里插入图片描述

        System.out.println(4 << 3); // 4*2*2*2 = 32
        System.out.println(15 >> 2);// 15/2/2 = 3
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

汴京城下君

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

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

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

打赏作者

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

抵扣说明:

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

余额充值