[Java] Introduction to Java Programming 笔记 Chapter 4. 数学函数等

  • 书上是错的,下面是关于 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): -2

  • ceil: 向上取整, 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

猜你喜欢

转载自blog.csdn.net/ftell/article/details/82260190