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

1、double

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

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

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

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

(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” 前缀,添加导入静态包

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

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

3、数值类型转化

4、枚举型

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

5、字符串

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

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

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

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

(6)  流程控制

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

  1. public class Main {
  2.  
  3. public static void main(String[] args) {
  4.  
  5. int i=8;
  6. W:while(i<19){
  7. i++;
  8. System.out.print("i="+i);
  9. J:{
  10. if (i - 8 >= 5) break J;
  11. System.out.print("*******");
  12. }
  13. System.out.println("-----------");
  14. }
  15.  
  16. }
  17. }
  18.  
  19. 结果:

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方法可以将普通的数值转换为大数值:

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

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

  1.  

浮点型:

  1.      BigDecimal a=BigDecimal.valueOf(100.5);
  2. BigDecimal b = new BigDecimal("2.3");
  3. System.out.println(a.add(b));//+
  4. System.out.println(a.pow(2));//次方
  5. System.out.println(a.compareTo(b));//两个数作比较
  6. System.out.println(a.divide(b,5,BigDecimal.ROUND_DOWN));//除法
  7. System.out.println(a.remainder(b));//取余---余的是个小数
  8. System.out.println(a.equals(b));//比较,返回布尔
  9. System.out.println(a.intValue());//int值
  10. System.out.println(a.min(b));//返回小的值
  11. System.out.println(a.multiply(b));//乘法
  12. System.out.println(a.subtract(b));//减法
  13. System.out.println(a.longValue());//long
  14. 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 处理

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

  1. import java.math.BigDecimal;
  2. public class BigDecimalDemo {
  3.     static final int location = 10;
  4.     /**
  5.     * 定义加法方法,参数为加数与被加数
  6.     * @param value1 相加的第一个数
  7.      * @param value2 相加的第二个数
  8.      * @return 两数之和
  9.      */
  10.     public BigDecimal add(double value1 , double value2) {
  11. //实例化 Decimal 对象
  12.         BigDecimal b1 = new BigDecimal(Double.toString(value1));
  13.         BigDecimal b2 = new BigDecimal(Double.toString(value2));
  14.         return b1.add(b2);        //调用加法方法
  15.     }
  16.     /**
  17.      * 定义减法方法,参数为减数与被减数
  18.      * @param value1 被减数
  19.      * @param value2 减数
  20.     * @return 运算结果
  21.     */
  22.     public BigDecimal sub(double value1 , double value2) {
  23. //实例化 Decimal 对象
  24.         BigDecimal b1 = new BigDecimal(Double.toString(value1));
  25.         BigDecimal b2 = new BigDecimal(Double.toString(value2));
  26.         return b1.subtract(b2);        //调用减法方法
  27.     }
  28.     /**
  29.      * 定义乘法方法,参数为乘数与被乘数
  30.      * @param value1 第一个乘数
  31.      * @param value2 第二个乘数
  32.      * @return 运算结果
  33.      */
  34.     public BigDecimal mul(double value1 , double value2) {
  35.      //实例化 Decimal 对象
  36.         BigDecimal b1 = new BigDecimal(Double.toString(value1));
  37.         BigDecimal b2 = new BigDecimal(Double.toString(value2));
  38.         return b1.multiply(b2);        //调用乘法方法
  39.     }
  40.     /**
  41.      * 定义除法方法,参数为除数与被除数
  42.      * @param value1 被除数
  43.      * @param value2 除数
  44.      * @return 运算结果
  45.      */
  46.     public BigDecimal div(double value1 , double value2) {
  47.         return div(value1, value2,location);//调用自定义除法方法
  48.     }
  49.     public BigDecimal div(double value1 , double value2 ,int b) {
  50.         if (b<0) {
  51.     System.out.println("b 值必须大于等于 0");
  52.         }
  53.         BigDecimal b1 = new BigDecimal(Double.toString(value1));
  54.         BigDecimal b2 = new BigDecimal(Double.toString(value2));
  55.         //调用除法方法,商小数点保留 b 位,并将结果进行四舍五入操作
  56.         return b1.divide(b2,b,BigDecimal.ROUND_HALF_UP);
  57.     }
  58.     public static void main(String[] args) {
  59.         BigDecimalDemo b = new BigDecimalDemo();
  60.         System.out.println("两个数字相加结果:" + b.add(-7.5, 8.9));
  61.         System.out.println("两个数字相减结果:" + b.sub(-7.5, 8.9));
  62.         System.out.println("两个数字相乘结果:" + b.mul(-7.5, 8.9));
  63.         System.out.println("两个数字相除结果,结果小数后保留 10 位:" + b.div(10,2));
  64.         System.out.println("两个数字相除,保留小数后 5 位:" + b.div(-7.8,8.9,5));
  65.     }
  66.  
  67. }

(8) 数组打印

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

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

二维数组也可以不规则

(9)

《Java核心技术卷1》拾遗的更多相关文章

  1. 《Thinking In Java第四版》拾遗

    <Thinking In Java第四版>拾遗 转自我的github(http://katsurakkkk.github.io/2016/05/Thinking-In-Java%E7%AC ...

  2. think in java 第四版读书笔记 第一章对象导论

    很久没有碰过java了,为了项目需要以及以后找工作,还是有必要将think in java通读一遍.欢迎大家一起讨论学习 1.1抽象过程 面向对象语言的5个特性: 1.万物皆对象 任何事物都可以抽象为 ...

  3. 原创 《算法》java第四版,标准输入

      <算法>学习过程中,在eclipse里调试时,对于官方提供的源码中标准输入的操作,没有搞懂 自己改了一下,直接读取本地测试数据测试数据可在http://algs4.cs.princet ...

  4. JAVA编程思想(第四版)学习笔记----4.8 switch(知识点已更新)

    switch语句和if-else语句不同,switch语句可以有多个可能的执行路径.在第四版java编程思想介绍switch语句的语法格式时写到: switch (integral-selector) ...

  5. java编程思想第四版中net.mindview.util包下载,及源码简单导入使用

    在java编程思想第四版中需要使用net.mindview.util包,大家可以直接到http://www.mindviewinc.com/TIJ4/CodeInstructions.html 去下载 ...

  6. ubuntu命令行下java工程编辑与算法(第四版)环境配置

    ubuntu命令行下java工程编辑与算法(第四版)环境配置 java 命令行 javac java 在学习算法(第四版)中的实例时,因需要安装配套的java编译环境,可是在编译java文件的时候总是 ...

  7. 《Java编程思想第四版》附录 B 对比 C++和 Java

    <Java编程思想第四版完整中文高清版.pdf>-笔记 附录 B 对比 C++和 Java “作为一名 C++程序员,我们早已掌握了面向对象程序设计的基本概念,而且 Java 的语法无疑是 ...

  8. Java编程思想第四版勘误

    坊间传说这本书翻译得很烂,我倒觉得还好.虽然看原文更准确,但是如果在具备一定编程思维和基础.能够看出来疑问的情况下,还是看中文更快一些,而且这本书本身也不适合初学者看.当然,错误和不通顺还是有的,而且 ...

  9. 《JAVA 程序员面试宝典(第四版)》读书笔记之前言

    工作五年了一直在小的软件公司混,总感觉自己的专业知识没有太大的提升.当然了中间也换了一两家公司,面试的公司就很多家,总感觉正规的软件公司(无论大小)对于基础知识的考核都非常重视,而不管你说你之前服务过 ...

  10. 《java编程思想(第四版)》第一二章学习笔记

    目录 一.Introduction 1.抽象过程 2.面向对象语言(包括Java)的五个基本特性 3.每个对象都提供服务 4.public.private.protected三者的区别 5.Java的 ...

随机推荐

  1. Django之视图

    Django之视图   Django的View(视图) 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 响应可以是一张网页的HTML内容,一个 ...

  2. python web编程之网络基础

    1.TCP/IP协议 1)分层 应用层,传输层,网络层,接口层 2)Ip地址 3)域名 4)URL统一资源定位符 格式:    [协议]://[主机]:[端口]/[路径]?[参数] 协议是HTTP,F ...

  3. element-ui Form表单校验

    使用element-ui自带的表单校验,注意几个点: 1.el-form通过rules属性,绑定校验规则 2.el-form-item的prop属性,设置为需要校验的字段名 3.提交后二次校验 sav ...

  4. UI设计篇·入门篇·绘制简单自定义矩形图/设置按钮按下弹起颜色变化/设置图形旋转

    Android的基本控件和图形有限,难以满足所有的实际需要和设计需求,好在Android给出了相对完善的图形绘制和自定义控件的API,利用这些API,可以基本满足设计的需求. 自定义图像和控件的方法: ...

  5. 【题解】洛谷 P1014 【Cantor表】

    1. 我们先引入三角形数的概念: >定数目的点或圆在等距离的排列下可以形成一个等边三角形,这样的数被称为三角形数. >古希腊著名科学家毕达哥拉斯把数1,3,6,10,15,21……这些数量 ...

  6. Suse linux enterprise 11添加设置中文输入法的方法

    Suse中输入法的设置没有在控制中心中,而是在应用程序里默认会安装好的SCIM输入法设置里边添加. 打开SCIM输入法设置->输入法引擎->全局设置,有很多国家的输入法可以选择,想要的找到 ...

  7. mybatis调用存储过程并且有多个返回output值

    mapperxml配置 配置时需要注意 parameterMap在mybatis3.2.6版本已经不再用了,而是使用 parameterType <select id="callget ...

  8. Models中字段的参数

    (1)null 如果为True,Django 将用NULL 来在数据库中存储空值. 默认值是 False. (1)blank 如果为True,该字段允许不填.默认为False. 要注意,这与 null ...

  9. 安装软件,遇到弹框Windows Installer Coordinator,一直循环卡在这个弹框处

    转载自https://www.cliftonsystems.co.uk/fixing-windows-installer-coordinator-loop/ 复制粘贴原文内容,以防将来访问不到原网页了 ...

  10. Android 网络编程的陷阱

    陷阱一,不要在主线程或者UI线程中建立网络连接 Androd4.0以后,不允许在主线程中建立网络连接,不然会出现莫名其妙的程序退出情况.正确的做法是在主线程中,创建新的线程来运行网络连接程序. // ...