zoukankan      html  css  js  c++  java
  • 数据类型和运算符

    ArithmeticOperators

    // 算术运算符
    public class ArithmeticOperatorsDemo {
        public static void main(String[] args) {
            char c = 'A';
            char i = (char) (c + 12);
            System.out.println(i);
            System.out.println("AAA" + 7 + 3); // AAA73
            // 算术异常: / by zero
            // System.out.println(1 / 0);
            System.out.println(1.0 / 0); // 等价于1/0.0:Infinity正无穷大
            System.out.println(0.0 / 0.0); // NaN:Not a Number
            double x = 0.0 / 0.0;
            System.out.println(x == x); // false
            // 需求:求出10除以3的余数,1
            System.out.println(10 % 3); // 取模
            System.out.println("=================================");
            // 自增操作
            int a = 10;
            a++;// ++在变量之后,后缀
            int b = 10;
            ++b;// ++在表里之前,前缀
            System.out.println(a);
            System.out.println(b);
            System.out.println("=================================");
            /**
             * 当int y1 = ++x1;
             *         ++前缀时:表示x1先递增1,此时--->x1==11
             *         再把11赋值给y1;
             */
            int x1 = 10;
            int y1 = ++x1;
            System.out.println("x1=" + x1); // 11
            System.out.println("y1=" + y1); // 11
            System.out.println("=================================");
            /**
             * 当int y2 = x2 ++;
             *             ++后缀时:表示x2先递增,此时x2 == 11
             *             但是,取出x2的原始值(10),再去做运算.
             */
            int x2 = 10;
            int y2 = x2++;
            System.out.println("x2=" + x2); // 11
            System.out.println("y2=" + y2); // 10
    
            int num2 = 1;
            num2 = num2++;
            System.out.println(num2);
        }
    }

    AssigningOperator

    // 赋值运算符
    public class AssigningOperatorDemo {
        public static void main(String[] args) {
            int age;
            age = 17; // 赋值运算符,从右往左运算
            //int age = 17;
    
            int x = 10;
            x += 5; // 等价于: x = x + 5;
            System.out.println(x);
    
            /**
             *错误: 不兼容的类型: 从int转换到short可能会有损失
             *             short s = 123;
             *             s = (short)(s + 10);
             */
            short s = 123;
            s += 10;
            System.out.println(s);
        }
    }

    BitOperator

    // 二进制的位运算符
    public class BitOperatorDemo {
        public static void main(String[] args) {
            int a = 5;
            int b = 3;
            /**
             *             a:0b00000101
             *         &   b:0b00000011
             *         -------------------------
             *               0b00000001
             */
            System.out.println(a & b); // 1
    
            /**
             *             a:0b00000101
             *         |   b:0b00000011
             *         -------------------------
             *               0b00000111
             */
            System.out.println(a | b); // 7
    
            /**
             *            a:0b00000101
             *         ^  b:0b00000011
             *         -------------------------
             *              0b00000110
             */
            System.out.println(a ^ b); // 6
            /**
             *            a:0b00000101
             *         ~
             *         -------------------------
             *              0b11111010
             */
            System.out.println(~5); // -6
            // 操作负数: 得到原码-->反码-->补码-->操作
            System.out.println(~-5); // 4
    
            System.out.println("=========================");
            // 交换两个变量值练习
            int x = 10;
            int y = 20;
            System.out.println("x=" + x + ",y=" + y); // x=10,y=20
            // 操作
            /**
             *     int temp = x;
             *         x = y;
             *         y = temp;
             */
            // 作图
            x = x ^ y;
            y = x ^ y;
            x = x ^ y;
            System.out.println("x=" + x + ",y=" + y); // x=20,y=10
            System.out.println("=========================");
            int num = 2;
            /**
             *         2的二进制:
             *                 0b000_00010
             *                 0b00010_000
             *         -------------------------
             */
            System.out.println(num << 3); // 16
            /**
             *         0b00000010
             */
            // 操作负数:原码,反码,补码-->操作--->取反>取补
            System.out.println(-16 >> 3); // -2
        }
    }

    Boolean

    // boolean数据类型
    public class BooleanDemo {
        public static void main(String[] args) {
            /**
             *     boolean类型:通常用于逻辑运算和程序流程控制。
             *             该类型的值只能是true 或 false,表示真或假。
             *             不可以使用0或非0的整数来代替false和true,区分于C语言。
             *             (其实在JVM中对boolean的处理也是用0表示false,非0表示true的。)
             *             false和true是boolean的常量。
             */
            // boolean的常量
            System.out.println(true); // true
            System.out.println(false); // false
            // boolean的变量
            boolean isMan = true;
            System.out.println(isMan); // true
            isMan = false;
            System.out.println(false); // false
        }
    }

    Char

     // 字符符号类型(char)
    public class CharDemo {
        public static void main(String[] args) {
            /**
             * char类型:表示16位的无符号整数或者Unicode字符,Java对字符采用Unicode字符编码。
             *          Unicode收集了世界上所有语言文字中的字符,是一种跨平台的编码方式,Java的字符占两个字节,可以表示一个汉字。
             *          什么是编码?
             *          计算机只能表示0和1两个数,于是人们做规定使用一个数字去表示一个特定的字符,比如a使用97表示。
             *          char前256个字符和ASCII(美国信息交互标准编码)码中的字符重复。
             *          ----------------------------------------------
             *          char常量有4种表示形式:
             *          ① 直接使用单个字符来指定字符常量,格式如'◆'、'A','7';
             *          ② 直接作为整数类型使用,但是数据范围在[0,65535],格式如97,但是打印出来的值依然是ASCII码表对于的符号,如97打印出来是字符a。
             *          ③ 和2一样,只不过表示的是16进制的数值,.....
             *          所以有人说char本质上也是整型,也是有道理的。
             *          char前256个字符和ASCII(美国信息交互标准编码)码中的字符重复,可查表。
             */
            // char的常量表示
            // char的变量表示
            System.out.println('◆'); //
            System.out.println('A'); // A
            System.out.println('7'); // 7
    
            char a = 97; // a
            System.out.println(a); // 输出65所对应位置的符号
    
            char aa = 'u0061';
            System.out.println(aa); // a
    
            char ma = '码';
            System.out.println(ma); //
        }
    }

    ComparisonOperato

    // 比较运算符
    public class ComparisonOperatorDemo {
        public static void main(String[] args) {
            System.out.println(5 == 5); // true
            System.out.println(5 == 4); // false
            System.out.println(110 != 119); // true
            System.out.println(18 > 17); // true
            System.out.println(17 < 18); // true
            System.out.println(17 >= 17); // true
            int a = 5;
            int b = 10;
            boolean ret = a > b;
            System.out.println(ret); // false
        }
    }

    Const

    // 知识点:常量/字面量
    public class ConstDemo {
        // main方法是程序的入口
        public static void main(String[] args) {
            // 系统的输出打印
            System.out.println("hello");
            System.out.println(3.14);
        }
    }

    Decimal

    // 小数类型(float/double)
    public class DecimalDemo {
        public static void main(String[] args) {
            /**
             * 小数的常量
             *          方式1:直接使用小数点表示:如3.14
             *          方式2:使用科学计数法: 3.14E2--->3.14 乘以  10 的 二次方
             *       小数的常量,默认是double类型.
             *       表示float类型: 在常量之后跟上F,或者f;
             */
            System.out.println(3.14);
            System.out.println(3.14E2);
            System.out.println("--------------------------");
            // 小数的变量
            float pi = 3.14F;
            System.out.println(pi);
            double  d = 123.456;
            // 注意:无论是float还是double类型,double不能精确的表示一个小数.
            // 在开发中,表示精确的数,比如金钱,在面向对象讲BigDecimal类来解决.
        }
    }

    int

    /**
     * 当要表示的数据超出数据类型的临界范围时,称为溢出。
     * 溢出情况发生时程序并没有做数据范围检查处理,此时会出现数据紊乱情况。
     * int类型的范围:[-2147483648,2147483647]
     */
    public class IntDemo {
        public static void main(String[] args) {
            int max = 2147483647;
            max = max + 1;
            System.out.println(max); // -2147483648
            /**
             * 原理:
             *              二进制:0b01111111_11111111_11111111_11111111
             *         +    二进制:0b00000000_00000000_00000000_00000001
             *         ------------------------------------------------------
             *                    0b10000000_00000000_00000000_00000000
             */
    
            int min = -2147483648;
            min = min - 1;
            System.out.println(min); // 2147483647
        }
    }

    Integer

    // 整数类型(byte,short,int,long)
    public class IntegerDemo {
        public static void main(String[] args) {
            /**
             * byte、short、int、long类型(仅仅是容量大小不一样而已):
             *         整型常量的四种表示形式:
             *         ① 二进制整数:0B或0b开头(Java7的新特性),如:int a = 0B110;
             *         ② 八进制整数:要求以0开头,如 int a = 012;
             *         ③ 十进制整数:如:int a = 17;
             *         ④ 十六进制整数:要求0X或0x开头,如int a = 0x12;
             *         Java语言的整型常量默认是int型,声明long型变量后加上‘l’或‘L,因小写的l容易和数字1相混淆,建议使用大写L。
             *
             *         默认情况下,一个整型的字面量默认是int类型.
             */
            // 整数的常量表示:250
            System.out.println(250); // 十进制        // 250
            System.out.println(0b11111010); // 二进制 // 250
            System.out.println(0372); // 八进制       // 250
            System.out.println(0xFA); // 十六进制     // 250
            System.out.println("-----------------------------------");
            // 整数的变量表示: 数据类型 变量名 = 值;
            int day = 127;
            long id = 123L;
            System.out.println(day); // 127
            System.out.println(id); // 123
            // int有四个字节,有32位.
            /**
             * 250的二进制表示:
             *         0b00000000000000000000000011111010
             */
            int bin = 0b00000000_000000000_0000000_11111010;
            System.out.println(bin); // 250
    
            // Java7,运行数字之间使用_分割.
            System.out.println(1_2_3); // 123
        }
    }

    LogicalOperator

    // 逻辑运算符
    public class LogicalOperatorDemo {
        public static void main(String[] args) {
            // '&' 操作:都为true的时候,结果才为true.
            System.out.println(true & true); // true
            System.out.println(true & false); // false
            System.out.println(false & true); // false
            System.out.println(false & false); // false
            // System.out.println(false & (1/0==0)); // 报错,说明 (1/0==0)执行了,证明 & 不具有短路效果.
            // '&&' 操作:都为true的时候,结果才为true.
            System.out.println(true && true); // true
            System.out.println(true && false); // false
            System.out.println(false && true); // false
            System.out.println(false && false); // false
            // 没报错,说明(1/0==0)没有执行.  若左边操作数为false,右边操作数不执行.直接返还false.
            System.out.println(false && (1/0==0)); // false 
            System.out.println("-----------------------");
            // '|' :有一个为true,结果就是true.
            System.out.println(true | true); // true
            System.out.println(true | false); // true
            System.out.println(false | true); // true
            System.out.println(false | false); // false
            // '||' :有一个为true,结果就是true
            System.out.println(true || true); // true
            System.out.println(true || false); // true
            System.out.println(false || true); // true
            System.out.println(false || false); // false
    
            System.out.println(!!!!true); // true
        }
    }

    StepInVar

    // 引出变量
    public class StepInVarDemo {
        public static void main(String[] args) {
            // 第一种方法
            // 需求:接到客户的一个需求,求两个操作数6和3的和,差,积,商。
            System.out.println(6 / 3); // 2
            System.out.println(6 * 3); // 18
            System.out.println(6 - 3); // 3
            System.out.println(6 + 3); // 9
            System.out.println("------------------------------");
            // 用户需求改变:操作数变成了  8 和 4
            System.out.println(8 / 4); // 2
            System.out.println(8 * 4); // 32
            System.out.println(8 - 4); // 4
            System.out.println(8 + 4); // 12
            System.out.println("----------------------");
            // 第二种方法
            int x = 6;
            int y = 3;
            System.out.println(x + y); // 9
            System.out.println(x - y); // 3
            System.out.println(x * y); // 18
            System.out.println(x / y); // 2
            System.out.println("-----------------------------");
            x = 8;
            y = 4;
            System.out.println(x + y); // 12
            System.out.println(x - y); // 4
            System.out.println(x * y); // 32
            System.out.println(x / y); // 2
        }
    }

    String

    // 最常用的的引用类型:String类
    public class StringDemo {
        public static void main(String[] args) {
            // 表示名字:小明
            String username = "小明";
            System.out.println("名字:" + username); // 名字:小明
    
            int age= 17;
            System.out.println("年龄=" + age); // 年龄=17
    
            // 转义符号练习: 输出:  "你好师姐"
            System.out.println(""你好师姐"");
    
            System.out.println(8 + 7 + "Hello"); // 结果是15Hello
            System.out.println("Hello" + 7 + 8); // 结果是Hello78
            System.out.println(7 + "Hello" + 8); // 结果是7Hello8
    
            // int xx = "ABC"; // 错误: 不兼容的类型: String无法转换为int
        }
    }

    TernaryOperator

    public class TernaryOperatorDemo {
        public static void main(String[] args) {
            // 现在给一个小数,需要求出其四舍五入之后的结果,怎么完成该功能?
            double num = 4.46;
            // 整数部分
            int iNum = (int)num; // 4
            // 小数部分
            double dNum = num - iNum; // 0.56
            int ret = dNum >= 0.5 ? iNum + 1 : iNum;
            System.out.println(ret);
    
            int x = 30;
            int y = 50;
            // 求出x,y的最大值;
            int max = x >= y ? x : y;
            System.out.println(max);
            int min = x <= y ? x : y;
            // 判断一个数是奇数或者偶数:陷阱
            // 判断奇偶数.直接判断除以2的余数是否为0.
            int num2 = -101;
            String ret2 =  num2 % 2 == 1 ? "奇数" : "偶数"; // 有问题
            System.out.println(ret2);
        }
    }

    TypeConvert

    public class TypeConvertDemo {
        public static void main(String[] args) {
            // 自动类型转换
            byte b = 17;
            short s = b;
            int i = s;
            float f = i;
            double d = f;
            // byte b2 = d; // 错误: 不兼容的类型: 从double转换到byte可能会有损失
            System.out.println(d);
            // 需求:强制的把double类型的d转换为int类型
            int num = (int)d;
            System.out.println(num);
    
            int num2 = (int)3.1415926;
            System.out.println(num2); // 损失精度
    
            byte c = 5; // 内部,隐式转换
            System.out.println("------------------------------");
            double ret = 123 + 1.1F + 99L + 3.14;
    
            int n = 'A' +  1;
            System.out.println(n);
    
        }
    }

    Var

    // 变量的分类/作用域/使用注意
    public class VarDemo {
        static String name = "will"; // 成员变量:直接定义在类中
        public static void main(String[] args) {
            /**
             * 变量分类:(变量定义的位置不同而已)
             *         成员变量: 直接定义在类中的变量;
             *         局部变量: 变量除了成员变量,就是局部变量.
             */
            String name = "小明"; // 局部变量
            System.out.println(name); // 就近原则
    
            int    age = 17;
            System.out.println(age);
        }
    }
  • 相关阅读:
    SDUT 猴子分桃
    SDUT 母牛的故事
    SDUT 小鑫の日常系列故事(六)——奇遇记 递推算法
    SDUT 爬楼梯
    SDUT 王小二切饼
    linux 排序命令sort
    shell 判断语句
    shell统计指定范围内的所有质数以及它们的和
    shell 1到指定数累加
    shell九九乘法表
  • 原文地址:https://www.cnblogs.com/zengqinghong/p/11808721.html
Copyright © 2011-2022 走看看