4.1 常用数学函数
Math类中的方法分为三类:三角函数方法(trigonometric method)、指数函数方法(exponent method)和服务方法(service method)。
服务方法包括取整、求最小值、求最大值、求绝对值和随机方法。
除了这些方法之外,Math类还提供了两个很有用的double型常量,PI和E(自然对数的底)。可以在任意程序中用Math.PI和Math.E来使用这两个常量。
Math类在程序中使用,但是并没有导入,因为它在java.lang包中。在一个Java程序中,java.lang包中的所有类是隐式导入的。
4.1.1 三角函数方法
sin(radians) 返回以弧度为单位的角度的三角正弦函数值
cos(radians) 返回以弧度为单位的角度的三角余弦函数值
tan(radians) 返回以弧度为单位的角度的三角正切函数值
toRadians(degree) 将以度为单位的角度值转换为以弧度表示
toDegree(radians) 将以弧度为单位的角度值转换为以度表示
asin(a) 返回以弧度为单位的角度的反三角正弦函数值
acos(a) 返回以弧度为单位的角度的反三角余弦函数值
atan(a) 返回以弧度为单位的角度的反三角正切函数值
4.1.2 指数函数方法
exp(x) 返回e的x次方
log(x) 返回x的自然对数
log10(x) 返回x的以10为底的对数
pow(a,b) 返回a的b次方
sqrt(x) 对于x>=0的数字,返回x的平方根
4.1.3 取整方法
ceil(x) x向上取整为它最接近的整数,该整数作为一个双精度值返回。
floor(x) x向下取整为它最接近的整数,该整数作为一个双精度值返回。
rint(x) x取整为它最接近的整数。如果x与两个整数的距离相等,偶数的整数作为一个双精度值返回。
round(x) 如果x是单精度数,返回(int)Math.floor(x+0.5);如果x是双精度数,返回(long)Math.floor(x+0.5)
4.1.4 min、max和abs方法
min和max方法用于返回两个数(int、long、float或double型)的最小值和最大值。
abs方法以返回一个数(int、long、float或double型)的绝对值。
4.1.5 random方法
random()方法,生成大于等于0.0且小于1.0的double型随机数。
4.2 字符数据类型和操作
字符串字面值必须括在双引号中。而字符字面值是括在单引号中的单个字符。因此”A”是一个字符串,而’A’是一个字符。
4.2.1 Unicode和ASCII码
计算机内部使用二进制数。一个字符在计算机中是以0和1构成的序列的形式来存储的。将字符映射到它的二进制形式的过程称为编码(encoding)。字符有多种不同的编码方式,编码表(encoding scheme)定义该如何编码每个字符。
一个16位Unicode码占两个字节,用以\u开头的4位十六进制数表示,范围从’\u0000’到’\uFFFF’。
大多数计算机采用ASCII(美国标准信息交换码),它是表示所有大小写字母、数字、标点符号和控制字符的8位编码表。Unicode码包括ASCII码,从’\u0000’到’\u007F’对应ASCIIS码。
自增和自减操作符也可用在char型变量上,这会得到该字符之前或之后的Unicode字符。
4.2.2 特殊字符的转义序列
转义序列由反斜杠(\)后面加上一个字符或者一些数字位组成。
转义序列中的符号作为一个整体翻译,而不是分开翻译。一个转义序列被当作一个字符。
\b 退格键
\t Tab键
\n 换行符
\f 换页符
\r 回车符
\ 反斜杠
" 双引号
4.2.3 字符型数据与数值型数据之间的转换
char型数据可以转换成任意一种数值类型,反之亦然。将整数转换成char型数据时,只用到该数据的低十六位,其余部分都被忽略。
要将一个char型数据转换为数值型时,这个字符的Unicode就被转换成某个指定的数值类型。
将整数转换成char型数据时,只用到该数据的低十六位,其余部分都被忽略。
所有数值操作符都可以用在char型操作数上。如果另一个操作数是一个数字或字符,那么char型操作数就会被自动转换成一个数字。如果另一个操作数是一个字符串,字符就会与该字符串相连。
4.2.4 字符的比较和测试
两个字符可以使用关系操作符进行比较,如同比较两个数字一样。这是通过比较两个字符的Unicode值实现的。
程序中经常需要测试一个字符是数字、字母;大写字母,还是小写字母。大小写字母的Unicode是连续的整数,从’a’的Unicode开始。这个特征可以用于编写测试字符的编码。
为了方便,Java的Character类提供了下列方法用于进行字符测试:
isDigit(ch) 如果指定的字符是一个数字,返回true
isLetter(ch) 如果指定的字符是一个字母,返回true
isLetterOrDigit(ch) 如果指定的字符是一个数字或字母,返回true
isLowerCase(ch) 如果指定的字符是一个小写字母,返回true
isUpperCase(ch) 如果指定的字符是一个大写字母,返回true
toLowerCase(ch) 返回指定的字符的小写形式
toUpperCase(ch) 返回指定字符的大写形式
4.3 String类型
char类型只表示一个字符。为了表示一串字符,可以使用被称为String(字符串)的数据类型。
String实际上与System类和Scanner类一样,都是Java库中一个预定义的类。String类型不是基本数据类型,而是引用类型(reference type)。任何Java类都可以作为引用类型来声明一个变量。使用引用类型声明的变量称为引用变量,它引用一个对象。
String对象的简单方法:
length() 返回字符串中的字符数
charAt(index) 返回字符串中指定位置的字符
concat(s1) 将本字符串和字符串s1连接,返回一个新字符串
toUpperCase() 返回一个新字符串,其中所有的字母大写
toLowerCase() 返回一个新字符串,其中所有的字母小写
trim() 返回一个新字符串,去掉了两边的空白字符
String是Java中的对象。上述方法只能从一个特定的字符串实例来调用。因此,这些方法称为实例方法。非实例方法称为静态方法。静态方法可以不使用对象来调用。定义在Math类中的所有方法都是静态方法。它们没有绑定到一个特定的对象实例上。
调用一个实例方法的语法是:reference-Variable.methodName(arguments)。一个方法可以有多个参数,或者没有参数。
调用一个静态方法的语法是:ClassName.methodName(arguments)。
在字符串s中越界访问字符是一种常见的程序设计错误。为了避免此类错误,要确保使用的下标不会超过s.length()-1。
4.3.1 从控制台读取字符串
为了从控制台读取字符串,可以调用Scanner对象上的next()方法。
next()方法读取以空白字符结束的字符串(即’ ‘、’\t’、’\f’、’\r’或’\n’)。
可以用nextLine()方法读取一整行文本。nextLine()方法读取以按下回车键未结束标志的字符串。
为了方便,将使用方法next()、nextByte()、nextShort()、nextInt()、nextLong()、nextDouble()和nextFloat()的输入称为基于标记的输入,因为它们读取采取空白字符分隔的单个元素,而不是读取整行。nextLine()方法称为基于行的输入。
4.3.2 字符串比较
String类提供用于比较两个字符串的方法:
equals(s1) 如果该字符串等于字符串s1,返回true
equalsIgnoreCase() 如果该字符串等于字符串s1,返回true;不区分大小写
compareTo(s1) 返回一个大于0、等于0、小于0的整数,表明该字符串是否大于、等于或者小于s1
compareToIgnoreCase() 和compareTo一样,不区分大小写
startsWith(prefix) 如果字符串以特定的前缀开始,返回true
endsWith(suffix) 如果字符串以特定的后缀结束,返回true
contains(s1) 如果s1是该字符串的子字符串,返回true
操作符==只能检测string1和string2是否指向同一个对象,但它不会告诉你它们的内容是否相同。
4.3.3 获得子字符串
substring(beginIndex) 返回该字符串的子串,从指定位置beginIndex的字符开始到字符串的结尾。
substring(beginIndex,endIndex) 返回该字符串的子串,从指定位置beginIndex的字符开始到下标为endIndex-1的字符。注意:位于endIndex位置的字符不属于该子字符串的一部分。
如果beginIndex为endIndex,substring(beginIndex,endIndex)返回一个长度为0的空字符串。
4.3.4 获取字符串中的字符或者子串
String类提供了几个版本的indexOf和lastIndexOf方法,它们可以在字符串中找出一个字符或一个子串:
indexOf(ch) 返回字符串中出现的第一个ch的下标。如果没有匹配的,返回-1。
indexOf(ch,fromIndex) 返回字符串中fromIndex之后出现的第一个ch下标。如果没有匹配的,返回-1。
indexOf(s) 返回字符串中出现的第一个字符串s的下标。如果没有匹配的,返回-1。
indexOf(s,fromIndex) 返回字符串中fromIndex之后出现的第一个字符串s的下标。如果没有匹配的,返回-1。
LastIndexOf(ch) 返回字符串中出现的最后一个ch的下标。如果没有匹配的,返回-1。
LastIndexOf(ch,fromIndex) 返回字符串中fromIndex之后出现的最后一个ch下标。如果没有匹配的,返回-1。
LastIndexOf(s) 返回字符串中出现的最后一个字符串s的下标。如果没有匹配的,返回-1。
LastIndexOf(s,fromIndex) 返回字符串中fromIndex之前出现的最后一个字符串s的下标。如果没有匹配的,返回-1。
4.3.5 字符串和数字间的转换
可以将数值型字符串转换为数值。要将字符串转换为int值,使用Integer.parseInt方法。
要将字符串转换为double值,使用Double.parseDouble方法。
如果字符串不是数值型字符串,转换时将导致一个运行时错误。
可以将数值转换为字符串,只需要简单使用字符串的连接操作符。 String s = number +” “;
4.4 格式化控制台输出
可以使用System.out.printf方法在控制台上显示格式化输出。