
Arrays 类
Arrays 类包含用于操作数组的各种方法(例如排序和搜索)。还包含一个静态工厂,允许将数组转为 List。
Arrays 常用方法
| 方法 |
描述 |
<T> List<T> asList(T… a) |
返回由指定数组构造的List |
| void sort(Object[] a) |
对数组进行排序 |
| void fill(Object[] a, Object val) |
为数组的所有元素都赋上相同的值 |
| boolean equals(Object[] a, Object[] a2) |
检查两个数组是否相等 |
| int binarySearch(Object[] a, Object key) |
对排序后的数组使用二分法查找数据 |
Arrays 编程实例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
import java.util.Arrays; import java.util.Random;
public class { public static void main(String[] args) { int[] arr = new int[10]; Arrays.fill(arr, 9); System.out.println("fill:" + Arrays.toString(arr)); Random random = new Random(); for (int i = 0; i < arr.length; i++) { arr[i] = random.nextInt(101); } System.out.println("重新赋值:" + Arrays.toString(arr)); arr[5] = 50; Arrays.sort(arr); System.out.println("sort排序后:" + Arrays.toString(arr)); 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)); } }
|
编译运行:
1 2 3 4 5 6 7
|
$ javac ArraysDemo.java $ java ArraysDemo fill:[9, 9, 9, 9, 9, 9, 9, 9, 9, 9] 重新赋值:[69, 83, 40, 58, 94, 42, 2, 53, 43, 83] sort排序后:[2, 40, 43, 50, 53, 58, 69, 83, 83, 94] 值为50的元素索引:3 equals:true
|
StringBuilder 类
StringBuilder 类是可变的。它是 String 的对等类,它可以增加和编写字符的可变序列,并且能够将字符插入到字符串中间或附加到字符串末尾(当然是不用创建其他对象的)
StringBuilder 的构造方法:
| 构造方法 |
说明 |
| StringBuilder() |
构造一个其中不带字符的 StringBuilder,其初始容量为 16 个字符 |
| StringBuilder(CharSequence seq) |
构造一个 StringBuilder,它包含与指定的 CharSequence 相同的字符 |
| StringBuilder(int capacity) |
构造一个具有指定初始容量的 StringBuilder |
| StringBuilder(String str) |
并将其内容初始化为指定的字符串内容 |
StringBuilder 类的常用方法:
| 方法 |
返回值 |
功能描述 |
| insert(int offsetm,Object obj) |
StringBuilder |
在 offsetm 的位置插入字符串 obj |
| append(Object obj) |
StringBuilder |
在字符串末尾追加字符串 obj |
| length() |
int |
确定 StringBuilder 对象的长度 |
| setCharAt(int index,char ch) |
void |
使用 ch 指定的新值设置 index 指定的位置上的字符 |
| toString() |
String |
转换为字符串形式 |
| reverse() |
StringBuilder |
反转字符串 |
| delete(int start, int end) |
StringBuilder |
删除调用对象中从 start 位置开始直到 end 指定的索引(end-1)位置的字符序列 |
| replace(int start, int end, String str) |
StringBuilder |
使用一组字符替换另一组字符。将用替换字符串从 start 指定的位置开始替换,直到 end 指定的位置结束 |
在/home/project/目录下新建StringBuilderTest.java
1 2 3 4 5 6 7 8 9 10 11 12 13
|
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
在这里只介绍了 StringBuilder 类常用的方法,其他方法可参照 JDK 文档。
Calendar类
在早期的 JDK 版本中,Date 类附有两大功能:
- 允许用年、月、日、时、分、秒来解释日期
- 允许对表示日期的字符串进行格式化和句法分析
在 JDK1.1 中提供了类 Calendar 来完成第一种功能,类 DateFormat 来完成第二项功能。DateFormat 是 java.text 包中的一个类。与 Date 类有所不同的是,DateFormat 类可以接受用各种语言和不同习惯表示的日期字符串。
但是 Calendar 类是一个抽象类,它完成 Date 类与普通日期表示法之间的转换,而我们更多的是使用 Calendar 类的子类 GregorianCalendar 类。它实现了世界上普遍使用的公历系统。当然我们也可以继承 Calendar 类,然后自己定义实现日历方法。
GregorianCalendar 类的构造函数:
| 构造方法 |
说明 |
| GregorianCalendar() |
创建的对象中的相关值被设置成指定时区,缺省地点的当前时间,即程序运行时所处的时区、地点的当前时间 |
| GregorianCalendar(TimeZone zone) |
创建的对象中的相关值被设置成指定时区 zone,缺省地点的当前时间 |
| GregorianCalendar(Locale aLocale) |
创建的对象中的相关值被设置成缺省时区,指定地点 aLocale 的当前时间 |
| GregorianCalendar(TimeZone zone,Locale aLocale) |
year - 创建的对象中的相关值被设置成指定时区,指定地点的当前时间 |
TimeZone 是 java.util 包中的一个类,其中封装了有关时区的信息。每一个时区对应一组 ID。类 TimeZone 提供了一些方法完成时区与对应 ID 两者之间的转换。
例如:
1 2 3 4
|
//太平洋时区的 ID 为 PST TimeZone tz0 = TimeZone.getTimeZone("PST") //getDefault()可以获取主机所处时区的对象 TimeZone tz1 = TimeZone.getDefault()
|
Locale 只是一种机制,它用来标识一个特定的地理、政治或文化区域获取一个 Locale 对象的构造方法:
1 2 3 4 5 6 7
|
//调用Locale类的构造方法 Locale l0 = new Locale(String language) Locale l1 = new Locale(String language, String country) Locale l2 = new Locale(String languge, String country, String variant)
//调用Locale类中定义的常量 Locale l1 = Locale.CHINA
|
Calendar 编程实例
在/home/project/目录下新建源代码文件CalendarDemo.java。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
|
import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date;
public class CalendarDemo { 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.getInstance(); calendar.setTime(new Date());
System.out.println("年: " + calendar.get(Calendar.YEAR));
System.out.println("月: " + calendar.get(Calendar.MONTH));
System.out.println("分钟: " + calendar.get(Calendar.MINUTE));
System.out.println("今年的第 " + calendar.get(Calendar.DAY_OF_YEAR) + "天");
System.out.println("本月的第 " + calendar.get(Calendar.DAY_OF_MONTH) + "天");
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.setTime(new Date()); str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS")).format(calendar.getTime()); System.out.println(str);
Calendar calendarNew = Calendar.getInstance();
calendarNew.add(Calendar.HOUR, -5); System.out.println("时间比较:" + calendarNew.compareTo(calendar));
calendarNew.add(Calendar.HOUR, +7); System.out.println("时间比较:" + calendarNew.compareTo(calendar));
calendarNew.add(Calendar.HOUR, -2); System.out.println("时间比较:" + calendarNew.compareTo(calendar));
System.out.println((new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS")).format(calendarNew.getTime())); System.out.println((new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS")).format(calendar.getTime())); System.out.println("时间比较:" + calendarNew.compareTo(calendar)); } }
|
编译运行:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
$ javac CalendarDemo.java $ java CalendarDemo 完整显示日期时间: 2018-12-12 15:50:49 年: 2018 月: 11 分钟: 50 今年的第 346天 本月的第 12天 三小时以后的时间: Wed Dec 12 18:50:49 CST 2018 2018-12-12 18:50:49:449 2018-12-12 15:50:49:455 时间比较:-1 时间比较:1 时间比较:1 2018-12-12 15:50:49:456 2018-12-12 15:50:49:455 时间比较:1
|
其实 month 的含义与 Date 类相同,0 代表 1 月,11 代表 12 月。
最后一个的输出为什么有时是 0 ,有时是 1,在这里会涉及到 calendarNew 与 calendar 的创建时间点, calendarNew 经过增加和减少时间后恢复到原来的时间点,也就是最终比较的是谁先创建好,时间点靠后的大一些,而 calendarNew 创建的时间点只有可能是大于等于 calendar 的,需要根据实际的创建时间点进行比较。
Date 类
Date 类表示日期和时间,里面封装了操作日期和时间的方法。Date 类经常用来获取系统当前时间。
来看看类 Date 中定义的未过时的构造方法:
| 构造方法 |
说明 |
| Date() |
构造一个 Date 对象并对其进行初始化以反映当前时间 |
| Date(long date) |
构造一个 Date 对象,并根据相对于 GMT 1970 年 1 月 1 日 00:00:00 的毫秒数对其进行初始化 |
Date 编程实例
在/home/project/目录下新建一个源代码文件DateDemo.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
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(); 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)); } }
|
编译运行:
1 2 3 4 5 6
|
$ javac DateDemo.java $ java DateDemo 今天的日期是:Wed Dec 12 14:43:15 CST 2018 自1970年1月1日起以毫秒为单位的时间(GMT):1544596995669 时间:14:43:15 2018-12-12 14:43:15
|
Date 类的很多方法自 JDK 1.1 开始就已经过时了。
Math 类
Math 类在 java.lang 包中,包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。
常见方法:
| 方法 |
返回值 |
功能描述 |
| 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 |
Math 编程实例
在/home/project/下新建一个MathDemo.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
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)); System.out.println("cos30 = " + Math.cos(Math.PI / 6)); System.out.println("tan30 = " + Math.tan(Math.PI / 6)); } }
|
编译运行:
1 2 3 4 5 6 7 8 9
|
$ javac MathDemo.java $ java MathDemo 12.7 13.0 12.0 0.8011998172263968 sin30 = 0.49999999999999994 cos30 = 0.8660254037844387 tan30 = 0.5773502691896257
|
System类
System 类提供了以下功能:
- 标准输入,标准输出和错误输出流;
- 访问外部定义的属性和环境变量;
- 加载文件和库的方法;
- 以及用于快速复制数组的实用方法。
System 不可以被实例化,只可以使用其静态方法。
1 2 3 4 5 6 7 8 9 10 11 12
|
public static void arraycopy(Object src,int srcPos, Object dest,int desPos,int length)
public static long currentTimeMillis()
public static void exit(int status)
public static void gc()
public static Properties getProperties()
public static String getProperty(String key)
|
System 使用示例
在/home/project/目录下新建一个源代码文件SystemDemo.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
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}; 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); } }
|
编译运行:
1 2 3 4 5
|
$ javac SystemDemo.java $ java SystemDemo [1, 2, 8, 9, 10, 6] 当前时间:1544670501472 java版本信息:11
|
Random类
Random 类用于生成伪随机数流,在java.util包下。
编程实例
在/home/project/目录下新建一个源代码文件RandomDemo.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
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()); } }
|
编译运行:
1 2 3 4 5 6 7 8
|
$ javac RandomDemo.java $ java RandomDemo 272128541 67 93 66 -23177167376469717070.93104035 0.20044632645967309
|
近期评论