Java学习--day02---运算,一些重要的程序

运算

变量的作用范围
从变量定义开始,到它所在的语句块结束的位置为止。


自增自减(++ --)
如果单独使用自增/自减
变量都会加1,a++ 和++a两者没有区别

在算数表达中时:
++a:先自增,再运算
a++: 先运算,再自增


int n = 7         00000000 00000000 00000000 00000111    7
n << 1            00000000 00000000 00000000 00001110   14 = 7 * 2^1
n << 2            00000000 00000000 00000000 00011100   28 = 7 * 2^2

n >> 1            00000000 00000000 00000000 00001110   14


位运算:
& 位与的运算  
1&1 = 1
0&1 = 0
1&0 = 0
0&0 = 0

|位或的运算
1|1 = 1
1|0 = 1
0|1 = 1
0|0 = 0

^按位异或
0^0 = 0
1^1 = 0
0^1 = 1
1^0 = 1

~ 取反
~1 = 0
~0 = 1


int m = 5546546;      
int n = 1233446;

     m = 010101001010001000110010
     n = 000100101101001000100110

异或:   010001100111000000010100
         010001100111000000010100
     
或运算: 010101101111001000110110
         010101101111001000110110

与运算: 000100001000001000100010
         000100001000001000100010

原码:最高位是符号位,0代表正数,1代表负数,非符号的数值位为数值的二进制
反码:正数,反码与原码保持一致,负数的反码是对原码按位取反,最高位符号不变
补码:正数的补码和原码保持一致,负数的补码是对原码按位取反加1,符号位不变

eg:
1原码:     0000 0001
 补码:     0000 0001
 按位取反: 1111 1110
 反码:     1111 1101
 原码:     1000 0010  = -2
 
 
0原码:     0000 0000
 补码:     0000 0000
 按位取反: 1111 1111
 反码:     1111 1110
 原码:     1000 0001 = -1
 
自动转型:
算数运算过程中,如果数值类型不一致,把小范围的数据类型转换为大范围的数据类型,结果是大范围的数据类型
 

程序模块

一、某小伙想定一份外卖,商家的优惠方式如下:鱼香肉丝单点24元,油炸花生米单点8元,米饭单点3元。订单满30元8折优惠。鱼香肉丝优惠价16元,但是优惠价和折扣不能同时使用。那么这个小伙要点这三样东西,最少要花多少钱?

public class test01 {
    public static void main(String[] args) {
        double discount = (24 + 8 + 3)*0.8;
        int pre = 16 + 8 + 3;
        double min = pre < discount ? pre :  discount;
        System.out.println("最少花:" + min);
    }
}

二、让用户分别输入姓名,语文,数学,英语 三门课的成绩,然后给用户显示:XX,你的总成绩为XX分,平均成绩为XX分。

public class test02 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("输入名字:");
        String name = scanner.next();
        System.out.print("输入语文成绩:");
        int chinese = scanner.nextInt();
        System.out.print("输入数学成绩:");
        int math = scanner.nextInt();
        System.out.print("输入英语成绩:");
        int english = scanner.nextInt();
        int grade = chinese + math + english;
        double average = grade/3;
        System.out.println(grade);
        System.out.println(average);
        System.out.printf("%s,你的总成绩为%d分,平均成绩为%f分\n",name,grade,average);
    }
}

四、若任意两数和是3的倍数或其中一个为3,则输出true,否者输出false

public class test01 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("输入第一个数:");
        int a = scanner.nextInt();
        System.out.println("输入第二个数:");
        int b = scanner.nextInt();
        int c= (a + b ) % 3;
        boolean d;
        System.out.println("d:"+ ((c == 0) || (a == 3) || (b == 3)));
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值