Java基础(3)-运算符、标识符、进制

运算符

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

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

正号、负号、加减乘除、取模(取余)、自增前(先运算后取值)、自增后(先取值再运算)、自减前后同理、字符串相加

System.out.println(10 / 4);------------->2

System.out.println(10.0 / 4);------------->2.5

double d = 10 / 4;

System.out.println(d);-------------->2.0

取模%的本质:a % b = a - a / b * b;当 a 是小数时,公式 = a - (int)a / b * b

int i = 1; i = i++; System.out.println(i);------------->结果为1

(1)使用临时变量temp = i;(2)i = i + 1;(3)i = temp

int i = 1; i = ++i; System.out.println(i);------------->结果为2

(1)使用临时变量i = i + 1;(2)temp = i;(3)i = temp

关系运算符
  • 关系运算符的结果都是boolean型,要么是true,要么是false
  • 关系表达式经常用在if结构的条件中或者循环结构的条件中

== != < > <= >= instanceof(检查是否是类的对象)

注意事项

  1. 关系运算符组成的表达式,我们称为关系表达式,a>b
  2. 比较运算符“==”不能误写成“=”
逻辑运算符

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

  • 短路与 &&,短路或||,取反!
  • 逻辑与&,逻辑或|,逻辑异或^
aba&ba&&ba|ba||b!aa^b
TTTTTTFF
TFFFTTFT
FTFFTTTT
FFFFFFTF

&& 和 & 使用区别

  1. &&短路与:如果第一个条件为false,则第二个条件不会判断,最终结果为false,效率高
  2. 逻辑与&:不管第一个条件是否为false,第二个条件都要判断,效率低
  3. 开发中,我们使用的基本上是短路与&&,效率高

||和|使用区别

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

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

  3. 开发基本用||

对于x++==6,正确方式是先比较再自增

赋值运算符

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

  • 基本赋值运算符
  • 复合赋值运算符,比如+=、-=、*=、/=、%=等

注意事项

  1. 运算顺序从右往左 int num = a + b + c;
  2. 赋值运算符的左边只能是变量,右边可以是变量、表达式、常量值(int num = 20; int num2 = 78 * 34 - 10; int num3 = a)
  3. 复合赋值运算符等价于下面的效果,比如:a+=3等价于a=a+3;
  4. 复合赋值运算符会进行类型转换,byte b = 2;b+=3;b++

对于byte b = 3; b += 2;该语句不是等同于b = b + 2;而是等同于b = (byte)(b + 2);所以不会报错;同理b++相当于b = (byte)( b + 1)

三元运算符

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

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

注意细节

  • 表达式1和表达式2要为可以赋给接收变量的类型(或可以自动转换)
  • 三元运算符可以转成if----else语句
运算符的优先级
  1. (){}等
  2. 单目运行 ++ –
  3. 算术运算符
  4. 位移运算符
  5. 比较运算符
  6. 逻辑运算符
  7. 三元运算符
  8. 赋值运算符

标识符

标识符的命名规则(法律)和规范(道德)

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

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

规则

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

规范

  1. 包名:多单词组成时所有字母都小写;
  2. 类名、接口名:多单词组成时,所有单词的首字母大写
  3. 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写(小驼峰、驼峰法);
  4. 常量名:所有字母都大写。多单词时每个单词用下划线连接;

关键字

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

关键字中所有字母都为小写

保留字

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

键盘输入语句

在编程中,需要接收用户输入的数据,就可以使用键盘输入语句来获取。

Input.java需要一个扫描器(对象),就是Scanner

步骤

  1. 导入该类的所在包,java.util.* import java.util.Scanner;
  2. 创建该类对象(声明变量) Scanner myScanner = new Scanner (System.in);//System.in表示从键盘输入
  3. 调用里面的功能 String name = mySanner.next();

进制

  • 二进制。0,1,满2进1,以0b或0B开头
  • 十进制,0~9,满10进1
  • 八进制,0~7,满8进1,以0开头
  • 十六进制,09及A(10)F(15),满16进1,以0x或0X开头,字母不区分大小写
其他进制转十进制

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

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

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

十进制转其他进制

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

34除以2=17 余数0

17除以2=8 余数1

8除以2=4 余数0

4除以2=2 余数0

2除以2=1 余数0

1除以2=0 余数1 0B00100010

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

131除以8=16 余数3

16除以8=2 余数0

2除以8=0 余数2 0203

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

其他进制相互转换

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

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

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

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

位运算

  • ~2 按位取反
  • 2&3 按位与
  • 2|3 按位或
  • -3^3 按位异或

二进制是逢2进位的进位制,0,1是基本算符。

原码、反码、补码
  1. 二进制的最高位是符号位,0表示正数,1表示负数
  2. 正数的原码、反码、补码都一样(三码合一)
  3. 负数的反码=它的原码符号位不变,其他位取反
  4. 负数的补码=它的反码+1,负数的反码=负数的补码-1
  5. 0的反码、补码都是0
  6. Java没有无符号数,换言之,Java中的数都是有符号的
  7. 在计算机运算时,都以补码的方式来运算
  8. 当我们看运算结果时候,要看他 的原码

引入补码的目的:将0统一,并将二进制的运算符合十进制的运算规则

位运算符
  • Java中有7个位运算(&、|、^、~、>>、<<和>>>)
  • 运算**(原码变补码,计算结果,再转换成原码)**
  • 算术右移>>:低位溢出,符号位不变,并用符号位补溢出的高位
  • 算术左移<<:符号位不变,低位补0
  • 逻辑右移>>>也叫无符号右移,运算规则是低位溢出,高位补0
  • 没有<<<符号

左移n位相当于原来的数值乘以2的n次方,右移n位相当于原来的数值除以n次2

重点:有小数参与运算的可能是近似值,对小数参与的计算进行相等判断时,最好是根据精度来计算,即两个数的差值在一个很小的范围内。

在一个数的末尾加上d,代表它是double型

int i = 48;char ch = i + 1;是错误的,因为char类型可以保存int的常量值,但不能保存int的变量值,需要强转;

byte b = 19; short s = b + 2;是错误的,因为b + 2结果是int 型,强行赋值给了short型

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值