Random随机类&Math数学类

本文详细介绍了Java中常用的核心类,如Math类提供的数学运算方法、随机数生成方式及包装类的使用技巧。此外,还深入探讨了Java集合框架,包括List、Set和Map接口的不同实现类及其特性,并对比了Vector与ArrayList的区别。


Random r = new Random();  //随机类
System.out.println(r.nextInt(10));   //获取0到9的随机数
System.out.println(r.nextDouble()*100);  //获取随机数  0=< 结果 <100
System.out.println(Math.random()); //返回 0到1之间的一个随机浮点数

Math jdk提供数学类 ;是java的内置类,可以直接使用
方法: abs 绝对值 ;  max 最大值 ; min 最小值 ; floor 向下取整 ; ceil 向上取整 
Math方法还有:余弦 正切 立方根 次幂 对数 ……
例子:
double b = 3.23;
float c = 3.33f;  
float d = 3.5f;
System.out.println(Math.max(c, d)); //返回 两个float类型数的最大值
System.out.println(Math.abs(b)); //返回 绝对值
System.out.println(Math.random()); //返回 0到1之间的一个随机浮点数
System.out.println(Math.round(23.3333333333)); //四舍五入  返回整数值
包装类: int Integer Integer.parceInt()
           double Double Double.parceDouble(字符串)
           char Character
例子: String c1="4567";
       Integer.parseInt(c1); //将字符串变成整数

//复合类型: int Integer; double Double; char Character; boolean Boolean

int[] x = {23,15,26,78,19,22,3,17,44};
Arrays.sort(x);  //对int数组从小到大排序

Collection集合接口----Set接口
                                 ----HashSet实现类(无序,不重复)
                                 ----TreeSet实现类 (有序,不重复;由于要排序,势必要影响速度)
                               ----List接口
                                 ----ArrayList实现类(有序,可重复)
                                 ----Vector实现类

Vector 和 ArrayList有什么区别?
vector是线程同步的,所以它也是线程安全的,而arraylist是线程异步的,是不安全的。如果不考虑到线程的安全因素,一般用arraylist效率比较高;
就是说单线程时要用arrayList,多线程时考虑用vector。 


//String类是不可变类,任何对String的改变都会引发新的String对象的生成
//StringBuffer则是可变类,任何对它所指代的字符串的改变都不会产生新的对象
//新引入的StringBuilder类不是线程安全的,但其在单线程中的性能比StringBuffer高
//如果要保证线程安全,要用StringBuffer
StringBuilder sb = new StringBuilder();
sb.append("Hello ");
sb.append(" World");
System.out.println(sb.reverse().toString()); // 反转字符串
long start = System.currentTimeMillis(); //获取当前时间戳(毫秒)
System.out.println(start);

// HashMap(先近后出)
Map<String, String> hm = new HashMap<String, String>();
hm.put("No1", "Hexinyu");
hm.put("No2", "Sean");
System.out.println("No1的值======="+hm.get("No1")); // 通过key得到value
// 获取全部键对应的值
Iterator<String> it = hm.values().iterator();
while (it.hasNext()) {
      System.out.println(it.next());
}
// 获取全部键的值
for (String key : hm.keySet()) {
      System.out.println(key);
}
//Arrays.sort(strings); 对数组排序
//Collections.sort(list); 对集合排序

Random r = new Random();  //随机类
System.out.println(r.nextInt(10));   //获取0到9的随机数
System.out.println(r.nextDouble()*100);  //获取随机数  0=< 结果 <100
System.out.println(Math.random()); //返回 0到1之间的一个随机浮点数

Math jdk提供数学类 ;是java的内置类,可以直接使用
方法: abs 绝对值 ;  max 最大值 ; min 最小值 ; floor 向下取整 ; ceil 向上取整 
Math方法还有:余弦 正切 立方根 次幂 对数 ……
例子:
double b = 3.23;
float c = 3.33f;  
float d = 3.5f;
System.out.println(Math.max(c, d)); //返回 两个float类型数的最大值
System.out.println(Math.abs(b)); //返回 绝对值
System.out.println(Math.random()); //返回 0到1之间的一个随机浮点数
System.out.println(Math.round(23.3333333333)); //四舍五入  返回整数值
包装类: int Integer Integer.parceInt()
           double Double Double.parceDouble(字符串)
           char Character
