• 《Java核心技术卷1》拾遗


      之前对Java的基础知识有过学习,现在开始学习《Java核心技术卷1》,将一些新学的知识点,做简要记录,以备后续回顾:

     

    1、double

    (1)所有的“非数值”都认为是不相同的

    if(x==Double.NaN)  //永远是true

    (2) 可以通过Double.isNaN 来判断是不是“非数值”

    public static void main(String[] args) {
         int a=9;
             float c=3.4f;
             double d=5.6D;
            System.out.println(Double.isNaN(d)); //false
            System.out.println(Double.isNaN(c)); //false
            System.out.println(Double.isNaN(a)); //fasle
        }

    (3)  常量 

     1 public class Main {
     2 
     3     public static void main(String[] args) {
     4         System.out.println(1.1/0);//结果是:Infinity    就是常量Double.POSITIVE_INFINITY
     5         System.out.println(-1.1/0);//结果是:-Infinity     就是常量Double.NEGATIVE_INFINITY
     6         System.out.println(0/3.2);//结果是:0.0
     7         System.out.println(Math.pow(-0.2,0.5));//结果是:NaN    就是常量Double.NaN
     8         System.out.println(1/0);//结果是:Exception in thread "main" java.lang.ArithmeticException: / by zero
     9     }
    10 }

     

    2、Math

    (1) Math使用时候,可以不带“Math” 前缀,添加导入静态包

    import static java.lang.Math.*; 
    public class Main {
        public static void main(String[] args) {  
            System.out.println(pow(-0.2,0.5));
        }
    }

    (2) Math的计算结果并不完全可预测,首先是保证了速度。如果需要一个所有平台相同的结果的数据,推荐使用 StrictMath

     

    3、数值类型转化

     

     

     

     4、枚举型

    public class Main {
        public static void main(String[] args) {
            enum Size  {XL,L,M,M,S};
            Size s=Size.M;
        }
    }

     

     

     5、字符串

    (1) 字符串之间的比较不能用==,但是字符串常量可以,应为虚拟机将相同的字符串常量共享

    (2) 空串是一个Java对象,有长度和内容。String也可以被赋值null,表示没有任何对象与该String变量关联

    (3) 字符串打印,可以用C语言的printf()

    System.out.printf("你好啊!%s,我今年%d岁","小猫",10);//你好啊!小猫,我今年10岁

     

     

     (6)  流程控制

    标签可以使用在for、while、if 和代码块之前

    public class Main {
    
        public static void main(String[] args) {
         
            int i=8;
            W:while(i<19){
                i++;
                System.out.print("i="+i);
               J:{
                    if (i - 8 >= 5) break J;
                   System.out.print("*******");
                }
                System.out.println("-----------");
            }
    
        }
    }

    结果:

    i=9*******-----------
    i=10*******-----------
    i=11*******-----------
    i=12*******-----------
    i=13-----------
    i=14-----------
    i=15-----------
    i=16-----------
    i=17-----------
    i=18-----------
    i=19-----------

     

    (7) 大数值

    如果基本的整数和浮点数精度不能够满足需求,那么可以使用java.math包中的BigInteger和BigDecimal。这两个类可以处理包含任意长度数字序列的数值。BigInteger类实现了任意精度的整数运算,BigDecimal实现了任意精度的浮点数运算。

    使用静态方法valueOf方法可以将普通的数值转换为大数值:

     

         BigInteger a=BigInteger.valueOf(100);
            BigInteger b = new BigInteger("2");
            System.out.println(a.add(b));//+
            System.out.println(a.pow(2));//次方
            System.out.println(BigInteger.valueOf(-100).abs());//绝对值
            System.out.println(a.compareTo(b));//两个数作比较
            System.out.println(a.divide(b));//除法
            System.out.println(a.mod(b));//取余
            System.out.println(a.remainder(b));//取余
            System.out.println(a.equals(b));//比较,返回布尔
            System.out.println(a.intValue());//int值
            System.out.println(a.min(b));//返回小的值
            System.out.println(a.multiply(b));//乘法
            System.out.println(a.toString(5));//此方法返回此BigInteger在给定的基数的字符串表示形式。
            System.out.println(a.subtract(b));//减法
            System.out.println(a.longValue());//long
            System.out.println(a.max(b));//返回大的

    102
    10000
    100
    1
    50
    0
    0
    false
    100
    2
    200
    400
    98
    100
    100

     

     

    浮点型:

     

         BigDecimal a=BigDecimal.valueOf(100.5);
            BigDecimal b = new BigDecimal("2.3");
            System.out.println(a.add(b));//+
            System.out.println(a.pow(2));//次方
            System.out.println(a.compareTo(b));//两个数作比较
            System.out.println(a.divide(b,5,BigDecimal.ROUND_DOWN));//除法
            System.out.println(a.remainder(b));//取余---余的是个小数
            System.out.println(a.equals(b));//比较,返回布尔
            System.out.println(a.intValue());//int值
            System.out.println(a.min(b));//返回小的值
            System.out.println(a.multiply(b));//乘法
            System.out.println(a.subtract(b));//减法
            System.out.println(a.longValue());//long
            System.out.println(a.max(b));//返回大的

    102.8
    10100.25
    100
    1
    43.69565
    1.6
    false
    100
    2.3
    231.15
    98.2
    100
    100.5

     

     

     

    其中,divide() 方法的 3 个参数分别表示除数、商的小数点后的位数和近似值处理模式。

     

     

    表2 roundingMode参数支持的处理模式
    模式名称说明
    BigDecimal.ROUND_UP 商的最后一位如果大于 0,则向前进位,正负数都如此
    BigDecimal.ROUND_DOWN 商的最后一位无论是什么数字都省略
    BigDecimal.ROUND_CEILING 商如果是正数,按照 ROUND_UP 模式处理;如果是负数,按照 ROUND_DOWN
    模式处理
    BigDecimal.ROUND_FLOOR 与 ROUND_CELING 模式相反,商如果是正数,按照 ROUND_DOWN 模式处理;
    如果是负数,按照 ROUND_UP 模式处理
    BigDecimal.ROUND_HALF_ DOWN 对商进行五舍六入操作。如果商最后一位小于等于 5,则做舍弃操作,否则对最后
    一位进行进位操作
    BigDecimal.ROUND_HALF_UP 对商进行四舍五入操作。如果商最后一位小于 5,则做舍弃操作,否则对最后一位
    进行进位操作
    BigDecimal.ROUND_HALF_EVEN 如果商的倒数第二位是奇数,则按照 ROUND_HALF_UP 处理;如果是偶数,则按
    照 ROUND_HALF_DOWN 处理

     

     可以把加减乘除封装一个工具类(转):

     

    import java.math.BigDecimal;
    public class BigDecimalDemo {
        static final int location = 10;
        /**
         * 定义加法方法,参数为加数与被加数
         * @param value1 相加的第一个数
         * @param value2 相加的第二个数
         * @return 两数之和
         */
        public BigDecimal add(double value1 , double value2) {
        //实例化 Decimal 对象
            BigDecimal b1 = new BigDecimal(Double.toString(value1));
            BigDecimal b2 = new BigDecimal(Double.toString(value2));
            return b1.add(b2);        //调用加法方法
        }
        /**
         * 定义减法方法,参数为减数与被减数
         * @param value1 被减数
         * @param value2 减数
         * @return 运算结果
         */
        public BigDecimal sub(double value1 , double value2) {
        //实例化 Decimal 对象
            BigDecimal b1 = new BigDecimal(Double.toString(value1));
            BigDecimal b2 = new BigDecimal(Double.toString(value2));
            return b1.subtract(b2);        //调用减法方法
        }
        /**
         * 定义乘法方法,参数为乘数与被乘数
         * @param value1 第一个乘数
         * @param value2 第二个乘数
         * @return 运算结果
         */
        public BigDecimal mul(double value1 , double value2) {
            //实例化 Decimal 对象
            BigDecimal b1 = new BigDecimal(Double.toString(value1));
            BigDecimal b2 = new BigDecimal(Double.toString(value2));
            return b1.multiply(b2);        //调用乘法方法
        }
        /**
         * 定义除法方法,参数为除数与被除数
         * @param value1 被除数
         * @param value2 除数
         * @return 运算结果
         */
        public BigDecimal div(double value1 , double value2) {
            return div(value1, value2,location);//调用自定义除法方法
        }
        public BigDecimal div(double value1 , double value2 ,int b) {
            if (b<0) {
            System.out.println("b 值必须大于等于 0");
            }
            BigDecimal b1 = new BigDecimal(Double.toString(value1));
            BigDecimal b2 = new BigDecimal(Double.toString(value2));
            //调用除法方法,商小数点保留 b 位,并将结果进行四舍五入操作
            return b1.divide(b2,b,BigDecimal.ROUND_HALF_UP);
        }
        public static void main(String[] args) {
            BigDecimalDemo b = new BigDecimalDemo();
            System.out.println("两个数字相加结果:" + b.add(-7.5, 8.9));
            System.out.println("两个数字相减结果:" + b.sub(-7.5, 8.9));
            System.out.println("两个数字相乘结果:" + b.mul(-7.5, 8.9));
            System.out.println("两个数字相除结果,结果小数后保留 10 位:" + b.div(10,2));
            System.out.println("两个数字相除,保留小数后 5 位:" + b.div(-7.8,8.9,5));
        }
    
    }

     

     

     

     (8) 数组打印

     

         int[] arr=new int[]{1,4,6,7,1,3};
            System.out.println(arr);
            System.out.println(Arrays.toString(arr));

    [I@4554617c
    [1, 4, 6, 7, 1, 3]

     

     

    二维数组也可以不规则

    (9) 

     

     

     

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    Android Scroller简单用法
    android 使用Scroller实现缓慢移动
    Android中View绘制优化之三---- 优化View
    Android中View绘制优化二一---- 使用<include />标签复用布局文件
    世纪互联云和华为共同打造的数据中心是一个很好的一步标志!
    isset,empty,is_null小知识
    迭代法塔的问题,如果中国
    hdu4288 Coder(段树+分离)
    关于淘汰85%查看面试官百度开发者面对的问题
    生命游戏(两),有一种东西叫CCScrollView
  • 原文地址:https://www.cnblogs.com/pikaqiucode/p/10697298.html
Copyright © 2020-2023  润新知