美文网首页
day8-java基础(正则表达式、date类型、包装类)

day8-java基础(正则表达式、date类型、包装类)

作者: _拾年丶 | 来源:发表于2018-09-12 19:30 被阅读0次

    1. Date 日期

            千万别写错: Data 数据

            主要是在 java.util.Date 包
            另外还有一个 java.sql.Date 包,暂时不用。

             初始化的时候:new Date() 可以获取当下的时间。
            getTime() 获取从 1970年1月1日到现在为止的毫秒值,类型 long
            toString() 主要是将 Date 对象转换为字符串。

    2. DateFormat 日期格式转换器

            java.text.Format

            constant 常量
            final 最终值

    3. SimpleDateFormat

             java.text.SimpleDateFormat

    @Test
        public void test(){
            
            // dateFn();
            // dateFormatFn();
            // dateFormatFn2();
            dateFormatFn3();
            
        }
        
        public void dateFormatFn3(){
            
            String str = DateUtil.getDate(new Date());
            
            System.out.println(str);
        }
        
        public void dateFormatFn2(){
            
            // 1. 设置格式
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH点mm分ss秒");
            // 2. 创建 Date
            Date date = new Date();
            // 3. 如果子类中没有对应可用的方法,可以直接去父类中查找使用
            String dateStr = sdf.format(date);
            
            System.out.println(dateStr);
            
        }
            
        
        public void dateFormatFn(){
            
            // 1. 创建 Date
            Date date = new Date();
            
            // 2. 创建 DateFomat
            // 不支持直接 new 
            // DateFormat df = new DateFormat();
            DateFormat df = DateFormat.getInstance();
            
            String dateStr = df.format(date);
            // 18-9-12 上午11:26
            System.out.println(dateStr);
        }
        
        public void dateFn(){
            
            Date date = new Date();
            // Wed Sep 12 11:15:20 CST 2018
            System.out.println(date);
            
            // 获取从 1970-1-1 到现在的毫秒值
            long date2 = date.getTime();
            // 15367 2221 2946
            System.out.println(date2);
        }
        
        
    }
    

    封装类:将日期转换成字符串

    public class DateUtil {
        
        public static String getDate(Date date){
            
            if(date != null){
                
                // 1. 设置格式
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH点mm分ss秒");
                // 2. 如果子类中没有对应可用的方法,可以直接去父类中查找使用
                return sdf.format(date);
            }
            
            return null;
        }
    
    }
    

    求自己活了多少天了

    public class Demo2 {
        
        // add​(int field, int amount):根据日历规则,为已给定的日历字段增加或者减少时间量。
        // Adds or subtracts 增加或者减少  the specified 指定的  amount of time 时间量
        // to the given calendar field,  已经给出来的日历字段
        // based on the calendar's rules.  基于日历规则
        
        // 注意点中重点: 西方月份定义:0-11,星期的定义:日-六 
        
        // 1. 求自己已经活了多少天了?     XX 岁 XX 个月大 零 XX 天
        // 2. 求距离 2020-8-8日还有多少天?   高考
        
        
        
        @Test
        public void test(){
            
            // CalendarFn1();
            // CalendarFn2();
            // CalendarFn3();
            
            tiFn();
        }
        
        // 1. 求自己已经活了多少天了?     XX 岁 XX 个月大 零 XX 天
        public void tiFn(){
            
            // 1. 获取当前的时间对应的天数
            Calendar currentDate = Calendar.getInstance();
            Calendar birthDate = Calendar.getInstance();
            
            // 2. 获取出生时对应的天数
            // 设置出生日期:1999-8-8   2018-4-12      月份的公式:(12 + 当前月份 - 出生时月份)  yyyy-MM-dd
            birthDate.set(Calendar.YEAR, 1999);
            birthDate.set(Calendar.MONTH, 8);
            birthDate.set(Calendar.DATE, 8);
            
            // 3. 减法
            // 年份
            int cYear = currentDate.get(Calendar.YEAR);
            int mYear = birthDate.get(Calendar.YEAR);
            // 总年份
            int totalYear = cYear - mYear;  
            // 月份
            int cMonth = currentDate.get(Calendar.MONTH);
            int mMonth = birthDate.get(Calendar.MONTH);
            // 总月份
            // int totalMonth = (12 + cMonth - mMonth) + (cYear - mYear)*12 - 12;
            int totalMonth = (12 + cMonth - mMonth) + totalYear * 12 - 12;
            
            // 获取当前的天数
            int cDate = currentDate.get(Calendar.DATE);
            int mDate = birthDate.get(Calendar.DATE);
            // 总天数
            // int totalDay = ((12 + cMonth - mMonth) + (cYear - mYear)*12 - 12) * 30;
            int totalDay = totalMonth * 30;
            
            System.out.println("到现在为止,活了"+ totalDay +"天了");
            
        }
        
        
        public void CalendarFn3(){
            
            // 创建 calendar 实例
            Calendar c = Calendar.getInstance();
            
            // 2088-10-12
            c.set(Calendar.YEAR, 2088);
            c.set(Calendar.MONTH, 10);
            c.set(Calendar.DATE, 12);
            
            System.out.println(c);
        }
        
        public void CalendarFn2(){
            
            // 创建 calendar 实例
            Calendar c = Calendar.getInstance();
            
            // 2018-9-12 --> 17
            c.add(Calendar.DATE, 5);
            
            // 单独获取 c 则是全部的数据
            // 可以通过指定的 DAY_OF_MONTH 字段来获取日的数据。
            System.out.println(c.get(Calendar.DAY_OF_MONTH));
            
        }
        
        public void CalendarFn1(){
            
            // 创建 calendar 实例
            Calendar c = Calendar.getInstance();
            
            // 获取年份
            int year = c.get(Calendar.YEAR);
            System.out.println(year);
            
            // 这个月的第几周
            System.out.println("这个月:" + c.get(Calendar.WEEK_OF_MONTH));
            
            // 今年的第几周
            System.out.println("今年:" + c.get(Calendar.WEEK_OF_YEAR));
            
            
        }
        
        public void hello() throws Exception{
            
            // 1. 设置一个日期格式
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
            // 2. 设置出生日期和当前日期
            Date firstDate = format.parse("1999-8-8");
            Date endDate = format.parse("2018-9-12");
            // 3. 初始化 Calendar 对象
            Calendar calendar = Calendar.getInstance();
            // 4. 将出生日期加入到 Calendar 实例中
            calendar.setTime(firstDate);
            // 5. 设置旗标值,用于循环迭加
            int cnt = 0;
            // 6. compareTo() 接收两个 Calendar 对象值
            // 将传入的时间,直接转换成毫秒值(从 1970-1-1开始) 然后可以进行比较
            // 如果两个值相减时得到 0 则时同一时间,否则就是两者之差
            // 如果直接采用这种方式,性能非常不好
            while(calendar.getTime().compareTo(endDate) != 0) {
                
                // 每次给开始时间去加1天(下面的1单位是天),直到天数加上来等于给定的结束时间为止,
                // 循环将不再成立,结束循环
                calendar.add(Calendar.DATE, 1);
                cnt++;
            }
    
            System.out.println("您活了:" + cnt + "天");
        }
    
    }
    

    4.正则表达式

            下面出现的 X 代表的是随便一个字符。

            1. X:要求必须匹配指定的字符。 a --> "a"
            2. \:代表 \ 斜杠。
            3. \t:相当于 tab 键,制表符。
            4. \n:相当于回车键,换行。
            5. \r:相当于回车键,换行。

            6. [abc]:接收的内容,只能是指定字符中之一。
            7. [^abc]:接收的内容,是除了指定的其他所有值。
            8. [a-zA-Z]:指的是全部大小写字母。
            9. [0-9]:指所有的数字。
            10.[a-zA-Z0-9]:指的是所有的字母和数字。

            1. 用小实心圆点 . 来表示所有的字符。 . 但书写的时候需要 \.
            12. \d:指 0-9 的数字。
            13. \w:指的是 [a-zA-Z0-9_]中的值。
            14. ^ 开头,结尾:^[abc][0-9]
            15. \b:单词边界。 \b[abc]\b 指的是 a、b、c 三个字母左右两边的值都是 [a-zA-Z0-9] 范围的。

            16. X?:出现一次或者一次都没有。
            17. X*:出现零次或者多次。
            18. X+:出现一次或者多次。
            19. X{n}:恰好出现 n 次。
             20. X{n,}:至少出现 n 次。
             21. X{n, m}:至少出现 n 次,但不超过 m 次。

    验证邮箱1:

    public void email(){
            
            // String email = "zsfz_053@126.com";
            // String regrex = "[a-zA-Z_0-9]+@[a-zA-Z0-9]+(\\.[a-zA-Z_0-9]+)";
            
            String email = "hello@sina.com.cn";
            String regrex = "\\w+@\\w+(\\.\\w+)+";
                    
            System.out.println(email.matches(regrex));
        }
    

    验证邮箱2:

    public void regrex(){
            String email = "12345-6@qq.com";
            String regrex = "[\\w-_]{6,18}@[\\w]*\\.[comn]*";
            boolean b =  email.matches(regrex);
            System.out.println(b);
        };
    

    5.包装类

            包装类

            我们以前用的 int、char、double、float、boolean、short、byte 等都是基本数据类型。
            在 Java 开发中尽量少用基本数据类型,多用包装类型。
            针对基本数据类型进行升级,Java 提供多个包装类:
            Integer、Character、Double、Float、Boolean、Short、Byte,引用数据类型,有内存地址。
            包装类型,可以让开发者以面向对象的思维来操作,而且提供了很多的方法来实现功能。

            转换方法:
            1. compareTo​(Integer anotherInteger):将两个 Integer 值来做运算(减法)
            2. parseInt​(String s):将 String 转 int,字符串中只能是数值才能转。
            3. intValue():将 Integer 以 int 类型返回。
            4. valueOf(int):将 int 转成 Integer。
            5. valueOf(String):将 String 转成 Integer。

            比较:
            max​(int a, int b):返回两者中最大值。
            min​(int a, int b):返回两者中最小值。


    6.math()方法

    public class Demo {
        
        @Test
        public void test(){
            
            // 1. 四舍五入
            System.out.println(Math.round(3.17));
            
            // 2. 向上取整
            System.out.println(Math.ceil(3.24));
            
            // 3. 向下取整
            System.out.println(Math.floor(3.84));
            
            // 4. 最大值
            System.out.println(Math.max(5, 6));
            
            // 5. 最小值
            System.out.println(Math.min(5, 6));
            
            // 6. 绝对值
            System.out.println(Math.abs(-7));
            System.out.println(Math.abs(-7.34));
            
            // 7. xx的多少次幂
            System.out.println(Math.pow(5, 6));
            
            // 8. 随机数:0.0-1.0
            System.out.println(Math.random());
        
        }
    }
    

    7.Arrays数组

    public class Demo {
    
        @Test
        public void test() {
            
            // 找到班里考试分数最低的三个
            int[] aa = {73, 97, 24, 33, 65, 45, 99};
            
            // 排序
            Arrays.sort(aa);
            
            // 新建一个数组存储值
            int[] i = new int[3];
            
            for (int j = 0; j < i.length; j++) {
                
                i[j] = aa[j];
            }
            
            System.out.println(Arrays.toString(i));
            
    
        }
    
        public void ArraysFn() {
    
            // sort:排序(小到大)
            int[] aa = { 23, 33, 5, 12, 88, 34, 25 };
            // Arrays.sort(aa);
    
            for (int i : aa) {
                System.out.print(i + ",");
            }
    
            // toString() 将数据以字符串返回
            String str = Arrays.toString(aa);
            System.out.println(str);
    
            // 二分法: return index of the search key, 返回要找的内容对应下标值
            int index = Arrays.binarySearch(aa, 12);
            System.out.println(index);
        }
    }
    

    8.BigDecimal

    public class BigDecimalTest {
        
        @Test
        public void test(){
            
            System.out.println(0.09 + 0.02222222); // 0.11
            System.out.println(1.0 - 0.44); // 0.56
            System.out.println(1.304 * 100); // 130.4
            System.out.println(1.304 / 100); // 0.013040000000000001
            
            BigDecimal a = new BigDecimal(1.0);
            BigDecimal b = new BigDecimal(0.44);
            // BigDecimal c = a.add(b);
            BigDecimal c = a.subtract(b);
            System.out.println(1.0 + 0.44);
            System.out.println(c);
        }
    
    }
    

    9.list集合

    public class Demo {
    
        // List 集合
    
        // 相当于一个容器,跟数组是类似的,用于存储数据。
        // 数组不能动态变化长度,来添加数据,但集合可以。
    
        // List 接口
        // 1. 存储的值是有序排列的。
        // 2. 值是允许重复的。
        // 3. 可以通过索引寻找。
    
        // 需要掌握的实现类:ArrayList、LinkedList
    
        // 增加数据:
        // add() 在尾部追加
        // add(index, element) 指定位置加
        // 删除删除
        // remove​(index) 通过下标值来删除
        // remove(Object) 直接删掉指定对象
        // 替换数据
        // set​(index, element) 在指定的位置设置内容
        // 查找数据
        // get​(index) 根据下标值获取对象
    
        @Test
        public void test() {
    
            listIteratorFn();
        }
    
        public void listIteratorFn(){
            // 创建一个 ArrayList 对象
            ArrayList<String> arrList = new ArrayList<>();
            // 添加值
            arrList.add("cuihua");
            arrList.add("chunhua");
            arrList.add("hehua");
    
            // 获取  ListIterator 迭加器,访问数据。
            ListIterator<String> itStr = arrList.listIterator();
            
            // hasNext() 判断下面是否有数据,指针还没动的时候
            while (itStr.hasNext()) {
                
                // 就让指针移动,然后获取对应的值到 迭加器 中。
                String aa = itStr.next();
    
                // 看是否最后一个值,如果是的话,我想追加一个新值
                if ("chunhua".equals(aa)) {
                    // 将一个新值,加到 叠加器 中
                    itStr.add("hello");   
                }
            }
            System.out.println(arrList.toString());
        }
    }
    
    

    相关文章

      网友评论

          本文标题:day8-java基础(正则表达式、date类型、包装类)

          本文链接:https://www.haomeiwen.com/subject/nxebgftx.html