java初学者第三天笔记

运算符

① 概念:用于变量(常量)运算的符号

② 运算符分类:

a. 算术运算符

b. 赋值运算符

c. 比较运算符

d. 逻辑运算符

e. 位运算符(进制的转换,原码、反码、补码)

f. 三元运算符

 算术运算符

符号名称运算规则备注
+加法运算,字符串拼接,表示整数如果符号的两边任意一边是字符串就是在拼接,拼接后的结果任然是一个字符串
-减法运算,表示负数
*乘法运算
/除法运算
%取余取余数余数的正负只与被除数有关;判断某个数的奇偶;取某个整数的各个位数上的数字;判断是否被整除
++自增在原有的基础上自增1符号可以在变量的前面也可以在变量的后面
- -自减在原有的基础上自减1符号可以在变量的前面也可以在变量的后面

自增自减符号位置不同时区别

① 符号可以卸载变量的两边: a++、++a、a--、--a

② 如果自增、自减作为一个独立的表达式,符号的位置在前和在后对于结果没有影响;都在实现自增或者自减

③ 如果在自增或者自减的过程中有参与了其他的运算,这个时候就需要看符号的位置

④ 符号在变量前面的时候,需要先进行自增或者自减再参与运算

⑤ 符号在变量的后面,需要先将值拿出来运算,运算完成后再进行自增或者自减

 代码演示

public class Demo {   
    public static void main(String[] args) {
        int i = 8;        
        int j = 2;        
        int x = (i++)*(++i)+(--j)*(i--)-(i++)*(--j)-(++i)*(++j);       
          System.out.println(x); // 79
        
          System.out.println(i); // 11 
      
          System.out.println(j); // 1   
    }
}

赋值运算符

符号名称运算规则
=赋值将符号右边的数据赋值给左边的变量
+=加,再赋值先进行左边两边数据加法运算,再将运算的结果赋值给符号左边的变量
-=减,再赋值先进行左边两边数据减法运算,再将运算的结果赋值给符号左边的变量
*=乘,再赋值先进行左边两边数据乘法运算,再将运算的结果赋值给符号左边的变量
/=除,再赋值先进行左边两边数据除法运算,再将运算的结果赋值给符号左边的变量
%=取余,再赋值先进行左边两边数据取余运算,再将运算的结果赋值给符号左边的变量

 比较运算符

符号名称运算规则
==等于判断符号两边的数据是否相等;如果符号两边都是基本数据类型,比较的是数据值;如果是引用数据类型,比较的是数据的地址
!=不等于
>,>=大于,大于等于只能用于能够自动转换成数字的类型进行比较,比较的是数值的大小
<,<=小于,小于等于只能用于能够自动转换成数字的类型进行比较,比较的是数值的大小

逻辑运算符

符号名称运算规则备注

&,

&&

逻辑与全真为真,否则为假&&具有短路的效果,一旦遇到条件结果为false,会直接返回结果为false,后面的条件不在计算

|,

||

逻辑或全假为假,否则为真||具有短路的效果,一旦遇到条件结果为true,会直接返回结果为true,后面的条件不在计算
!逻辑非取反

代码演示

public static void main(String[] args) {    
        int a = 5,b = 6;    
        if(a > 6 && b++ > 7){        
        System.out.println("OK");   
    }    
        System.out.println(b);//6
}


        public static void main(String[] args) {    
        int a = 5,b = 6;    
        if(a > 6 & b++ > 7){        
        System.out.println("OK");   
    }    
        System.out.println(b);//7
}

三元运算符

① 符号:? :

② 格式: 表达式1 ? 表达式2 :表达式3

③ 运算流程:

先计算表达式1,计算结果要么是true,要么是false

如果表达式1结果为true,就选择计算表达式2,并且将表达式2的结果作为三元运算最终的结果

如果表达式1结果为false,就选择计算表达式3,并且将表达式3的结果作为三元运算最终的结果

④ 注意:

表达式1,必须是 boolean 表达式;通常使用比较运算符来实现

表达式2、表达式3,没有要求类型,但是它俩必须是同一个类型

三元运算的结果需要处理,处理方式:一是直接打印(结果不需要二次使用),而是存储到新的变量中(结果可能被反复使用)

⑤ 案例:比较2个整数的大小,输出较小值;

a. 定义2个整数型变量,值任意给

int a = 10,b = 20;

b. 比较2个数的大小,使用三元运算符来选择比较的结果

a > b ? b : a; c.

直接输出三元运算的结果,或者将结果存到一个新的变量中,再打印变量

// sout( a > b ? b : a )

int min = a > b ? b : a;

sout(min);

 进制

常见进制

① 生活中常见的进制:逢XX重新开始计算 十进制 七进制 六十进制 24进制

② 计算机中常见进制

十进制:逢十进1;0,1,2,3,4,5,6,7,8,9,10,11,····19,20······

