《Java核心技术卷1》拾遗

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

 

一、double数组

(1)全部的“非数值”都认为是不相同的ide

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 }

 

二、Mathspa

(1) Math使用时候,能够不带“Math” 前缀,添加导入静态包3d

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

(2) Math的计算结果并不彻底可预测,首先是保证了速度。若是须要一个全部平台相同的结果的数据,推荐使用 StrictMathcode

 

三、数值类型转化对象

 

 

 

 四、枚举型blog

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

 

 

 五、字符串

(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) 

相关文章
相关标签/搜索