Skip to content

Latest commit

 

History

History
302 lines (208 loc) · 11.4 KB

File metadata and controls

302 lines (208 loc) · 11.4 KB

(六)数学函数、字符和字符串

一、数学函数

Math类函数使用时无需导入,因为它在 java.lang 包中,已经默认隐式导入。

1.1 三角函数

r 是弧度单位,d 是角度单位,a 是一定范围内的常数

方法 描述
Math.sin(r) 正弦
Math.cos(r) 余弦
Math.tan(r) 正切
Math.toRadians(d) 角度转弧度
Math.toDegrees(r) 弧度转角度
asin(a) 反三角正弦 [-Π/2,Π/2]
acos(a) 反三角余弦 [0, Π]
atan(a) 反三角正切 [-Π/2,Π/2]

1.2 指数函数

方法 描述
Math.pow(a, b) a^b^
Math.sqrt(x) √x
Math.log(x) ㏑x
Math.log10(x) log10(x)
Math.exp(x) e^x^

1.3 取整函数

方法 描述
Math.ceil(x) 向上取整最接近的整数,返回值为 double
Math.floor(x) 向下取整最接近的整数,返回值为 double
Math.rint(x) 取整最接近的整数。若距离相等则偶数的整数作为返回值,类型最后为 double
Math.round(x) 若x为float,则返回(int)Math.floor(x+0.5);若为double则返回(double)Math.floor(x+0.5)

1.4 比较函数

a,b为int,long,float,double

方法 描述
Math.min(a,b) 返回最小值
Math.max(a, b) 返回最大值
Math.abs(x) 返回绝对值

二、字符类型和操作

字符直接量被单引号括起来,字符串被双引号括起来。

2.1 Unicode 和 ASCII码

将字符映射到它的二进制形式的过程称为编码。

一个16位Unicode码占两个字节,以 \u 表示的4位十六进制表示,范围从 \u0000\uffff

大多数计算机采用 ASCII码(美国标准信息交换码),它是表示所有大小写字母、数字、标点符号和控制字符的8位编码表。

对于 char 型数据,也可以用对应 ASCII 码或 Unicode 码来表示。

// 以下3条语句等价
char a = 'A';
char a = '\u0041';
char a = 65;

2.2 转义字符

在输出一些特殊的字符比如''""\等可用转移符反斜杠 \接字符的形式组成转移字符。

转移符号 意义
\" "
\' '
\\ \
\n 换行符
\t Tab制表
\r 回车符
\b 退格符

2.3 字符型数据与其他数据的转换

char 型数据可以转换成任意一种数值类型。浮点数转换成 char 型时需要先转为 int 型。

