Math类和Random类(数学公式相关类)

本文介绍Java中Math类的基本数学运算方法,包括绝对值、向上取整、向下取整及四舍五入等操作,并展示了如何使用Math类生成随机数。此外,还介绍了Random类的使用方法,包括生成特定范围内的随机数以及如何利用Random类生成验证码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。

常用方法:

1、static 数值类型 abs(数值类型 a) 
     返回 double 值的绝对值。

2、static double ceil(double a) 
     返回最小的(最接近负无穷大)double 值,该值大于等于参数,并等于某个整数。 也叫向上取值

3、static double floor(double a) 
    返回最大的(最接近正无穷大)double 值,该值小于等于参数,并等于某个整数。也叫向下取值

4、static 数值类型 round (数值类型 a) 
     返回最接近参数的数值。也叫四舍五入

5、static double random() 
     返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。也叫随机数函数。

Random 类:

此类的实例用于生成伪随机数流。如果用相同的种子创建两个 Random 实例,则对每个实例进行相同的方法调用序列,它们将生成并返回相同的数字序列。为了保证此属性的实现,为类 Random 指定了特定的算法。为了 Java 代码的完全可移植性,Java 实现必须让类 Random 使用此处所示的所有算法。但是允许 Random 类的子类使用其他算法,只要其符合所有方法的常规协定即可。

常用方法:

1、Random() 
     创建一个新的随机数生成器。

2、数值类型 next数值类型 (int bits) 
     生成下一个伪随机数。

代码示例:

 1 import java.util.Random;
 2 
 3 public class MathTest {
 4     public static void main(String[] args) {
 5         System.out.println("绝对值:"+Math.abs(-3));
 6         System.out.println("向上取整:"+Math.ceil(3.14));
 7         System.out.println("向下取整:"+Math.floor(-3.14)); 
 8         System.out.println("四舍五入:"+Math.round(3.54));
 9         System.out.println("随机数:"+Math.random());
10         //Random类产生特定范围的随机数
11         Random random1 = new Random(1);
12         Random random2 = new Random(1);
13         int randomNum = random1.nextInt(10)+1; //产生 的 随机数就是0-10之间
14         int randomNum2 = random2.nextInt(10)+1; //产生 的 随机数就是0-10之间
15         System.out.println("随机数:"+ randomNum+"  随机数2:"+ randomNum2);
16         //需求: 编写一个函数随机产生四位的验证码。
17         char[] arr = {'我','是','沈','a','阳','f','B'};
18         StringBuilder sb = new StringBuilder();
19         Random random = new Random();
20         //需要四个随机数,通过随机数获取字符数组中的字符,
21         for(int i  = 0 ; i< 4 ; i++){
22             int index = random.nextInt(arr.length);  //产生的 随机数必须是数组的索引值范围之内的。
23             sb.append(arr[index]);
24         }
25         System.out.println("验证码:"+ sb);
26     }
27 }
View Code

 

转载于:https://www.cnblogs.com/nicker/p/6213397.html

<think>好的,我现在需要帮用户总结Java中常用的实用。首先,用户提到了几个引用,特别是Object、equals方法,以及StringStringBuffer。我应该从这些基础开始,然后扩展到其他常用。 首先,Object是所有的父,这点必须提到。需要解释它的重要性以及常用方法,比如equals()、hashCode()、toString()。这里要注意对比==equals的区别,用户可能对这个面试题感兴趣,所以得详细说明。 接下来是String,不可变性是关键点,要举例子说明。然后提到StringBufferStringBuilder的区别,用户可能对性能优化有兴趣,所以需要强调线程安全性使用场景。 然后是包装,比如Integer、Double,自动装箱拆箱的概念要解释清楚,可能涉及性能问题,比如缓存机制。Math的方法也是常用的,比如数学运算,可以简单列出几个方法。 集合相关虽然用户没有直接提到,但实用中应该包含,比如CollectionsArrays,它们提供静态方法方便操作集合数组。时间日期部分,旧版的DateCalendar需要提及,但也要提到新的java.time包,因为用户可能想知道最新实践。 异常比如ExceptionRuntimeException,虽然严格来说不是实用,但常用,可以简要说明。最后,系统如SystemRuntime,还有格式化如DecimalFormat,这些也是实用工具的一部分。 在组织内容时,按照别分点,每个别下举出关键常用方法,同时引用用户提供的参考文献,比如引用[1]到[4]。需要确保格式正确,数学公式用$...$,独立公式用$$...$$,但在这个回答中可能用不到太多数学公式,但如果有的话要注意。比如在解释hashCode方法时,可能需要用公式说明哈希算法,不过暂时可能不需要。 最后生成相关问题,考虑用户可能的后续问题,比如具体方法的使用场景、区别、最佳实践等。比如StringStringBuilder的区别,如何选择,或者Object的方法如何重写,这些都是常见问题。 现在检查是否有遗漏的常用,比如Optional、Objects工具,或者IO相关,但用户可能更关注核心,所以先集中在基础常用。确保每个部分简洁明了,符合用户要求的总结性回答。</think>### Java常用实用总结 --- #### 一、Object 1. **根基**:所有Java的默认父,未显式继承其他时自动继承Object[^1]。 2. **核心方法**: - `equals()`:判断对象内容是否相等(需重写,默认比较地址)。与`==`(地址比较)形成对比[^2]。 - `hashCode()`:返回对象哈希值,重写`equals()`时需同步重写此方法。 - `toString()`:返回对象字符串表示,默认格式为`名@哈希值`[^4]。 --- #### 二、字符串处理 1. **String**: - **不可变性**:字符串对象创建后不可修改,操作会生成新对象。例如: $$s = "Hello"; \quad s += " World"; \quad // 实际生成新对象$$ - 常用方法:`substring()`、`indexOf()`、`split()`。 2. **StringBuffer/StringBuilder**: - **可变性**:支持原地修改,适用于频繁拼接场景。 - **区别**:StringBuffer线程安全(性能较低),StringBuilder非线程安全(性能高)[^3]。 --- #### 三、包装 1. **基本型包装**:如`Integer`、`Double`,实现基本型与对象的转换。 2. **自动装箱/拆箱**: ```java Integer a = 10; // 自动装箱:Integer.valueOf(10) int b = a; // 自动拆箱:a.intValue() ``` 3. **缓存机制**:`Integer`默认缓存-128~127的值,直接复用对象[^3]。 --- #### 四、数学与工具 1. **Math**: - 静态方法:`Math.abs()`、`Math.sqrt()`、`Math.random()`。 - 常量:`Math.PI`、`Math.E`。 2. **Arrays**: - 数组操作:`Arrays.sort()`、`Arrays.binarySearch()`。 3. **Collections**: - 集合操作:`Collections.sort()`、`Collections.reverse()`。 --- #### 五、时间日期 1. **旧版API**: - `Date`:表示时间戳,已过时。 - `Calendar`:日期计算,但设计复杂。 2. **新版API(java.time包)**: - `LocalDate`:日期(年月日)。 - `LocalDateTime`:日期时间(精确到纳秒)。 - `DateTimeFormatter`:格式化工具。 --- #### 六、其他实用 1. **System**: - 系统操作:`System.currentTimeMillis()`(获取时间戳)、`System.arraycopy()`(数组复制)。 2. **Runtime**: - JVM运行时信息:`Runtime.getRuntime().freeMemory()`(获取空闲内存)。 3. **DecimalFormat**: - 数字格式化:`new DecimalFormat("#.##").format(3.1415) → "3.14"`。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值