Java学习:第三章操作符

// 当一个表达式中存在多个操作符时,操作符的优先级决定了各部分的计算顺序
// 强烈推荐:使用括号明确规定运算顺序

文件目录结构 

 Main.java

class person
{ int age=1984;}

class dynasity {
    static void birthday(person x)
    { x.age++; }
    public static void main(String[] args)
    {
        person Anthony= new person();
        person Carmelo = Anthony;
        birthday(Anthony);
        System.out.println(Carmelo.age+"   "+Anthony.age);
    }
}

class  Tank
{  int  level=11;}

public class Main {
    String i="2002"; //
    String j="0815";
    String s= "zzh";

    Integer value = 127; //另外Byte,Short,Integer,Long,Character这5种整型的包装类也只是在对应值在-128~127之间时才使用常量池。
    Short value1 = 127;

    public static void main(String[] args)
    {
        Tank t1=new  Tank(),t2=new  Tank();
        dynasity era = new dynasity();
        dynasity.main(null);
        t1.level=9;
        t2.level=47;
        System.out.println(t1.level);
        System.out.println(t2.level); // 变量可以被修改
        Main value = new Main();
        System.out.println(Integer.valueOf(value.value1).equals(value.value)); // true
        //System.out.println(value.value1==value.value);
        System.out.println(value.i+ value.j+value.s);
    }
}

进制转换(binary.java)

public class binary {
    public static void main(String[] args) {

        //十六进制
        int hexInt = 0x1A2B;
        long hexLong = 0x1234567890ABCDEFL;
        float hexFloat = 0x1.0p-4f; // 0.0625
        double hexDouble = 0x1.2345p+10; // 4660.0

        //字面值后的尾随字符标志着它的类型。若为大写或小写的L,代表long;大写或小写的F,代表float;大写或小写的D,则代表double

        //八进制
        int octInt = 0100;
        long octLong = 01234567L;

        //小数
        float floatVal = 3.14f; //编译器通常会将小数作为双精度数(double)处理,所以对单精度变量赋值时一定要尾随f
        double doubleVal = 2.718;
        double scientificDouble = 6.022e23; // 6.022 x 10^23 科学计数法
        double index = 31.4E-1; // 指数计数法:3.14=31.4E-1=0.314e1

        // 进制准换
        Integer n1 = 10;
        String 二进制 = Integer.toBinaryString(n1);   //”1010”
        String 十六进制 = Integer.toHexString(10);       //”a”
        String 八进制 = Integer.toOctalString(10);     //”12”
        System.out.println(二进制);
        System.out.println(十六进制);
        System.out.println(八进制);

    }
}

 产生随机数(LearnRandom.java)

import java.util.*;


public class learnRandom {
    public static void GRN(Random r, int count, String type) {
        for (int i = 0; i < count; i++) {
            switch (type) {
                case "int":
                    System.out.println(r.nextInt());
                    break;
                case "double":
                    System.out.println(r.nextDouble());
                    break;
                case "boolean":
                    System.out.println(r.nextBoolean());
                    break;
            }
        }
    }


    public static void main(String[] args) {
        Random r1 = new Random(10); //指定一个种子数。相同种子数的Random对象,相同次数生成的随机数字是相同的。
        Random r2 = new Random(10);

        Random r = new Random();

        GRN(r, 10, "boolean");

        for (int i = 0; i < 10; i++) {
            System.out.println(r1.nextInt());
            System.out.println(r2.nextInt());
        }

        System.out.println(r.nextInt()); //生成完全随机

        // 生成一个随机的boolean值,生成true和false的值几率都是50%
        System.out.println(r.nextBoolean());
        //生成一个随机的double值,数值介于[0, 1.0)之间
        System.out.println(r.nextDouble());
        //生成一个随机的介于[0, n)的int值,包含0而不包含n。
        System.out.println(r.nextInt(10));


    }
}

逻辑判断(LogicJudgement.java)

