第四章
4.1 引言
4.2 常用数学函数
三角函数方法(trigonometric method)
指教函数方法(exponent method)
服务方法(service method)
取整方法(min、max、abs、random)
Math常量:Math.PI( π \pi π)和Math.E(自然对数的底)
Math 类在程序中使用,但是并没有导入,因为它在java.lang 包中,所有类是隐式导人的
4.3 字符数据类型和操作
关于char类型
字符数据类型char表示单个字符,字符串直接量必须括在双引号中,而字符直接量是括在单引号中的单个字符
计算机内部使用二进制数。一个字符在计算机中是以 0 和1构成的序列的形式来存储的。将字符映射到它的二进制形式的过程称为编码( encoding )。字符有多种不同的编码方式,编码表(encoding scheme) 定义该如何编码每个字符。
Unicode和ASCII
Java 支持 Unicode 码,Unicode 码是由 Unicode 协会建立的一种编码方案,它支持使用世界各种语言所书写的文本的交换、处理和显示。1个16 位 Unicode 码占两个字节,用以\u开头的4位十六进制数表示,范围从\ u0000 到\uFFFF
大多数计算机采用 ASCII 码(美国标准信息交换码),它是表示所有大小写字母、数字、标点符号和控制字符8位编码表。Unicode码包括ASCII码,从 \u0000到 \u007F对应128个ASCII字符
自增和自减操作符也可用在 char 型变量上,这会得到该字符之前或之后的 Unicode字符。例如,下面的语句显示字符b。
char ch = a;
System.out.println(++ch);
转义序列
转义序列中的序列号作为一个整体翻译,而不是分开翻译,一个转义序列被当作一个字符。例如,符号\和""一起代表一个字符。
//编译器会认为第二个引号字符就是这个字符串的结 束标志,而不知道如何处理剩余的字符。
System.out.println("He said "Java is fun"");
//需要使用转义序列
System.out.println("He said \\"Java is fun\\"");
字符型数据与数值型数据之间的转换
将整数转换成 char型数据时, 只用到该数据的低十六位,其余部分都被忽略。
char ch = (char)0XAB004; // The lower 16 bits hex code 0041 is assigned to ch
System.out.println(ch); // ch is character A
将浮点值转换成char型数据时,首先将浮点值转换成 int 型,然后将这个整型值转换为 char 型。
char ch = (char)65.25; // Decimal 65 is assigned to ch System.out.println(ch); ch is character A
将char型数据转换成数值型时,这个字符的Unicode 码就被转换成某个特定的数值类型。
int i = (int) 'A'; // The Unicode of character A is assigned to i
System.out.println(i); // i is 65
如果转换结果适用于目标变量,就可以使用隐式转换方式; 因为a的Unicode码是97,在1个字节的范围内,所以就可以使用隐式转换方式
byte b = "a";
int i = "a";
但是,因为 Unicode 码 \uFFF4 超过了一个字节的范围,就需要显式转换
byte b = (byte)'\uFFF4';
如果另一个操作数是一个数字或字符, 那么 char 型操作数就会被自动转换成一个数字。如果另一个操作数是一个字符串,字符就 会与该字符串相连。
int i = '2' + '3'; // (int)'2' is 50 and (int)'3' is 51
System,out.println('i is " +i); // i is 101
int j = 2 + 'a'; // (int)'a' is 97
System.out.println("j is " + j); // j is 99
System.out.println(j + " is the Unicode for character " + (char)j); // 99 is the Unicode for character c
System.out.println("Chapter " + '2');
Output:
i is 101
j is 99
99 is the Unicode for character c
Chapter 2
字符的比较与测试
两个字符可以使用关系操作符进行比较,如同比较两个数字一样。这是通过比较两个字符的Unicode值实现的
小写字母的Unicode是连续的整数,从’a’的 Unicode 开始,然后是’b’, 同理,对于大写字母和数字字符也是这样的。这个特征可以用于编写测试字符的编码。比如,下列代码测试字符 ch 是大写字母、小写字母,还是数字字符。
if (ch >= 'A' && ch <= 'Z')
System.out.println(ch + " is an uppercase letter");
else if (ch >= 'a' && ch <= 'z')
System.out.println(ch + " is a lowercase letter");
else if (ch >= '0' && ch <= '9')
System.out.println(ch + " is a numeric character");
为了方便,Java 的Character类提供了下列方法用于进行字符测试
4.4 String类型
字符串String是一个字符序列,用来表示一串char
String 是 Java中的对象。表中的方法只能从一个特定的字符串实例来调用。由于这个原因,这些方法称为实例方法。非实例方法称为静态方法。静态方法可以不使用对象来调用。定义在 Math 类中的所有方法都是静态方法。它们没有绑定到一个特定的对象实例上。
调用一个实例方法的语法是 reference-Variable.methodName(arguments)。一个方法可以有多个参数,或者无参。例如,charAt(index)方法具有一个参数,但是length()方法则无参
调用静态方法的语法是 ClassName.methodName(arguments)。例如, Math类中的pow方法可以使用Math.pow(2,2.5)来调用。
4.5示例学习
4.6 格式化控制台输出
可以使用 System.out.printf 方法在控制台上显示格式化输出。语法是
System.out.printf(format, iteml, item2, ... ,itemk')
例如:
int count = 5;
Double amount = 45.56;
System.out.printf("count is %d and amount is %f", count, amount);
条目与格式标识符必须在类型上严格匹配。对应于格式标识符%f必须是浮点型值,例如:是40.0而不是40。因此,int型变量不能匹配%f