书上是错的,下面是关于
Math.ceil()
,Math.floor()
,Math.rint()
,Math.round()
的测试输出:Math.ceil(2.1): 3.0
Math.ceil(2.0): 2.0
Math.ceil(-2.0): -2.0
Math.ceil(-2.1): -2.0
Math.floor(2.1): 2.0
Math.floor(2.0): 2.0
Math.floor(-2.0): -2.0
Math.floor(-2.1): -3.0
Math.rint(2.1): 2.0
Math.rint(-2.0): -2.0
Math.rint(-2.1): -2.0
Math.rint(2.5): 2.0
Math.rint(4.5): 4.0
Math.rint(-2.5): -2.0
Math.round(2.6f): 3
Math.round(2.0): 2
Math.round(-2.0f): -2
Math.round(-2.6): -3
Math.round(-2.4): -2ceil: 向上取整, floor 向下取整, rint 取左右两边最近的那个整数, 如果等距,取偶数。round 四舍五入(符号后加)。
Math
类包含在java.lang
包中,java.lang
中的所有类都被隐式导入java程序。以下两条语句对等:
char letter = 'A';
char letter = '\u0041'; // Character A's Unicode is 0041
- 数字转换为字符,取低16位, 高位被舍弃:
char ch = (char)0XAB0041; // The lower 16 bits hex code 0041 is assigned to ch
System.out.println(ch); // ch is character A
- 浮点数转换为字符,取整再转换:
char ch = (char)65.25; // Decimal 65 is assigned to ch
System.out.println(ch); // ch is character A
Character
类有很多很好用的方法:
Method | Description |
---|---|
isDigit(ch) | Returns true if the specified character is a digit. |
isLetter(ch) | Returns true if the specified character is a letter. |
isLetterOfDigit(ch) | Returns true if the specified character is a letter or digit. |
isLowerCase(ch) | Returns true if the specified character is a lowercase letter. |
isUpperCase(ch) | Returns true if the specified character is an uppercase letter. |
toLowerCase(ch) | Returns the lowercase of the specified character. |
toUpperCase(ch) | Returns the uppercase of the specified character. |
- String
类的方法:
Method | Description |
---|---|
length() | Returns the number of characters in this string. |
charAt(index) | Returns the character at the specified index from this string. |
concat(s1) | Returns a new string that concatenates this string with string s1. |
toUpperCase() | Returns a new string with all letters in uppercase. |
toLowerCase() | Returns a new string with all letters in lowercase |
trim() | Returns a new string with whitespace characters trimmed on both sides. |
- 如果
i = 1, j = 2
, 下列语句输出i + j is 12
, 必须加括号才能输出正确结果:
System.out.println("i + j is " + i + j);
trim()
方法将删除字符串首末两端的空白字符(whitespace characters):' ', \t, \f, \r
, 或\n
char
类型自增自减:
char ch = 'a';
System.out.println(++ch);
从控制台读取字符串使用 next() 方法,如果是读取整行,则用 nextLine() 方法:
下面的输入,空格分开:
Scanner input = new Scanner(System.in);
System.out.print("Enter three words separated by spaces: ");
String s1 = input.next();
String s2 = input.next();
String s3 = input.next();
System.out.println("s1 is " + s1);
System.out.println("s2 is " + s2);
System.out.println("s3 is " + s3);
但是,如果为了避免输入错误,必须先使用
nextLine()
, 然后再使用nextByte(), nextShort(), nextInt(), nextLong(), nextFloat(), nextDouble(), 或 next()
,原因不知道。从控制台读取单个字符,读一行,然后调用
charAt(0)
:
Scanner input = new Scanner(System.in);
System.out.print("Enter a character: ");
String s = input.nextLine();
char ch = s.charAt(0);
System.out.println("The character entered is " + ch);
- 字符串的比较:
方法 | 描述 |
---|---|
equals(s1) | 如果字符串与s1相等,返回true. |
equalsIgnoreCase(s1) | 同上,但不区分大小写. |
compareTo(s1) | 大于返回整数,等于返回0,小于返回负数. |
compareToIgnoreCase(s1) | 同上,但不区分大小写. |
startsWith(prefix) | 如果以指定prefix开头,返回true. |
endsWith(suffix) | 如果以指定suffix结尾,返回true. |
contains(s1) | 如果s1是子串,返回true. |
== 与 equals 的区别: == 判断两个String 变量是否指向相同的对象,equals则判断两个变量是否内容相同。
获取子串:substring(beginIndex)
: 从beginIndex
指定的字符开始,直到字符串结束。
substring(beginIndex, endIndex)
: 从beginIndex
指定的字符开始,直到endIndex - 1
指定的字符。String
的另外两个方法:lastIndexOf(ch, fromIndex)
,lastIndexOf(s, fromIndex)
, 以 fromIndex为分界,取前一部分的子串,然后返回最大索引值。格式化输出:
使用System.out.printf() 实现格式化输出, 默认右对齐,加负号左对齐,如果指定的宽度不够,则自动加宽。
Format | Specifier | Output Example |
---|---|---|
%b | a Boolean value | true or false |
%c | a character | ‘a’ |
%d | a decimal integer | 200 |
%f | a floating-point number | 45.460000 |
%e | a number in standard scientific notation | 4.556000e+01 |
%s | a string | “Java is cool” |
- 格式指示符必须和对应性完全匹配,例如,如果格式指示符为 %f 或 %e, 那么变量值必须类似于 40.0, 不能为40,否则将出现运行时错误。
- 下列语句:
System.out.printf("amount is %f %e\n", 32.32, 32.32);
System.out.printf("amount is %5.2f%% %5.4e\n", 32.327, 32.32);
System.out.printf("%6b\n", (1 > 2));
System.out.printf("%6s\n", "Java");
System.out.printf("%-6b%s\n", (1 > 2), "Java");
System.out.printf("%6b%-8s\n", (1 > 2), "Java");
输出如下:
amount is 32.320000 3.232000e+01
amount is 32.33% 3.2320e+01
false
Java
false Java
falseJava
Introduction to Java Programming, chapter 4