Java基础自学记录三

chapter4

此为笔者个人笔记,如有错误还请指出

运算符介绍

算术运算符(Arithmetic Operator)

这里不过多介绍,只辨析两个易错点:++(前)先运算再取值,++(后)先取值再运算,–同理

public class test{
    public static void main(String[] args){
        int i,j = 1 , 1;
        i = i++;
        j = ++j;
        //输出i=1,j=2
        //分析:i=i++;设置一临时变量temp  1 temp=i; 2 i=i+1; 3 i=temp;
        //j=++j;   1 j=j+1;  2 temp=j;  3 j=temp;
        System.out.println("i:"+ i + "\nj:" + j);
    }
}

10/4赋值给double输出2.0 10.0/4是2.5 10/4.0也是2.5

取模公式: a % b = a - a / b * b

关系运算符

  • == !=
  • < > <= >=
  • instanceof(是否包含在类中)

逻辑运算符

  • 短路与&& 短路或|| 取反!
  • 逻辑与& 逻辑或| 逻辑异或^

逻辑异或a和b不同时,结果为true,否则为false

开发中短路与或效率更高,短路与或若根据一个能判断出结果就不再继续判断

赋值运算符

注意复合运算的时候会进行运行类型转换 即byte b=1; b+=2;等价于b=(byte)(b+2);

三元运算符

基本语法: 条件表达式 ? 表达式1 : 表达式2

条件表达式为true 执行1,为假执行2

//三个数取最大值
public class MaxOfThree{
    public static void main(String[] args){
        int a,b,c;
        a=3;
        b=188;
        c=1;
        return (a > b? a : b) > c? (a > b? a : b) : c;
    }
}

运算符优先级

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MT53P4X8-1664368056568)(D:\Typora\typora-user-images\image-20220921212022054.png)]

只有单目运算符和赋值运算符是从右向左的

键盘输入语句

接受用户输入的数据用扫描器对象 Scanner

步骤

  • 导包 java.util.*
  • 创建该类的对象(声明对象)
  • 调用功能
import java.util.*;//记得加分号
public class ScanTest{
    public static void main(String[] args){
        //创建Scanner对象实例
        Scanner input = new Scanner(System.in);
        //接受用户输入
        System.out.println("输入:");
        String name = input.next();
        int age = input.nextInt();
        double salary = input.nextDouble();
        System.out.println(name+age+salary);
    }
}

进制

  • 0x表示十六进制

  • 0b表示二进制

  • 什么都不加默认为十进制 十进制

  • 0开头表示八进制

位运算

非位移运算的位运算:先求出补码再进行位运算,位运算后再将补码转化为原码

public class andOrTest{
	public static void main(String[] args){
		//先求补码,
		//2&-5
		//补码 00000000 00000000 00000000 00000010
		//     11111111 11111111 11111111 11111011
		System.out.println(2|-5);
		//     11111111 11111111 11111111 11111011  补码
		//反码:11111111 11111111 11111111 11111010
		//原码:10000000 00000000 00000000 00000101
		//预计是-5
		System.out.println(~2);
		//补码:00000000 00000000 00000000 00000010
		//取反:11111111 11111111 11111111 11111101  补码
		//反码:11111111 11111111 11111111 11111100
		//原码:10000000 00000000 00000000 00000011
        System.out.println(25>>2);
        //原码:00000000 00000000 00000000 00011001
        //结果:00000000 00000000 00000000 00000110    6
        //>>相当于除2,>>几就除几个2
        //<<相当于乘2,<<几就乘几个2
	}
}
  • <<算数左移 符号位不变,低位补零

  • >>算数右移 符号位不变,低位溢出,高位补符号位

  • >>>逻辑右移 无符号右移,低位溢出,高位补零

  • ~ 按位取反

  • & 按位与 两位全为1结果为1

  • | 按位或 两位有一位为1结果为1

  • ^ 按位异或 两位不同结果为1

homework

public class HomeWork{
    public static void main(String[] args){
        int i = 66;
        System.out.println(++i+i);
        //分析:  先自增再取i, 67+67?  正确的
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值