java学习笔记——03运算符

一、运算符介绍

  • 运算符介绍

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

    1.算术运算符

    2.赋值运算符

    3.关系运算符[比较运算符]

    4.逻辑运算符

    5.位运算符[需要二进制基础]

    6.三元运算符

二、算术运算符

  • 介绍

    算术运算符是对数值类型的变量进行运算的,在Java程序中使用的非常多。

  • 算术运算符一览

    运算符运算范例结果
    +正号+77
    -负号b=11;-b-11
    +9+918
    -10-82
    *7*856
    /9/91
    %取模(取余)11%92
    ++自增(前):先运算后取值a=2;b=++a;a=3;b=3
    ++自增(后):先取值后运算a=2;b=a++;a=3;b=2
    - -自减(前):先运算后取值a=2;b=- -a;a=1;b=1
    - -自减(后):先取值后运算a=2;b=a- -;a=1;b=2
    +字符串相加“sp”+“ssr”spssr

三、关系运算符

  • 介绍

    1.关系运算符的结果都是boolean型,也就是要么是true,要么是false

    2.关系表达式经常用在if结构的条件中或循环结构的条件中

  • 关系运算符一览

    运算符运算范例结果
    ==相等于8==7false
    !=不等于8!=7true
    <小于8<7false
    >大于8>7true
    <=小于等于8<=7false
    >=大于等于8>=7true
    instanceof检查是否是类的对象"hsp"instanceof Stringtrue

    ps:一个等号是赋值,两个等号表示相等

四、逻辑运算符

  • 介绍

    用于连接多个条件(多个关系表达式),最终的结果也是一个boolean值,

  • 逻辑运算符一览

    逻辑与短路与逻辑或短路或取反逻辑异或
    aba&ba&&ba|ba||b!aa^b
    truetruetruetruetruetruefalsefalse
    truefalsefalsefalsetruetruefalsetrue
    falsetruefalsefalsetruetruetruetrue
    falsefalsefalsefalsefalsefalsetruefalse
  • 说明逻辑运算规则:

    1. a&b:&叫逻辑与:当a和b同时为true ,则结果为true,否则为false

    2. a&&b : &&叫短路与:当a和b同时为true ,则结果为true,否则为false

    3. a|b:|叫逻辑或:当a和b,有一个为true ,则结果为true,否则为false

    4. a||b:||叫短路或,规则:当a和b,有一个为true ,则结果为true,否则为false

    5. !a: ! 叫取反,或者非运算。当a 为true,则结果为false,当a为false是,结果为true

    6. ab:叫逻辑异或,当a和b 不同时,则结果为true,否则为false

  • &&与&的区别:

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

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

    3.开发中,我们使用的基本是短路与&&,效率高

  • ||与|的区别

    1)||短路或:如果第一个条件为true,则第二个条件不会判断,最终结果为true,效率高2)|逻辑或:不管第一个条件是否为true,第二个条件都要判断,效率低
    3)开发中,我们基本使||

  • instanceof运算符
    其左边的操作元是一个对象,右边是一个类。当左边的对象是右边的类或子类创建的对象时,该运算符的结果为true,否则为false。

五、赋值运算符

  • 介绍

    赋值运算符就是将某个运算后的值,赋给指定的变量。

  • 赋值运算符的分类

    • 基本赋值运算符=

    • 复合赋值运算符

      +=, -=,*=,/=,%=等

      a+=b;//等价于a=a+b;
      
  • 赋值运算符特点
    1)运算顺序从右往左

    int num = a+b+c;
    

    2)赋值运算符的左边只能是变量,右边可以是变量、表达式、常量值

    int num1 = 20;
    int num2 = 78*34 -10;
    int num3 = a;
    

    3)复合赋值运算符等价于下面的效果

    a+=3;//等价于a=a+3;
    

    4)复合赋值运算符会进行类型转换。

    byte b = 2; 
    b+=3; //b=(byte)(b+2);
    b++;
    

六、三元运算符

  • 基本语法

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

  • 运算规则:

    1.如果条件表达式为true,运算后的结果是表达式1;

    2.如果条件表达式为false,运算后的结果是表达式2;

    int a = 10;
    int b = 99;
    int result = a > b ? a++:b--;//99
    
  • 使用细节
    1.表达式1和表达式2要为可以赋给接收变量的类型(或可以自动转换)

    2.三元运算符可以转成if–else语句

七、运算符优先级

运算符优先级
1.运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。如下表,上一行运算符总优先于下一行。同级按从左到右的顺序,只有单目运算符、赋值运算符是从右向左运算的。

2.梳理小结:小伙伴有一个大致印象,使用多了,就熟悉
1)(),{}等

2)单目运行+±-

3)算术运算符

4)位移运算符

5)比较运算符

6)逻辑运算符

7)三元运算符

8)赋值运算符

. () {} : ,
R->L++ – ~ !
L->R* / %
L->R+ -
L->R<< >> >>>(位移)
L->R< > <= >= instanceof
L->R== !=
L->R&
L->R^
L->R|
L->R&&
L->R||
L->R? :
R->L= *= /= %=
+= -= <<= >>=
>>>= &= ^= |=

