Java常用类
Arrays
Arrays 类包含用于操作数组的各种方法(例如排序和搜索)。还包含一个静态工厂,允许将数组转为 List。
import java.util.Arrays;
import java.util.Random;
public class hello {
public static void main(String[] args) {
int[] arr = new int[10];
//将数组元素都设为9
Arrays.fill(arr, 9);
System.out.println("fill:" + Arrays.toString(arr));
Random random = new Random();
for (int i = 0; i < arr.length; i++) {
//使用100以内的随机数赋值数组
arr[i] = random.nextInt(101);
}
//重新赋值后的数组
System.out.println("重新赋值:" + Arrays.toString(arr));
//将索引为5的元素设为50
arr[5] = 50;
//排序
Arrays.sort(arr);
//排序后的数组
System.out.println("sort排序后:" + Arrays.toString(arr));
//查找50的位置
int i = Arrays.binarySearch(arr, 50);
System.out.println("值为50的元素索引:"+i);
//复制一份新数组
int[] newArr = Arrays.copyOf(arr, arr.length);
//比较
System.out.println("equals:"+Arrays.equals(arr, newArr));
}
}
fill:[9, 9, 9, 9, 9, 9, 9, 9, 9, 9]
重新赋值:[82, 72, 33, 30, 67, 37, 3, 83, 58, 65]
sort排序后:[3, 30, 33, 50, 58, 65, 67, 72, 82, 83]
值为50的元素索引:3
equals:true
import java.util.Arrays;
import java.util.Random;
public class hello {
public static void main(String[] args) {
/**
* 使用 Arrays 将数组 [6, 17, 92, 32, 58, 22, 84, 66, 36, 33] 进行排序。
* 找出排序后 33 所在的位置。
* 测试一下如果不排序能否找到值 33
*/
int[] arr = {6, 17, 92, 32, 58, 22, 84, 66, 36, 33};
System.out.println("排序之前:" + Arrays.toString(arr));
Arrays.sort(arr);
System.out.println("排序之前:" + Arrays.toString(arr));
int i = Arrays.binarySearch(arr, 33);
System.out.println("值为33的元素索引:"+i);
}
}
排序之前:[6, 17, 92, 32, 58, 22, 84, 66, 36, 33]
排序之前:[6, 17, 22, 32, 33, 36, 58, 66, 84, 92]
值为33的元素索引:4
StringBuilder
StringBuilder 类是可变的。它是 String 的对等类,它可以增加和编写字符的可变序列,并且能够将字符插入到字符串中间或附加到字符串末尾(当然是不用创建其他对象的)。
public class StringBuilderTest {
public static void main(String[] args){
//定义和初始化一个StringBuilder类的字串s
StringBuilder s = new StringBuilder("I");
//在s后面添加字串" java"
s.append(" java");
//在s[1]的位置插入字串
s.insert(1, " love");
String t = s.toString(); //转为字符串
System.out.println(t);
}
}
输出结果为: I love java。
Calendar
Calendar 类是一个抽象类,它完成 Date 类与普通日期表示法之间的转换,而我们更多的是使用 Calendar 类的子类 GregorianCalendar 类。它实现了世界上普遍使用的公历系统。当然我们也可以继承 Calendar 类,然后自己定义实现日历方法。
Date
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class hello {
public static void main(String[] args) {
System.out.println("完整显示日期时间:");
// 字符串转换日期格式
DateFormat fdate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String str = fdate.format(new Date());
System.out.println(str);
// 创建 Calendar 对象
Calendar calendar = Calendar.getInstance();
// 初始化 Calendar 对象,但并不必要,除非需要重置时间
calendar.setTime(new Date());
// 显示年份
System.out.println("年: " + calendar.get(Calendar.YEAR));
// 显示月份 (从0开始, 实际显示要加一)
System.out.println("月: " + calendar.get(Calendar.MONTH));
// 当前分钟数
System.out.println("分钟: " + calendar.get(Calendar.MINUTE));
// 今年的第 N 天
System.out.println("今年的第 " + calendar.get(Calendar.DAY_OF_YEAR) + "天");
// 本月第 N 天
System.out.println("本月的第 " + calendar.get(Calendar.DAY_OF_MONTH) + "天");
// 3小时以后
calendar.add(Calendar.HOUR_OF_DAY, 3);
System.out.println("三小时以后的时间: " + calendar.getTime());
// 格式化显示
str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS")).format(calendar.getTime());
System.out.println(str);
// 重置 Calendar 显示当前时间
calendar.setTime(new Date());
str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS")).format(calendar.getTime());
System.out.println(str);
// 创建一个 Calendar 用于比较时间
Calendar calendarNew = Calendar.getInstance();
// 设定为 5 小时以前,后者大,显示 -1
calendarNew.add(Calendar.HOUR, -5);
System.out.println("时间比较:" + calendarNew.compareTo(calendar));
// 设定7小时以后,前者大,显示 1
calendarNew.add(Calendar.HOUR, +7);
System.out.println("时间比较:" + calendarNew.compareTo(calendar));
// 退回 2 小时,时间相同,显示0
calendarNew.add(Calendar.HOUR, -2);
System.out.println("时间比较:" + calendarNew.compareTo(calendar));
// calendarNew创建时间点
System.out.println((new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS")).format(calendarNew.getTime()));
// calendar创建时间点
System.out.println((new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS")).format(calendar.getTime()));
System.out.println("时间比较:" + calendarNew.compareTo(calendar));
}
}
完整显示日期时间:
2020-09-30 15:58:48
年: 2020
月: 8
分钟: 58
今年的第 274天
本月的第 30天
三小时以后的时间: Wed Sep 30 18:58:48 CST 2020
2020-09-30 18:58:48:848
2020-09-30 15:58:48:943
时间比较:-1
时间比较:1
时间比较:0
2020-09-30 15:58:48:943
2020-09-30 15:58:48:943
时间比较:0
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateDemo {
public static void main(String[] args) {
String strDate, strTime;
Date objDate = new Date();
System.out.println("今天的日期是:" + objDate);
long time = objDate.getTime();
System.out.println("自1970年1月1日起以毫秒为单位的时间(GMT):" + time);
strDate = objDate.toString();
//提取 GMT 时间
strTime = strDate.substring(11, (strDate.length() - 4));
//按小时、分钟和秒提取时间
strTime = "时间:" + strTime.substring(0, 8);
System.out.println(strTime);
//格式化时间
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(formatter.format(objDate));
}
}
今天的日期是:Wed Dec 12 14:43:15 CST 2018
自1970年1月1日起以毫秒为单位的时间(GMT):1544596995669
时间:14:43:15
2018-12-12 14:43:15
Math
方法 | 返回值 | 功能描述 |
---|---|---|
sin(double numvalue) | double | 计算角 numvalue 的正弦值 |
cos(double numvalue) | double | 计算角 numvalue 的余弦值 |
acos(double numvalue) | double | 计算 numvalue 的反余弦 |
asin(double numvalue) | double | 计算 numvalue 的反正弦 |
atan(double numvalue) | double | 计算 numvalue 的反正切 |
pow(double a, double b) | double | 计算 a 的 b 次方 |
sqrt(double numvalue) | double | 计算给定值的正平方根 |
abs(int numvalue) | int | 计算 int 类型值 numvalue 的绝对值,也接收 long、float 和 double 类型的参数 |
ceil(double numvalue) | double | 返回大于等于 numvalue 的最小整数值 |
floor(double numvalue) | double | 返回小于等于 numvalue 的最大整数值 |
max(int a, int b) | int | 返回 int 型 a 和 b 中的较大值,也接收 long、float 和 double 类型的参数 |
min(int a, int b) | int | 返回 a 和 b 中的较小值,也可接受 long、float 和 double 类型的参数 |
rint(double numvalue) | double | 返回最接近 numvalue 的整数值 |
round(T arg) | arg 为 double 时返回 long,为 float 时返回 int | 返回最接近 arg 的整数值 |
random() | double | 返回带正号的 double 值,该值大于等于 0.0 且小于 1.0 |
public class MathDemo {
public static void main(String[] args) {
System.out.println(Math.abs(-12.7));
System.out.println(Math.ceil(12.7));
System.out.println(Math.rint(12.4));
System.out.println(Math.random());
System.out.println("sin30 = " + Math.sin(Math.PI / 6));
// 计算30°的正弦值,参数是用弧度表示的角,即π的六分之一
System.out.println("cos30 = " + Math.cos(Math.PI / 6));
// 计算30°的余弦值,这些计算三角函数的方法,其参数和返回值的类型都为double
System.out.println("tan30 = " + Math.tan(Math.PI / 6));
// 计算30°的正切值
}
}
12.7
13.0
12.0
0.8011998172263968
sin30 = 0.49999999999999994
cos30 = 0.8660254037844387
tan30 = 0.5773502691896257
System
- 标准输入,标准输出和错误输出流;
- 访问外部定义的属性和环境变量;
- 加载文件和库的方法;
- 以及用于快速复制数组的实用方法。
System 不可以被实例化,只可以使用其静态方法。
//从指定的源数组中复制一个数组,从源数组指定的位置开始,到目标数组指定的位置
public static void arraycopy(Object src,int srcPos, Object dest,int desPos,int length)
//返回以毫秒为单位的当前时间(从1970年到现在的毫秒数)
public static long currentTimeMillis()
//终止当前正在运行的Java虚拟机,status为 0时退出
public static void exit(int status)
// 运行垃圾收集器
public static void gc()
// 取得当前系统的全部属性
public static Properties getProperties()
//获取指定键的系统属性
public static String getProperty(String key)
import java.util.Arrays;
public class SystemDemo {
public static void main(String[] args) {
int[] a = {7, 8, 9, 10, 11};
int[] b = {1, 2, 3, 4, 5, 6};
//从数组a的第二个元素开始,复制到b数组的第三个位置 复制的元素长度为3
System.arraycopy(a, 1, b, 2, 3);
//输出结果
System.out.println(Arrays.toString(b));
System.out.println("当前时间:" + System.currentTimeMillis());
System.out.println("java版本信息:" + System.getProperty("java.version"));
//运行垃圾收集器
System.gc();
//退出
System.exit(0);
}
}
Random
Random 类用于生成伪随机数流,在 java.util包下。
import java.util.Random;
public class RandomDemo {
public static void main(String[] args) {
Random random = new Random();
//随机生成一个整数 int范围
System.out.println(random.nextInt());
//生成 [0,n] 范围的整数 设n=100
System.out.println(random.nextInt(100 + 1));
//生成 [0,n) 范围的整数 设n=100
System.out.println(random.nextInt(100));
//生成 [m,n] 范围的整数 设n=100 m=40
System.out.println((random.nextInt(100 - 40 + 1) + 40));
//随机生成一个整数 long范围
System.out.print(random.nextLong());
//生成[0,1.0)范围的float型小数
System.out.println(random.nextFloat());
//生成[0,1.0)范围的double型小数
System.out.println(random.nextDouble());
}
}
272128541
67
93
66
-23177167376469717070.93104035
0.20044632645967309