java基础1.5版后新特性 自动装箱拆箱 Date SimpleDateFormat Calendar.getInstance()获得一个日历对象 抽象不要生
程序员文章站
2022-07-06 19:17:34
8种基本数据类型的8种包装类 byte Byte short Short int Integer long Long float Float double Double char Character boolean Boolean Integer a=127; Integer b=127;//虚拟机 ......
8种基本数据类型的8种包装类
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean
Integer a=127; Integer b=127;//虚拟机自动装箱时进行了特殊处理,-127~128以下的自动取有过的
System.out.println(a==b);结果为true
如果是Integer a=128; Integer b=128;
System.out.println(a==b);结果为false
System.out.println(a.equals(b)); 比较的都为内容,因复写过equals结果为true
日期类的练习
package com.swift.day06; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Scanner; /*需求: 1.使用代码完成:获取系统的当前时间并输出,输出格式:2017年11月24日 2.使用代码完成:获取键盘录入的时间转换成Date对象并输出,录入格式:2017年11月24日,如格式不正确需提示日期格式异常并打印异常信息 3.使用代码完成:使用Calendar类获取系统的当前日期并输出,输出格式:2017年11月24日 4.使用代码完成:遍历数字1-10,当遍历到5时结束java程序*/ public class Demo1 { public static void main(String[] args) { //Date类格式转换 Date date=new Date(); System.out.println(date); SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat sdf1=new SimpleDateFormat("yyyy年MM月dd日"); String str=sdf.format(date); System.out.println(str); //键盘字符串转日期 Scanner scan=new Scanner(System.in); System.out.println("请输入一个日期"); String time=scan.nextLine(); System.out.println(time); try { Date d=sdf1.parse(time); System.out.println(d); } catch (ParseException e) { System.out.println("日期格式异常啦~~~~~~~"); e.printStackTrace(); } System.out.println("=========================="); //日历类操作 Calendar c=Calendar.getInstance(); System.out.println(c); Date d1=c.getTime(); System.out.println(sdf1.format(d1)); //遍历到5时结束java程序 for(int i=0;i<10;i++) { if(i==5) { System.exit(0); } System.out.println("i="+i); } } }
数学以及装箱
package com.swift.day06; import java.util.ArrayList; /*需求: 1.使用代码完成:使用Math类,获取2个随机数中的最大值 2.使用代码完成:使用Math类,获取2个随机数中的最小值 3.使用代码完成:使用Math类获取5个随机数的平均值,平均值四舍五入 4.写出8种基本数据类型的包装类 5.使用代码完成:将字符串"123"转换成int类型 6.使用代码完成:将Long类型的数字10转换成int类型 7.简述下什么是自动装箱拆箱 8:请阐述你对正则表达式的理解 9.使用代码完成:校验qq号码,其中QQ校验的正则表达式为:"[1-9][0-9]{4,14}" 表示第一位不为0第二位起都是数字共5到15位 10:使用代码完成:校验手机号码,其中手机号校验的正则表达式为:"1[34578][0-9]{9}"*/ public class Demo2 { public static void main(String[] args) { //Math类 System.out.println(Math.max(20, 30)); System.out.println(Math.min(20, 30)); //Math类获取5个随机数的平均值,平均值四舍五入 double sum=0.0; for(int x=0;x<5;x++) { double ran=Math.random()*10; System.out.println(ran); sum=sum+ran; } System.out.println(Math.round(sum/5.0)); //字符串"123"转换成int类型 int a=Integer.parseInt("123"); System.out.println(a); //将Long类型的数字10转换成int类型 Long b=new Long(10L); System.out.println(b.intValue()); //什么是自动装箱拆箱 Integer z=5;//本来这个是不合法的,应该是Integer z=new Integer(5);-->称为自动装箱 Integer z1=new Integer(5);//这个是合法的 Integer y=z+1;//本来这个也是不合法的,这里z+1进行了拆箱操作,然后又进行了装箱操作 ArrayList<Integer> arr=new ArrayList<>(); arr.add(1);//本来这样写也是不合法的,这令经过了自动装箱操作,合法的应为arr.add(new Integer(1)); int x=arr.get(0);//本来这里也是不合法的,这里经过了自动拆箱操作,把对象new Integer(1)拆箱成了int的1 //校验手机号码 String phone="138000x23847"; boolean bool=phone.matches("1[35678]\\d{9}"); System.out.println(bool); } }
活了多少天
package com.swift.day06; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; /*训练考核知识点:Date类 训练描述 请使用代码实现:计算你活了多少天 操作步骤描述 在main方法中 a)把你生日的字符串,转换为日期对象 b)把日期对象转换为对应的毫秒值 c)获取当前系统的毫秒值 d)当前系统毫秒值-出生时间对于的毫秒值计算你活的毫秒值 e)把你活毫秒值转换为天 f)输出天数 g)使用try...catch处理异常*/ public class Huojiu { public static void main(String[] args) { //把你生日的字符串,转换为日期对象 String birthday="2017年7月7日"; SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日"); try { Date date=sdf.parse(birthday); System.out.println(date); long millis=date.getTime(); System.out.println(millis); //获取当前系统的毫秒值 long now=System.currentTimeMillis(); long now1=new Date().getTime(); System.out.println(now+"~~"+now1); //活得毫秒数 long huo=now-millis; System.out.println(huo); //活的天数 System.out.println(huo/1000/60/60/24+"天"); } catch (ParseException e) { e.printStackTrace(); } } }
正则判断用户名
package com.swift.day06; import java.util.Scanner; /*正则表达式 需求: 编写一个校验用户名的程序,检测键盘录入的用户名是否合法 要求:必须以英文开头,只能包含英文,数字和`_`;最少6位,做多12位,对应的正则表达式:[a-zA-Z]\\w{5,11}*/ public class RegexDemo { public static void main(String[] args) { Scanner scan=new Scanner(System.in); System.out.println("请输入一个用户名"); String name=scan.nextLine(); System.out.println(name); boolean b=name.matches("[a-zA-Z][a-zA-Z0-9_]{5,11}"); System.out.println(b); } }
500天后是什么日期
package com.swift.day06; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; //500天后是什么日期 public class DayAfter500 { public static void main(String[] args) { Calendar c=Calendar.getInstance(); Date date=c.getTime(); SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); String day=sdf.format(date); System.out.println(day); c.add(Calendar.DAY_OF_MONTH, 500); Date date1=c.getTime(); String day1=sdf.format(date1); System.out.println(day1); } }
以上知识点综合,把复杂字符串匹配成对象,并进行正则判断
package com.swift.day06; /*请使用代码描述 * 有一段文本 " anglebaby 女 18 515151511 " 分别描述一个人的姓名 性别 年龄(int) 和QQ号码信息,完成如下需求: 1. 创建一个Person类,包含性别,性别,年龄和QQ号码属性,使用解析出来信息创建一个Person对象,并打印这个人信息 2. 并判断QQ号是否合法,匹配规则,全部都是数字,第一位非0,长度为5到12位. */ public class Zifuchuan_Parse { public static void main(String[] args) { String info=" anglebaby 女 18 515151511 "; info=info.trim(); String[] arr=info.split("\\s+"); for(String str:arr) { System.out.println(str); } String name=arr[0]; String sex=arr[1]; int age=Integer.parseInt(arr[2]); String qq=arr[3]; Person p=new Person(name,sex,age,qq); System.out.println(p.toString()); if(qq.matches("[1-9][0-9]{4,11}")) { System.out.println("QQ号码合法~"); } } } class Person{ private String name; private String sex; private int age; private String qq; public Person(String name, String sex, int age, String qq) { super(); this.name = name; this.sex = sex; this.age = age; this.qq = qq; } public Person() { super(); } @Override public String toString() { return "Person [name=" + name + ", sex=" + sex + ", age=" + age + ", qq=" + qq + "]"; } }