读书笔记(一)——《Java核心技术卷一》第三章Java的基本程序设计结构

暑假过了一大半,刚结束实训回来休息了一个多星期才开始看书学习,争取在开学前把三本砖头书能啃多一点是一点。
由于没把编程思想带回来,于是买了本Java核心技术看看,刚开始看确实有不少收获,虽然说做过项目,但是对于一些基础只是或者细节还是不知道的,借此假期也好好研究一下。


1.Java语言的发展状况
首先看看Java的发展

版本 年份 语言新特性 类与接口的数量
1.0 1996 语言本身 211
1.1 1997 内部类 477
1.2 1998 strictfp修饰符 1524
1.3 2000 1840
1.4 2002 断言 2723
5.0 2004 泛型类、“for each”循环、可变元参数、自动装箱、元数据、枚举、静态导入 3279
6 2006 3793
7 2011 基于字符串的switch、钻石操作符、二进制字面量、异常处理改进 4024
8 2014 lambda表达式、包含默认方法的接口、流和日期/时间库 4240

有些同学面试时被问到jdk7.0和8.0的区别,看一下这个发展的状况还是蛮有用的,我认为区别应该就是语言新增加的特性了。


2.数据类型
Java有8种数据类型,其中4种整型、2种浮点类型、1种用于表示Unicode编码的字符单元的字符类型char和1种用于表示真值的boolean类型。
需要注意的是Java为了保证在所有机器上都能得到相同的结果,规定了各种数据类型的取值范围必须固定。
如整型的取值范围:

类型 存储需求 取值范围
int 4字节 -2147483648~2147483647
short 2字节 -32768~32767
long 8字节 -9223372036854775808~9223372036854775807
byte 1字节 -128~127

浮点类型的取值范围:

类型 存储需求 取值范围
float 4字节 大约正负3.40282347E+38F(有效位数为6-7位)
short 2字节 大约正负1.79769313486231570E+308(有效位数为15位)

float类型的数值有一个后缀F或者f,如1.23f,没有后缀的话就默认为double。
有三种特殊的浮点数值:

  • 正无穷大
  • 负无穷大
  • NaN(不是一个数字,Not a Number)

这三种数值是用于表示溢出和出错情况的,例如一个正浮点数除以0的结果为正无穷大(Infinity),而负浮点数除以0的结果为负无穷大(-Infinity)。计算0.0/0或者负数的平方根结果为NaN。
正无穷大通过Double或FLoat的POSITIVE_INFINITY表示;正无穷大通过Double或FLoat的NEGATIVE_INFINITY表示;正无穷大通过Double或FLoat的NaN表示。需要注意的是所有正无穷大数值都是一样的,所有负无穷大数值都是一样的,但是NaN不与任何数值相等,即便是自身也不相等,要判断一个特定值是否是NaN只能用Double.isNaN方法。下面是代码示例:
正无穷大:

        double x=1.0/0;
        double y=3.0/0;
        System.out.println(x);
        System.out.println(x==y);

结果:
这里写图片描述
负无穷大:

        double x=-1.0/0;
        double y=-3.0/0;
        System.out.println(x);
        System.out.println(x==y);

结果:

NaN:

        double x=0.0/0;
        double y=0.0/0;
        System.out.println(x);
        System.out.println(x==y);
        System.out.println(x==x);
        System.out.println(Double.isNaN(x));

结果:
这里写图片描述
可以看出最后一段代码的x是NaN但是x==x也是false。
boolean类型有两个值:false和true,用来判定逻辑条件的,整型值和布尔值之间不能进行相互转换。所以对于if(x=0)在Java中是不能通过编译的,但是在C++中是可以的并且这个判断结果总是为false。


3.关键字final
在Java中,利用关键字final指示常量,例如:

final double PI = 3.1415926;

关键字final表示这个变量只能被赋值一次。一旦被赋值之后,就不能够再更改了。习惯上常量名使用全大写。我尝试过对PI再次赋值,发现会提示语法错误并建议我把final去掉,即把PI不设置为final。


4.运算符
算数运算符+、-、*、/,即加、减、乘、除,用来进行算数运算,当参加/运算的两个操作数都是整数时,表示整数除法,否则,表示浮点除法,这也解释了为什么浮点数除以0没有报错,而整数除0会报错,因为浮点数除以0会被处理成除以0.0,所以会得到正无穷或者负无穷,所以整数除以0.0也会得到无穷大,查了资料,大家都说因为0.0是浮点数,并不精确,所以只是一个非常接近0的数。


今天就先写到这里了,晚安!

猜你喜欢

转载自blog.csdn.net/luqiren/article/details/76736101