java中对日期的处理
- SimpleDateFormat是java.text包下,专门处理日期格式化的类。
- 以下代码主要掌握:
- 1,获取系统当前时间
- 2,String --> Date
- 3,Date --> String
代码示例
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateTest01 {
public static void main(String[] args) throws ParseException {
// 获取系统当前时间
// 直接调用无参数构造方法
Date date = new Date();
System.out.println(date);//
// 将日期格式化
// SimpleDateFormat是java.text包下,专门处理日期格式化的类。
/*
yyyy 年(4位)
MM 月(2位)
dd 日(2位)
HH 时(2位)
mm 分(2位)
ss 秒(2位)
SSS 毫秒(3位,最多999,1000毫秒=1秒)
*/
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
// final String format(Date date)
System.out.println(sdf.format(date));
// 日期字符串装 转换成Date类型
// String --> Date
String time = "2020-05-18 18:31:59 703";
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
Date dateTime = sdf2.parse(time);
System.out.println(dateTime); // Mon May 18 18:31:59 CST 2020
// 获取自1970年1月1日 00:00:000到系统时间的总毫秒数。
long nowTimeMillis = System.currentTimeMillis();
System.out.println(nowTimeMillis);//1621392452225
// 统计一个方法耗时
long begin = System.currentTimeMillis();
print();
long end = System.currentTimeMillis();
System.out.println("调用print方法耗时:" + (end - begin) + "毫秒");
}
public static void print(){
for (int i = 0 ;i < 1000;i++){
System.out.println("i=" + i);
}
}
}
java中的数字格式化
-
DecimalFormat是java.text包下,专门处理数字格式化的类。
new DecimalFormat("数字格式化");
-
关于数字格式化:
# 代表任意数字 , 代表千分位 . 代表小数点 0 代表不够补0
代码示例
import java.text.DecimalFormat;
public class NumberTest01 {
public static void main(String[] args) {
/*关于数字格式化:
# 代表任意数字
, 代表千分位
. 代表小数点
0 代表不够补0
*/
// ###,###.## 表示加入千分位,保留2个小数。
DecimalFormat df = new DecimalFormat("###,###.##");
String s = df.format(12345.562);
System.out.println(s);// 12,345.56
DecimalFormat df2 = new DecimalFormat("###,###.0000");
String s2 = df2.format(12345.562);
System.out.println(s2);// 12,345.5620
}
}
java中的BigDecimal类
- BigDecimal属于大数据,精度极高;不属于基本数据类型,属于java对象(引用数据类型)
- 这是SUN公司提供的一个类,专门用在财务软件当中。
代码示例
import java.math.BigDecimal;
public class NumberTest02 {
public static void main(String[] args) {
BigDecimal bigDecimal = new BigDecimal(200);
BigDecimal bigDecimal1 = new BigDecimal(300);
// 求和
BigDecimal sum = bigDecimal.add(bigDecimal1);
System.out.println(sum);// 加
System.out.println(bigDecimal1.subtract(bigDecimal)); // 减
System.out.println(bigDecimal1.multiply(bigDecimal)); // 乘
System.out.println(bigDecimal1.divide(bigDecimal)); // 除
}
}
java中的随机数
-
Random是java.util包下,专门处理随机数的类。
Random random = new Random();
代码示例
import java.util.Arrays;
import java.util.Random;
public class RandomTest01 {
public static void main(String[] args) {
// 创建随机对象
Random random = new Random();
// 随机产生一个int类型取值范围内的数字
int num1 = random.nextInt();
System.out.println(num1);
// 生成[0-100]之间的随机数
// nextInt表示:下一个int类型的数据是101,表示只能取到100
int num2 = random.nextInt(100);
System.out.println(num2);
// 生成5个不重复的随机数,重复重新生成,最终生成的5个随机数放到数组中。
int[] arr = new int[5]; // 元素默认为 0
//为了避免和随机数的0冲突,重新赋值
for (int i = 0; i < args.length;i++){
arr[i] = -1;
}
int index = 0;
while (index < arr.length){
int temp = random.nextInt(7);
System.out.println("生成的随机数" + temp);
if (!contains(arr,temp)){
arr[index++] = temp;
}
}
// 遍历输出
for (int j = 0; j < arr.length;j++){
System.out.println("random=" + arr[j]);
}
}
/**
* 这个方法用来判断数组中是否包含某个元素
* @param list
* @param key
* @return true表示包含,false表示不包含
*/
public static boolean contains(int[] list,int key){
/*
二分法查找,数组排序会有bug出现。。。。
// 对数组排序
// Arrays.sort(list);
// 二分法查找数组是否有该元素 >= 0 表示找到 证明存在该元素
// return Arrays.binarySearch(list,key) == 0;
*/
for (int i = 0;i < list.length; i++){
if (list[i] == key){
return true;
}
}
return false;
}
}
java中的枚举
前言
- 分析以下案例理解引出枚举。
- 开发中可能遇到一个方法执行结果可能包括三种四种五种情况... ,但每种情况都是可以列举出来的,这是布尔类型无法满足的,所以需要使用Java语言中的枚举类型。
// 分析以下程序,在设计方面有什么缺陷?
// 程序可以正常编译,也可以正常运行,是没问题的
// 设计缺陷在方法的返回值类型上,返回一个int不恰当;
// 既然最后的结果只是成功和失败,最好使用布尔类型。
public class EunmTest01 {
public static void main(String[] args) {
/*
int res = divide(20,5);
System.out.println(res); // 1
int res2 = divide(20,0);
System.out.println(res2); // 0
*/
boolean res3 = divide(20,0);
System.out.println(res3 ? "计算成功" : "计算失败");
}
/**
* 以上程序计算两个int类型数据的商,计算成功返回1,计算失败返回0.
* @param a int类型
* @param b int类型
* @return 成功返回1,失败返回0.
*/
/*
public static int divide(int a, int b){
try {
int c = a / b;
// 程序执行到此处表示以上代码没发生异常,执行成功!
// 如果返回是int类型,程序员误写成返回10,程序编译是检查不出来的。
return 1;
}catch (Exception e){
// 程序执行到此处表示以上程序出现了异常,执行失败!
return 0;
}
}
*/
// 好的设计写法
public static boolean divide(int a, int b){
try {
int c = a / b;
// 程序执行到此处表示以上代码没发生异常,执行成功!
return true;
}catch (Exception e){
// 程序执行到此处表示以上程序出现了异常,执行失败!
return false;
}
}
}
使用枚举
-
枚举是一种引用数据类型。
-
枚举编译之后也是生成class文件。
-
枚举中的每一个值可以看做是常量
-
枚举怎么定义,语法是:
eunm 枚举类型名{ 枚举值1,枚举值2,枚举值3,... }
-
结果只有两种情况的,建议使用布尔类型。
-
结果超过两种并且可以一枚一枚列举出来的,建议使用枚举类型。
例如:颜色,四季,星期等都可以使用枚举类型。
代码示例
public class EunmTest02 {
public static void main(String[] args) {
Result rf = divide(10,1);
System.out.println(rf == Result.SUCCESS ? "计算成功" : "计算失败");
// 使用switch调用枚举
// switch语句支持枚举,switch也支持String,int
switch (Season.SUMMER){
// 必须省略Season.
case SPRING:
System.out.println("春天");
break;
case SUMMER:
System.out.println("夏天");
break;
case AUTUMN:
System.out.println("秋天");
break;
case WINTER:
System.out.println("冬天");
break;
}
}
// 使用枚举改造程序
public static Result divide(int a, int b){
try {
int c = a / b;
// 程序执行到此处表示以上代码没发生异常,执行成功!
return Result.SUCCESS;
}catch (Exception e){
// 程序执行到此处表示以上程序出现了异常,执行失败!
return Result.FAIL;
}
}
}
enum Result{
SUCCESS,FAIL
}
/*
四季枚举
*/
enum Season {
SPRING,SUMMER,AUTUMN,WINTER
}
上篇:JavaSE进阶五 包装类
下篇:JavaSE进阶七 异常
网友评论