常用库函数

数学方法


Java 常用数学方法 (Math 类)

1. 最大值与最小值

方法签名 功能描述 示例
static int max(int a, int b) 返回两个整数中的较大值 Math.max(5, 10)10
static double max(double a, double b) 返回两个浮点数中的较大值 Math.max(3.5, 2.8)3.5
static int min(int a, int b) 返回两个整数中的较小值 Math.min(5, 10)5
static double min(double a, double b) 返回两个浮点数中的较小值 Math.min(3.5, 2.8)2.8

2. 绝对值

方法签名 功能描述 示例
static int abs(int a) 返回整数的绝对值 Math.abs(-5)5
static double abs(double a) 返回浮点数的绝对值 Math.abs(-3.5)3.5

3. 幂运算与平方根

方法签名 功能描述 示例
static double pow(double a, double b) 返回 ab 次幂 Math.pow(2, 3)8.0
static double sqrt(double a) 返回 a 的平方根 Math.sqrt(25)5.0
static double cbrt(double a) 返回 a 的立方根 Math.cbrt(-8)-2.0

4. 四舍五入与取整

方法签名 功能描述 示例
static long round(double a) 四舍五入返回最接近的整数 Math.round(3.6)4
static double ceil(double a) 向上取整 Math.ceil(3.2)4.0
static double floor(double a) 向下取整 Math.floor(3.8)3.0

5. 三角函数(参数为弧度)

方法签名 功能描述 示例
static double sin(double radians) 返回角度的正弦值 Math.sin(Math.PI/2)1.0
static double cos(double radians) 返回角度的余弦值 Math.cos(0)1.0
static double tan(double radians) 返回角度的正切值 Math.tan(0)0.0
static double toRadians(double degrees) 角度转弧度 Math.toRadians(90)π/2

6. 对数与指数

