美文网首页
《Java核心技术卷1 基础知识》 第三章 Java的基本程序设

《Java核心技术卷1 基础知识》 第三章 Java的基本程序设

作者: gg大宇 | 来源:发表于2018-01-28 15:21 被阅读23次
    数学函数与常量

    在Math类中,包含了各种各样的数学函数。
    想要计算一个数值的平方根,可用sqrt方法:
    double x = 4;
    double y = Math.sqrt(x);
    System.out.println(y);//prints 2.0
    注释:println方法和sqrt方法存在微小的差异。println方法操作一个定义在System类中的System.out对象,但是Math类中的sqrt方法处理的不是对象,这样的方法被称为静态方法。
    在Java中,没有幂运算,因此需要借助于Math类的pow方法。语句:
    double y = Math.pow(x,a);
    Math类提供了一些常用的三角函数:
    Math.sin
    Math.cos
    Math.tan
    Math.atan
    Math.atan2
    还有指数函数以及它的反函数——自然对数以及以10为底的对数:
    Math.exp
    Math.log
    Math.log10
    最后,Java还提供了两个用于表示π和e常量的近似值:
    Math.PI
    Math.E
    提示:在源文件的顶部加上下面这行代码:
    import static java.lang.Math.*;
    例如:
    System.out.println("The square root of \u03C0 is" + sqrt(PI));

    类型转换

    image.png

    图中有6个实心箭头,表示无信息丢失的转换;有3个虚箭头,表示可能有精度损失的转换。

    强制类型转换(cast)

    double x = 9.991;
    int nx = (int)x;
    这样 变量nx的值为9.
    强制类型转换通过截断小数部分将浮点值转换为整型。
    如果想对浮点数进行舍入运算,以便得到最接近的整数,那就需要用Math.round方法:
    double x = 9.991;
    int nx = (int)Math.round(x);
    现在,变量nx的值为10。当调用round的时候,仍然需要使用强制类型转换(int)。其原因是round方法返回的结果为long类型。由于存在信息丢失的可能性,所以只有使用显式的强制类型转换才能够将long类型转换成int类型。

    • 警告:如果视图将一个数值从一种类型强制转换为另一种类型,而又超出了目标类型的表示范围,结果就会截断成一个完全不同的值。例如,(byte)300的实际值是44。

    String类对象称为不可变字符串
    不可变字符串有一个优点:编译器可以让字符串共享。
    为了弄清楚具体的工作方式,可以想象将各种字符串放在公共的存储池中,字符串变量指向存储池中相应的位置,如果复制一个字符串变量,原始字符串与复制的字符串共享相同的字符。

    空串与Null串
    空串“”是长度为0的字符串。空船是一个Java对象,有自己的串长度(0)和内容(空)。不过String变量还可以存放一个特殊的值,名为Null,这表示目前没有任何对象与该变量关联。要检查一个字符串是否为null,可以用下面语句:
    if(str == null)

    代码点与代码单元

    Java字符串由char序列组成,char数据类型是一个采用UTF-16编码表示Unicode代码点的代码单元。大多数的常用Unicode字符使用一个代码单元就可以表示,而辅助字符需要一对代码单元表示。
    length方法将返回采用UTF-16编码表示的给定字符串所需要的代码单元数量。例如:
    String greeting = "Hello";
    int n = greeting.length();//is 5
    如果想要得到实际的长度,即代码点数量,可以调用:
    int cpCount = greeting.codePointCount(0,greeting.length());
    调用s.charAt(n)将返回位置n的代码单元,n介于0~s.length()-1之间。例如:
    char first = greeting.charAt(0);//first is 'H'
    char last = greeting.charAt(4);//last is 'o'
    要想得到第i个代码点,应该是用下列语句
    int index = greeting.offsetByCodePoints(0,i);
    int cp = greeting.codePointAt(index);
    -65

    相关文章

      网友评论

          本文标题:《Java核心技术卷1 基础知识》 第三章 Java的基本程序设

          本文链接:https://www.haomeiwen.com/subject/hhsaaxtx.html