import java.lang.*;
//! =和= =也适用于所有对象引用
//但要注意:不是比较对象本身,而是比较对象的引用

public class LogicJudgement {
    public static void main(String[] args) {
        {
            Integer n1 = new Integer(47);
            Integer n2 = new Integer(47);
            System.out.println(n1 == n2);//false
            System.out.println(n1 != n2); //true
            System.out.println(n1.equals(n2)); //true
            // 大多数Java类库都实现了equals(),但由于equals()的默认行为还是比较对象的引用。所以应在自己的新类中重新定义equals()
        }


    }
}

位运算.java

public class 位运算 {
    public static void main(String[] args) {
        Integer value1 = 0b1111;
        Integer value2 = 0b0000;

        int a = 0b1010; // 10 in decimal
        int b = 0b1100; // 12 in decimal

        //位与运算符(&)
        int c = a & value1;
        int d = a & value2;

        //位或运算符 |
        int e = a | value1;
        int f = a | value2;

        //位异或运算符 ^
        int g = a ^ value1;
        int h = a ^ value2;

        //复合赋值运算符
        int b1 = (b &= 0b1111);
        int b2 = (b |= 0b1111);
        int b3 = (b ^= 0b1111);


        System.out.println(c);
        System.out.println(d);
        System.out.println(e);
        System.out.println(f);
        System.out.println(g);
        System.out.println(h);
        System.out.println(b1);
        System.out.println(b2);
        System.out.println(b3);
    }
}

 

 字符操作符.java

public class 位运算 {
    public static void main(String[] args) {
        Integer value1 = 0b1111;
        Integer value2 = 0b0000;

        int a = 0b1010; // 10 in decimal
        int b = 0b1100; // 12 in decimal

        //位与运算符(&)
        int c = a & value1;
        int d = a & value2;

        //位或运算符 |
        int e = a | value1;
        int f = a | value2;

        //位异或运算符 ^
        int g = a ^ value1;
        int h = a ^ value2;

        //复合赋值运算符
        int b1 = (b &= 0b1111);
        int b2 = (b |= 0b1111);
        int b3 = (b ^= 0b1111);


        System.out.println(c);
        System.out.println(d);
        System.out.println(e);
        System.out.println(f);
        System.out.println(g);
        System.out.println(h);
        System.out.println(b1);
        System.out.println(b2);
        System.out.println(b3);
    }
}

移位运算.java

public class 移位运算符 {
    public static void main(String[] args){
        // 左移位运算符 <<
        int a1 = 0b0001;
        int b1 = a1 << 2;

        // 右移位运算符 >>
        int a2 = 0b1000;
        int b2 = a2 >> 2;

        // 无符号右移位运算符 >>>
        int a3 = -1; // 0b11111111111111111111111111111111 in binary
        int b3 = a3 >>> 8;  b = 0b00000000000000000000000011111111

        // 移位复合赋值运算符
        int a4 = 0b0001;
        a4 <<= 2;
        a4 >>= 1;
        a4 >>>= 2;

        //三元运算符 ?:
        int a5 = 5, b5 = 10;
        int max = (a5 > b5) ? a5 : b5; // max = 10

        System.out.println(b1);
        System.out.println(b2);
        System.out.println(b3);
        System.out.println(a4);
        System.out.println(max);

    }
}

 类型转换.java

public class 类型转换 {
    public static void main(String[] args){
        //窄化转换: 精度损失
        double d = 3.14;
        int i = (int) d; // i = 3

        //扩展转换:
        int i1 = 5;
        double d1 = (double) i1; // d = 5.0

        //复合赋值与强制转换
        int i2 = 128;
        byte b1 = (byte) (i2 += 200); // b = -28 要把运算结果赋回给较小的类型,就必须使用强制类型转换。

        System.out.println(i);
        System.out.println(d1);
        System.out.println(b1);

        // // 不允许的转换:
        //boolean b = true;
        //int i = (int) b; // 编译错误: 无法将 boolean 转换为 int

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值