所有数值操作符都可以用在 char 型数据上。``char型与数值型则char` 型转换为数值型,与 `String` 型则与字符串相连。

2.4 字符的比较和测试

两个字符可以根据其 Unicode 值通过关系操作符进行比较。

字符 十进制
'A' ~ 'Z' 65 ~ 90
'a' ~ 'z' 97 ~ 122
'0' ~ '9' 48 ~ 57

使用 java.lang 包中的 Charactor 类提供的方法进行字符测试

方法 描述
Charactor.isDigit(c) 若c为数字字符,返回true
Charactor.isLetter(c) 若c为字母字符,返回true
Charactor.isDigitOrLetter(c) 若c为数字或字母字符,返回true
Charactor.isLowerCase(c) 若c为小写字母字符,返回true
Charactor.isUpperCase(c) 若c为大写字母字符,返回true
Charactor.toLowerCase(c) 返回c的小写形式
Charactor.toUpperCase(c) 返回c的大写形式

三、字符串及其操作

3.1 字符串

字符串是用双引号包裹起来的一串字符序列,属于引用数据类型。

3.2 实例方法与静态方法

只能通过从一个具体实例来调用的方法叫做 实例方法 ,有的有参数有的无。例如String对象中的字符串处理方法。

调用实例方法的方式:ref.methodName(args) (参数可有可无,可一可多)

非实例化方法叫做 静态方法,例如 Math 类和 Charactor 类中的方法。

调用静态方法的方式:className.methodName(args)

3.3 String对象中的方法

str为实例的字符串,index 为字符串索引

实例方法 描述
str.length() 返回字符串长度
str.charAt(index) 返回指定索引位置的字符
str.concat(str1) 连接指定字符
str.toUpperCase() 返回一个全部大写的新字符串
str.toLowerCase() 返回一个全部小写的新字符串
str.trim() 返回一个去掉两边空白的新字符串

3.3.1求字符串长度

String str = "message";
int l = str.length(); // l == 7

3.3.2 从字符串中获取字符

确保不越界:index <= str.length() - 1

String str = "message";
char ch = str.charAt(1); // ch == 'e'

3.3.3 连接字符串

  • 使用 str.concat(s1) 连接
  • 使用 + 连接
  • 使用 + 可连接数值类型和 String 类型

3.3.4 字符串的转换

str.toUpperCase() 将字符串全部转换为大写,str.toLowerCase() 将字符串全部转换为小写;

str.trim() 清除字符串两端的空白字符

空白字符:' '\n, \t, \r, \b

3.3.4从键盘读取字符串

  • 使用Scanner 对象的 next() 方法读取以空白字符结束的字符串:

    import java.util.Scanner;
    Scanner input = new Scanner(System.in);
    String str = input.next();
  • 使用 nextLine() 读取以回车键为结束的字符串,即读取一整行内容:

    import java.util.Scanner;
    Scanner input = new Scanner(System.in);
    String str = input.nextLine(); 

3.4 字符串的比较

str, str1为字符串

方法 描述
str.equals(str1) 若相等,返回true
str.equalsIgnoreCase(str1) 若相等,返回true,不区分大小写
str.compareTo(str1) 返回大于0、等于0、小于0的整数,代表str是否大于、等于、小于str1
str.compareToIgnoreCase(str1) 同上,且不区分大小写
str.startsWith(prefix) 若str以特定前缀prefix 开始,返回true
str.endsWith(suffix) 若str以特定前缀prefix 开始,返回true
str.contains(s1) 若str1是str的子字符串,返回true

3.4.1 比较字符串是否相等

== 只能比较 str 与 str1 是否指向同一个对象,不能比较内容。

  • 使用 str.equals(str1) 判断两字符串是否相等,相等返回 true,否则 false
  • str.compareTo(str1) 也可判断,若返回0则相等

3.4.2 字符串比较大小

compareTo()compareToIgnoreCase() 比较的返回值实际是字符串按照从前到后的顺序对应字符的 Unicode 值之差。

String str = "abcd";
String str1 = "abcm";
int diff = str.compareTo(str1); // diff == -9,str < str1

3.5 获得子字符串

  • 提取字符串中某个指定字符串:str.charAt(index)

  • 获得子串

    方法 描述
    str.substring(startIndex) 返回从startIndex到字符串结尾。
    str.substring(startIndex, endIndex) 返回从startIndexendIndex - 1 位置,范围前闭后开。
  • 寻找指定字符串

    实参 ch 可以是字符串 str

    方法 描述
    str.indexOf(ch) 返回str中出现的第一个ch的索引;若无则返回-1
    str.indexOf(ch, fromIndex) 返回在fromIndex之后(包括fromindex) 出现的第一个ch的索引;若无返回-1
    str.lastIndexOf(ch) 返回str中最后一次出现的ch的索引;若无返回-1
    str.lastIndexOf(ch, fromIndex) 返回fromIndex之前最后一次出现的ch的索引;若无返回-1

3.6 字符串与数字的互转

  • 数值型字符串转数字

    //Integer类和Double类都包含在java.lang包中
    int intValue = Integer.parsInt(intStirng);
    double doubleValue = Double.parseDouble(doubleString);
  • 数值转字符串

    int number = 12345;
    String s = number + "";

四、格式化控制台输出

使用 System.out.printf() 进行格式化输出

4.1 公式:%m.nf

  • m:域宽度
  • n:精度
  • f:转换码(格式标识符)

4.2 语法:System.out.printf(format, item1, item2, ... , itemk)

format 是由子串和格式化标识符构成的字符串

int i = 20;
double d = 123.4567;
System.out.printf("i is %d, d is %f", i, d);
// i is 20, d is 123.456700

4.3 常用格式化标识符

标识符 输出 举例
%b 布尔值 %6b 表示在true前面有2个空格,在false前面有1个空格
%c 字符 %4c 表示在字符前面加3个空格
%d 十进制整数 %5d :若整数宽度小于5,则在整数前面补充空格;若大于则整数增加宽度
%e 标准科学技术法 %10.2e : 浮点数部分宽度为12,包括小数点和前后的数字;是否补充空格同上
%f 浮点数 %10.2f : 包留小数点后2位,整数部分宽度为7位;是否补充空格同上
%s 字符串 %10f字符串条目宽度为10,若不够则自动增加宽度,若多余则补充空格

注意:

  • 若一个条目需要更多宽度,则自动增加宽度;若指定宽度有余,则补充空格;

  • 默认情况下,条目中的内容都是向右对齐的

    在格式标识符前面加一个 - 号 ( -%10s)表示向左对齐

  • 数据类型与格式化标识符要严格对应