例子: String c1="4567";
       Integer.parseInt(c1); //将字符串变成整数

//复合类型: int Integer; double Double; char Character; boolean Boolean

int[] x = {23,15,26,78,19,22,3,17,44};
Arrays.sort(x);  //对int数组从小到大排序

Collection集合接口----Set接口
                                 ----HashSet实现类(无序,不重复)
                                 ----TreeSet实现类 (有序,不重复;由于要排序,势必要影响速度)
                               ----List接口
                                 ----ArrayList实现类(有序,可重复)
                                 ----Vector实现类

Vector 和 ArrayList有什么区别?
vector是线程同步的,所以它也是线程安全的,而arraylist是线程异步的,是不安全的。如果不考虑到线程的安全因素,一般用arraylist效率比较高;
就是说单线程时要用arrayList,多线程时考虑用vector。 


//String类是不可变类,任何对String的改变都会引发新的String对象的生成
//StringBuffer则是可变类,任何对它所指代的字符串的改变都不会产生新的对象
//新引入的StringBuilder类不是线程安全的,但其在单线程中的性能比StringBuffer高
//如果要保证线程安全,要用StringBuffer
StringBuilder sb = new StringBuilder();
sb.append("Hello ");
sb.append(" World");
System.out.println(sb.reverse().toString()); // 反转字符串
long start = System.currentTimeMillis(); //获取当前时间戳(毫秒)
System.out.println(start);

// HashMap(先近后出)
Map<String, String> hm = new HashMap<String, String>();
hm.put("No1", "Hexinyu");
hm.put("No2", "Sean");
System.out.println("No1的值======="+hm.get("No1")); // 通过key得到value
// 获取全部键对应的值
Iterator<String> it = hm.values().iterator();
while (it.hasNext()) {
      System.out.println(it.next());
}
// 获取全部键的值
for (String key : hm.keySet()) {
      System.out.println(key);
}
//Arrays.sort(strings); 对数组排序
//Collections.sort(list); 对集合排序

Java中,有两种不同的方式可以生成随机数:使用Mathrandom()方法和使用java.util.Random。 1. Mathrandom()方法: MathJava内置的数学,其中有一个静态方法random(),用于生成一个0到1之间的随机浮点数。具体使用方法如下: ```java double randomNum = Math.random(); // 生成一个0到1之间的随机浮点数 ``` 这个方法会返回一个大于等于0且小于1的伪随机浮点数。如果你需要生成其他范围的随机数,可以使用乘法和加法进行缩放和偏移。例如,如果你想生成一个0到100之间的随机整数,可以使用以下代码: ```java int randomInt = (int) (Math.random() * 101); // 生成一个0到100之间的随机整数 ``` 注意:使用Mathrandom()方法生成的随机数是伪随机数,每次程序运行时都会生成相同的随机数序列。如果需要更高质量的随机数,可以考虑使用Random。 2. RandomRandomJava提供的随机数生成器,位于java.util包中。使用Random可以生成各种型的随机数,包括整数、浮点数、布尔值等。以下是一个使用Random生成随机整数的示例: ```java import java.util.Random; // 创建Random对象 Random random = new Random(); // 生成一个0到100之间的随机整数 int randomInt = random.nextInt(101); // 打印随机整数 System.out.println(randomInt); ``` Random的nextInt()方法用于生成一个指定范围内的随机整数。在上述示例中,nextInt(101)会生成一个0到100之间的随机整数。 总结:Mathrandom()方法适用于简单的随机数生成需求,而Random适用于更复杂的随机数生成需求,可以生成不同型的随机数,并且具有更好的随机性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值