二进制:逢二进1;0,1,10,11,100,101,······

八进制:逢八进1;0,1,2,3,4,5,6,7,10,11,12,13,14,15,16,17,20········

十六进制:十六进1:0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,10,11········

 十进制与其他进制之间的转换

① 公式:除基倒取余 基:目标进制

② 案例:将十进制的数88,分别以八位的二进制、八进制、十六进制表示

二进制:以88作为被除数,循环除以2,一直除到商为0时,将所有余数倒着写出来;0101 1000

八进制:以88作为被除数,循环除以8,一直除到商为0时,将所有余数倒着写出来:130

十六进制:以88作为被除数,循环除以16,一直除到商为0时,将所有余数倒着写出来:58

③ 注意: 当十进制转换为16进制时,10 - 15 之间的数字需要用 a -- f 字母来表示

④ 练习: 将十进制 99 分别以八位的二进制、八进制、十六进制表示出来  

二进制:0110 0011

八进制:143

十六进制:63

 其他进制转换为十进制

① 公式:系数乘以基数的权次幂,再求和

系数:当前进制数上的每一位上的数字

基数:当前进制数 权:当前进制数,从右到左,从0开始计数

② 案例:二进制 0100 1001 ,八进制 56 ,十六进制 6d,用十进制数表示出来

0100 1001:1*2^6 + 1*2^3 + 1*2^0 = 73

56:5*8^1 + 6*8^0 = 40 + 6 = 46

 6d:6*16^1 + 13*16^0 = 96 + 13 = 109

③ 练习:二进制 0110 1101 ,八进制 76 ,十六进制 dd,用十进制数表示出来

0110 1101 ---> 109

76 ---> 62

dd ---> 221

 二进制转其他进制(其他进制转二进制刚好是逆过程)

① 二进制转十进制(系数乘以基数的权次幂,再求和)

② 二进制转八进制

规则:将二进制从右往左,3个为一组,计算出数值;不够为时用0补位

案例:0100 1001 --> 001 001 001 --> 111

③ 二进制转十六进制

规则:将二进制从右往左,4个为一组,计算出数值;不够为时用0补位

案例:0100 1111 --> 0100 1111 --> 4f

 原码、反码、补码

① 计算机中关于数据的存储和运算使用的都是二进制的补码,原码和反码不是真实存在的,这两个只是为了方便编程人员计算负数的补码臆想出来的;数据有正有负,为了区分,就将二进制的最高位规定位符号位,如果最高位是1则表示负数,最高位为0表示正数。

② 正数的原码、反码、补码都是一样的(除基倒取余的方式)

③ 一个负数(默认用8为二进制表示)

传统的方式:      

原码:取负数绝对值,再使用除基倒取余的方式算出原码,不够为时最高位补1,其余位补0

 反码:原码取反,符号位(最高位不变),其余为1变0,0变成1      

补码:反码 + 0000 0001  

快速的方式:

 牢记 -1 的补码为 1111 1111,负数的补码就在此基础上减去负数的(绝对值-1)

④ 案例:用八位二进制表示十进制数 120(-120) 的原码、反码、补码

 二进制补码的运算

① 二进制补码运算时,不要做减法,通通用加法

② 例如:实现计算机底层 30 - 50 的过程;

如果使用减法运算:0001 1110 - 0011 0010 会发现不够减,没法借位

使用加法运算: 0001 1110 + 1100 1110 = 1110 1100

 位运算

符号名称运算规则
 >>右移每移动一位,数值变成原来的1/2;正数最小到0,负数最大到-1
<<左移每移动一位,数值变成原来的2倍;不能超出当前数据的范围
>>>无符号右移跟右移一致;不能用来操作负数
&按位与全真为真,否则为假;1为真,0为假
|按位或全假为假,否则为真;1为真,0为假
^按位异或相同为假,不同为真;1为真,0为假

键盘录入

① 在程序的执行过程中动态的添加数据,让程序更加灵活,让数据的来源更加灵活

② 键盘录入的步骤

a. 导包:在类的声明上面,使用关键字 import java.util.Scanner

b. 创建键盘录入的对象:Scanner sc = new Scanner(System.in);

c. 来点提示:sout("请输入数据:");

d. 接受录入的数据:根据录入数据的类型选择合适的方法来获取数据 整型:int i = sc.nextInt(); 浮点数:double d = sc.nextDouble(); 字符串:String string = sc.next();

e. 对于录入数据的处理

 案例:随机录入两个正整数,比较大小,将较大的数据控制台打印

import java.util.Scanner;
    public class Demo { 
       public static void main(String[] args) {

            Scanner sc = new Scanner(System.in);

            System.out.println("请输入第一个数据:");
            int i = sc.nextInt();
             System.out.println("请输入第二个数据:");
            int i1 = sc.nextInt();
            int max = i > i1 ? i : i1;
            System.out.println(max);
       }
   }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值