方法签名 功能描述 示例
static double log(double a) 返回自然对数(底为 e Math.log(Math.E)1.0
static double log10(double a) 返回以 10 为底的对数 Math.log10(100)2.0
static double exp(double a) 返回 ea 次幂 Math.exp(1)2.718...

7. 随机数

方法签名 功能描述 示例
static double random() 返回 [0.0, 1.0) 的随机数 Math.random()0.0 ≤ x < 1.0

8. 其他方法

方法签名 功能描述 示例
static double hypot(double x, double y) 计算直角三角形的斜边(√(x² + y²)) Math.hypot(3, 4)5.0
static double IEEEremainder(double a, double b) 计算 a 除以 b 的余数(IEEE 754标准) Math.IEEEremainder(10, 3)1.0

9. 常用常量

常量
Math.PI 圆周率 π(约 3.14159)
Math.E 自然对数的底 e(约 2.71828)

使用示例

public class MathExample {
    public static void main(String[] args) {
        System.out.println("最大值: " + Math.max(5, 10));        // 输出 10
        System.out.println("平方根: " + Math.sqrt(25));         // 输出 5.0
        System.out.println("随机数: " + Math.random());         // 输出 0.0~1.0之间的数
        System.out.println("圆周率: " + Math.PI);              // 输出 3.141592653589793
    }
}

注意事项

  1. 参数类型:大部分方法支持 intlongfloatdouble,但返回值类型与参数类型相关。
  2. 异常处理:如 sqrt(-1) 会返回 NaN(Not a Number)。
  3. 弧度单位:三角函数参数需为弧度,可用 Math.toRadians() 转换角度。

大小写转换


一、标准方法:toLowerCase()toUpperCase()

1. 字符串转换

(1) String.toLowerCase()

  • 作用:将字符串中所有字符转为小写。

  • 示例

    String str = "Hello World! 123";
    String lowerStr = str.toLowerCase();
    System.out.println(lowerStr);  // 输出:hello world! 123
    

(2) String.toUpperCase()

  • 作用:将字符串中所有字符转为大写。

  • 示例

    String str = "Hello World! 123";
    String upperStr = str.toUpperCase();
    System.out.println(upperStr);  // 输出:HELLO WORLD! 123
    

注意:

  • 非字母字符(如数字、符号)不会被转换。

  • Locale 问题:默认使用系统本地化设置,若需指定语言环境,可以传入 Locale 参数:

    String str = "İstanbul";
    String lower = str.toLowerCase(Locale.ENGLISH);  // 强制按英语规则转换
    

2. 字符转换

(1) Character.toLowerCase(char c)

  • 作用:将单个字符转为小写。

  • 示例

    char ch = 'A';
    char lowerCh = Character.toLowerCase(ch);  // lowerCh = 'a'
    

(2) Character.toUpperCase(char c)

  • 作用:将单个字符转为大写。

  • 示例

    char ch = 'z';
    char upperCh = Character.toUpperCase(ch);  // upperCh = 'Z'
    

二、异或(XOR)转换大小写的原理

1. ASCII 编码的规律

在 ASCII 编码中,大小写字母的二进制值相差 32

  • 'A' → 65(二进制 01000001
  • 'a' → 97(二进制 01100001
  • 差值为 32(二进制 00100000,即第 6 位为 1)。

通过 异或 32(即 ^ 0x20),可以快速切换大小写:

char ch = 'A';
char lowerCh = (char)(ch ^ 0x20);  // lowerCh = 'a'

char ch2 = 'z';
char upperCh = (char)(ch2 ^ 0x20); // upperCh = 'Z'

2. 示例代码

public class CaseConversion {
    public static void main(String[] args) {
        char ch = 'B';
        // 转小写
        char lower = (char)(ch ^ 32);
        System.out.println(lower);  // 输出:b

        // 转大写(再次异或)
        char upper = (char)(lower ^ 0x20);
        System.out.println(upper);  // 输出:B
    }
}

3. 注意事项

  • 仅适用于 ASCII 字母:非字母字符(如数字、符号)异或后会得到不可预测的结果。
  • 不适用于 Unicode:Unicode 字符的编码规则不同,此方法可能失效。
  • 可读性差:优先使用 toLowerCase()toUpperCase() 方法。

三、总结对比

方法 适用场景 优点 缺点
toLowerCase() 字符串或字符转小写 简单直观,支持国际化 无法处理特殊需求(如仅部分字符转换)
toUpperCase() 字符串或字符转大写 同上 同上
异或(XOR) 快速 ASCII 字母大小写切换 高效(底层位运算) 仅支持 ASCII,可读性差

四、ASCII码表

十进制 十六进制 字符 描述 十进制 十六进制 字符 描述
0 00 NUL 空字符 64 40 @ 电子邮件符号
1 01 SOH 标题开始 65 41 A 大写字母 A
2 02 STX 正文开始 66 42 B 大写字母 B
3 03 ETX 正文结束 67 43 C 大写字母 C
4 04 EOT 传输结束 68 44 D 大写字母 D
5 05 ENQ 请求 69 45 E 大写字母 E
6 06 ACK 收到通知 70 46 F 大写字母 F
7 07 BEL 响铃 71 47 G 大写字母 G
8 08 BS 退格 72 48 H 大写字母 H
9 09 HT 水平制表符 73 49 I 大写字母 I
10 0A LF 换行符 74 4A J 大写字母 J
11 0B VT 垂直制表符 75 4B K 大写字母 K
12 0C FF 换页符 76 4C L 大写字母 L
13 0D CR 回车符 77 4D M 大写字母 M
14 0E SO 移位输出 78 4E N 大写字母 N
15 0F SI 移位输入 79 4F O 大写字母 O
16 10 DLE 数据链路转义 80 50 P 大写字母 P
17 11 DC1 设备控制 1 81 51 Q 大写字母 Q
18 12 DC2 设备控制 2 82 52 R 大写字母 R
19 13 DC3 设备控制 3 83 53 S 大写字母 S
20 14 DC4 设备控制 4 84 54 T 大写字母 T
21 15 NAK 拒绝接收 85 55 U 大写字母 U
22 16 SYN 同步空闲 86 56 V 大写字母 V
23 17 ETB 传输块结束 87 57 W 大写字母 W
24 18 CAN 取消 88 58 X 大写字母 X
25 19 EM 介质中断 89 59 Y 大写字母 Y
26 1A SUB 替换 90 5A Z 大写字母 Z
27 1B ESC 转义 91 5B [ 左方括号
28 1C FS 文件分隔符 92 5C \ 反斜杠
29 1D GS 分组分隔符 93 5D ] 右方括号
30 1E RS 记录分隔符 94 5E ^ 脱字符
31 1F US 单元分隔符 95 5F _ 下划线
32 20 空格 96 60 ` 重音符
33 21 ! 感叹号 97 61 a 小写字母 a
34 22 " 双引号 98 62 b 小写字母 b
35 23 # 井号 99 63 c 小写字母 c
36 24 $ 美元符号 100 64 d 小写字母 d
37 25 % 百分号 101 65 e 小写字母 e
38 26 & 和号 102 66 f 小写字母 f
39 27 ' 单引号 103 67 g 小写字母 g
40 28 ( 左括号 104 68 h 小写字母 h
41 29 ) 右括号 105 69 i 小写字母 i
42 2A * 星号 106 6A j 小写字母 j
43 2B + 加号 107 6B k 小写字母 k
44 2C , 逗号 108 6C l 小写字母 l
45 2D - 减号 109 6D m 小写字母 m
46 2E . 句号 110 6E n 小写字母 n
47 2F / 斜杠 111 6F o 小写字母 o
48 30 0 数字 0 112 70 p 小写字母 p
49 31 1 数字 1 113 71 q 小写字母 q
50 32 2 数字 2 114 72 r 小写字母 r
51 33 3 数字 3 115 73 s 小写字母 s
52 34 4 数字 4 116 74 t 小写字母 t
53 35 5 数字 5 117 75 u 小写字母 u
54 36 6 数字 6 118 76 v 小写字母 v
55 37 7 数字 7 119 77 w 小写字母 w
56 38 8 数字 8 120 78 x 小写字母 x
57 39 9 数字 9 121 79 y 小写字母 y
58 3A : 冒号 122 7A z 小写字母 z
59 3B ; 分号 123 7B { 左花括号
60 3C < 小于号 124 7C | 竖线
61 3D = 等号 125 7D } 右花括号
62 3E > 大于号 126 7E ~ 波浪号
63 3F ? 问号 127 7F DEL 删除
posted @ 2025-02-22 15:33  咋还没来  阅读(30)  评论(0)    收藏  举报