欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java基础1.5版后新特性 自动装箱拆箱 Date SimpleDateFormat Calendar.getInstance()获得一个日历对象 抽象不要生

程序员文章站 2022-04-16 10:01:07
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 + "]";
    }
    
    
    
}