对JAVA 包装类,日期类,数字类,随机数,枚举的学习
1、八种基本数据类型对应的包装类。
1.1、什么是自动装箱和自动拆箱,代码怎么写?
Integer x = 100; // x里面并不是保存100,保存的是100这个对象的内存地址。
Integer y = 100;
System.out.println(x == y); // true
Integer x = 128;
Integer y = 128;
System.out.println(x == y); // false
1.2、Integer类常用方法。
Integer.valueOf()
Integer.parseInt("123")
Integer.parseInt("中文") : NumberFormatException
1.3、Integer String int三种类型互相转换。
1 package demo1; 2 3 import org.junit.Test; 4 5 /** 6 * 包装类:8种基本数据类型对应类 7 * 基本数据类型、包装类和String类型的相互转换 8 * 9 */ 10 public class Test1 { 11 12 @Test 13 public void test(){ 14 15 //1.基本数据类型和包装类转换 16 //装箱:把基本数据类型转成包装类 17 //拆箱:把包装类转成基本数据类型 18 int a=10; 19 Integer b=a;//把基本数据类型转成了包装类 20 System.out.println(b); 21 22 Integer c=20; 23 int d=c;//把包装类转成了基本数据类型 24 System.out.println(d); 25 26 //2、基本数据类型、包装类和String之间转换 27 //把int类型转成String 28 //第一种 29 int num=30; 30 String str=num+""; 31 System.out.println(str); 32 33 //第二种 34 double d1=30;//转成谁就去谁里面找方法,如果转成基本数据类型就去对应的包装类里面找方法 35 String str1=String.valueOf(d1); 36 37 //把String转成int. 每个包装类都会有parsexxx()方法 38 String str2="123"; 39 int num1=Integer.parseInt(str2); 40 System.out.println(num1); 41 42 43 } 44 45 }
2、日期类
2.1、获取系统当前时间
Date d = new Date();
2.2、日期格式化:Date --> String
yyyy-MM-dd HH:mm:ss SSS
SimpleDateFormat sdf = new SimpleDate("yyyy-MM-dd HH:mm:ss SSS");
String s = sdf.format(new Date());
2.3、String --> Date
SimpleDateFormat sdf = new SimpleDate("yyyy-MM-dd HH:mm:ss");
Date d = sdf.parse("2008-08-08 08:08:08");
2.4、获取毫秒数
long begin = System.currentTimeMillis();
Date d = new Date(begin - 1000 * 60 * 60 * 24);
1 package demo1; 2 3 import java.text.ParseException; 4 import java.text.SimpleDateFormat; 5 import java.util.Calendar; 6 import java.util.Date; 7 8 public class TestDate { 9 10 public static void main(String[] args) throws ParseException { 11 12 //date:获取当前系统时间 13 Date date=new Date(); 14 System.out.println(date);//年-月-日 15 16 //SimpleDateFormat:对日期进行格式化 调用format方法 17 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 18 String date1=sdf.format(date); 19 System.out.println(date1); 20 21 22 Calendar c=Calendar.getInstance();//创建了一个日历对象 23 //设置 24 // c.set(2020, 9, 29, 9, 10, 21); 25 //获取年 26 int y=c.get(Calendar.YEAR); 27 //获取月 0-11 28 int month=c.get(Calendar.MONTH)+1; 29 //获取日 30 int day=c.get(Calendar.DAY_OF_MONTH); 31 //获取时 32 int h=c.get(Calendar.HOUR_OF_DAY); 33 //获取分 34 int m=c.get(Calendar.MINUTE); 35 //获取秒 36 int s=c.get(Calendar.SECOND); 37 System.out.println(y+"-"+month+"-"+day+" "+h+":"+m+":"+s); 38 39 //日期字符串转换为Date类型 注意格式一致 java 40 String time="2020-10-8 15:40:15 333"; 41 SimpleDateFormat sdf2=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS"); 42 Date time1 = sdf2.parse(time); 43 System.out.println(time1); 44 System.out.println("-------------------"); 45 //获取自1970年 1月1号到现在的总毫秒值 46 long nowTime = System.currentTimeMillis(); 47 System.out.println(nowTime); 48 49 long begin = System.currentTimeMillis(); 50 print(); 51 long end = System.currentTimeMillis(); 52 System.out.println("方法耗时"+(end-begin)+"毫秒"); 53 } 54 //需求:统计一个方法执行所需的毫秒值 55 public static void print(){ 56 for(int i=0;i<1000;i++){ 57 System.out.println("i="+i); 58 59 } 60 61 62 System.out.println("---------"); 63 //获取昨天此时的时间 64 Date time2 = new Date(System.currentTimeMillis()-1000*60*60*24); 65 SimpleDateFormat sdf2=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS"); 66 String ye = sdf2.format(time2); 67 System.out.println("昨天的此时时间为"+ye); 68 } 69 70 71 72 }
3、数字类
3.1、DecimalFormat数字格式化
###,###.## 表示加入千分位,保留两个小数。
###,###.0000 表示加入千分位,保留4个小数,不够补0
1 package number; 2 3 import java.text.DecimalFormat; 4 5 /** 6 * 数字格式化 7 * java.text.DecimalFormat;代表专门负责数字格式化 8 * DecimalFormat df=new DecimalFormat("###,###.##"); 9 * @author ASUS 10 * 11 */ 12 public class DecimalFormatTest01 { 13 /* # 代表任意数字 14 * , 代表千分位 15 * . 代表小数点 16 * 0 代表不够时补0 17 */ 18 public static void main(String[] args) { 19 20 DecimalFormat df=new DecimalFormat("###,###.##"); 21 String format = df.format(123213.2312); 22 System.out.println(format); 23 24 25 DecimalFormat df1=new DecimalFormat("###,###.0000"); 26 String format1 = df1.format(123213.22); 27 System.out.println(format1); 28 } 29 30 }
3.2、BigDecimal
财务软件中通常使用BigDecimal
1 package number; 2 3 import java.math.BigDecimal; 4 5 /** 6 * 属于大数据 java.math.BigDecimal; 适合财务软件 7 * @author ASUS 8 * 9 */ 10 public class BigDecimalTest01 { 11 12 public static void main(String[] args) { 13 BigDecimal v1=new BigDecimal(100); 14 BigDecimal v2=new BigDecimal(200); 15 16 BigDecimal v3=v1.add(v2); 17 System.out.println(v3); 18 19 } 20 21 }
4、随机数
4.1、怎么产生int类型随机数。
Random r = new Random();
int i = r.nextInt();
4.2、怎么产生某个范围之内的int类型随机数。
Random r = new Random();
int i = r.nextInt(101); // 产生[0-100]的随机数。
1 package random; 2 3 import java.util.Random; 4 5 /** 6 * 生成随机数 7 * @author ASUS 8 * 案例:生成1到100之内的5个随机数,存入数组 9 * 10 */ 11 public class RandomTest01 { 12 13 public static void main(String[] args) { 14 //创建随机数对象 15 // Random random = new Random(); 16 // //产生int 范围内的随机数 17 // int num1=random.nextInt(); 18 // System.out.println(num1); 19 // 20 // //产生0-100之间的随机数 21 // int num2 = random.nextInt(101);//不包括101 22 // System.out.println(num2); 23 24 int [] arr= new int[5]; 25 for (int i=0;i<arr.length;i++){ 26 arr[i]=-1; 27 } 28 int index=0; 29 Random r = new Random(); 30 while(index<arr.length){ 31 32 33 int num = r.nextInt(101); 34 if(!contains(arr,num)){ 35 arr[index]=num; 36 index++; 37 } 38 } 39 //遍历 40 for(int i=0;i<arr.length;i++){ 41 42 System.out.println(arr[i]); 43 } 44 45 } 46 47 private static boolean contains(int arr[],int key) { 48 for(int i=0;i<arr.length;i++){ 49 if(arr[i]==key){ 50 return true; 51 } 52 } 53 return false; 54 55 56 } 57 }
5、枚举
5.1、枚举是一种引用数据类型。
5.2、枚举编译之后也是class文件。
5.3、枚举类型怎么定义?
enum 枚举类型名{
枚举值,枚举值2,枚举值3
}
5.4、当一个方法执行结果超过两种情况,并且是一枚一枚可以列举出来
的时候,建议返回值类型设计为枚举类型。
1 package Enum; 2 /** 3 * 枚举 4 * +- 5 * @author ASUS 6 * 7 */ 8 public class EnumTest01 { 9 10 public static void main(String[] args) { 11 Result r=divide(10, 4); 12 System.out.println(r==Result.SUCCESS?"计算成功":"计算失败"); 13 } 14 public static Result divide(int a,int b){ 15 try{ 16 int c=a/b; 17 return Result.SUCCESS; 18 19 }catch(Exception e){ 20 return Result.FAIL; 21 } 22 } 23 24 enum Result{ 25 SUCCESS,FAIL 26 } 27 }