八、标识符的命名规则和规范

  • 标识符概念

    1. Java 对各种变量、方法和类等命名时使用的字符序列称为标识符

    2. 凡是自己可以起名字的地方都叫标识符

  • 标识符的命名规则(必须遵守)

    1. 由26个英文字母大小写,0-9,或$组成

    2. 数字不可以开头。

    3. 不可以使用关键字和保留字,但能包含关键字和保留字。

    4. Java中严格区分大小写,长度无限制。

    5. 标识符不能包含空格。

  • 标识符命名规范[更加专业]

    1. 包名:多单词组成时所有字母都小写:aaa.bbb.ccc //比如com.hsp.crm
    2. 类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz[大驼峰]
      比如: TankShotGame
    3. 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个
      单词首字母大写:xxxYyyZzz[小驼峰,简称驼峰法]
      比如:tankShotGame
    4. 常量名:所有字母都大写。多单词时每个单词用下划线连接: XXx_YYY_ZZZ
      比如:定义一个所得税率TAX_RATE
    5. 后面我们学习到类,包,接口,等时,我们的命名规范要这样遵守,更加详细的
      看文档.
  • 关键字的定义和特点(不用背)

    定义:被Java语言赋予了特殊含义,用做专门用途的字符串(单词)

    特点:关键字中所有字母都为小写

    1.用于定义数据类型的关键字

    关键字
    classinterfaceenumbyte
    shortintlongfloat
    doublecharbooleanvoid

    2.用于定义数据类型值的关键字

    关键字
    truefalsenull

    3.用于定义流程控制的关键字

    关键字
    ifelseswitchcase
    defaultwhiledofor
    breakcontinuereturn

九、键盘输入语句

  • 介绍

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

  • 步骤:

    1)导入该类的所在包, java.util.*

    2)创建该类对象(声明变量)

    3)调用里面的功能

import java.util.Scanner; //表示把java.util下的Scanner类导入
public class Vare1 {
    //编写一个main方法
    public static void main(String[] args) {
        //步骤1:导入/引入 Scanner类所在的包
        //步骤2:创建Scanner类的对象,new创建一个对象,
        Scanner input = new Scanner(System.in);
        //步骤3:调用里面的功能
        System.out.println("请输入姓名:");
        String name = input.next();//这个比较特殊一些直接用next()
        System.out.println("请输入年龄:");
        int age = input.nextInt();//其他的都是这个格式的,以此类推即可
        System.out.println("请输入成绩:");
        double score = input.nextDouble();
        System.out.println( "name:"+name);
        System.out.println( "age:"+age);
        System.out.println( "score:"+score);

    }
}

十、进制

  • 进制介绍

    对于整数,有四种表示方式:

    1. 二进制:0,1,满2进1.以0b或0B开头。

    2. 十进制:0-9,满10进1。

    3. 八进制:0-7,满8进1.以数字0开头表示。

    4. 十六进制:0-9及A(10)-F(15),满16进1.以0x或0X开头表示。此处的A-F不区分大小写

  • 进制的图示

    十进制十六进制八进制二进制
    0000
    1111
    22210
    33311
    444100
    555101
    666110
    777111
    88101000
    99111001
    10A121010
    11B131011
    12C141100
    13D151101
    14E161110
    15F171111
    16102010000
    17112110001
  • 进制的转换
    (一)

    1.二进制转十进制

    规则:从最低位(右边)开始,将每个位上的数提取出来,乘以2的(位数-1)次方,然后求和。

    案例:0b1011=1* 2^(1-1)+1 *2^(2-1)+0 *2^(3-1)+1 *2^(4-1)=1+2+0+8=11

    2.八进制转十进制

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

    案例:0234=4 *8^0 + 3 *8^1 + 2 *8^2=4+24+128=156

    3.十六进制转十进制

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

    案例:0x23A=10 *16^0 + 3 *16^1 + 2 *16^2=10+48+512=570

    (二)

    1.十进制转二进制

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

    案例:34=0B00100010(八个字节所以补两个0)

    2.十进制转八进制

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

    案例:131=0203

    3.十进制转十六进制

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

    案例:237=0xED

    (三)
    1.二进制转八进制

    规则:从低位开始,将二进制数每三位一组,转成对应的八进制数即可。

    案例:0b11010101=0b11(3)010(2)101(5)=0325

    2.二进制转十六进制

    规则:从低位开始,将二进制数每四位一组,转成对应的十六进制数即可。

    案例:0b11010101=0b1101(D)0101(5)=D5

    第四组
    1.八进制转二进制

    规则:将八进制数每1位,转成对应的一个3位的二进制数即可。

    案例:0237=02(010)3(011)7(111)=0b010011111

    2.十六进制转二进制

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

    案例:0x23B=0x2(0010)3(0011)B(1011)=0b001000111011

  • 原码、反码、补码(重点难点)

    对于有符号的而言:
    1.二进制的最高位是符号位:0表示正数,1表示负数(口诀:0->0,1->-)

    2.正数的原码,反码,补码都一样(三码合一)

    3.负数的反码=它的原码符号位不变,其它位取反(0->1,1->0)

    4.负数的补码=它的反码+1,负数的反码=负数的补码-1

    5.0的反码,补码都是0

    6.java没有无符号数,换言之,java中的数都是有符号的

    7.在计算机运算的时候,都是以补码的方式来运算的.

    8.当我们看运算结果的时候,要看他的原码

  • java中有7个位运算(&、|、^、~、>>、<<和>>>)

    分别是按位与&、按位或|、按位异或^、按位取反~,它们的运算规则是:

    按位与&:两位全为1,结果为1,否则为0

    按位或|:两位有一个为1,结果为1,否则为0

    按位异或^:两位一个为0,一个为1,结果为1,否则为0

    按位取反~:0->1,1->0

    算术右移>>:低位溢出,符号位不变,并用符号位补溢出的高位

    算术左移<<:符号位不变,低位补0

    逻辑右移/无符号右移>>>:低位溢出,高位补04

    特别说明:没有<<<符号

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值