达内培训Week2 8.23

正则表达式 regular expression regex 8.23

常见的正则表达方式:
一、校验数字的表达式
二、校验字符的表达式
三、特殊需求表达式

文件去看hsp的java文件

package com.mlyStudyJava.RegExp;

public class RegExp01 {
    public static void main(String[] args) {
        //email :regual expression == Regex
        //[a-zA-Z0-9_]+@[a-zA-Z0-9]+(\.[a-zA-Z]+)+
        //转义字符 \\->\ \[->[
        String email ="mlyjob@163.com";
        String regex ="[a-zA-Z0-9_]+@[a-zA-Z0-9]+(\\.[a-zA-Z]+)+";
        boolean match = email.matches(regex);//使用regex匹配email是否符合格式要求
        if(match){
            System.out.println("是正确的邮箱格式");
        }else{
            System.out.println("不是正确的邮箱格式");
        }
    }
}

正则的可视化网站 https://jex.im/regulex/#!flags=&re=^(a|b)*%3F%24

https://regexr.com/

package com.mlyStudyJava.RegExp;

import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;

/**
 * String replaceAll(String regex,String s):替换
 * 将当前字符串中满足正则表达式(reg)的部分给替换为给定的字符串(s)
 */
public class RegExp02 {
    public static void main(String[] args) {
        String line ="abc123def456ghi78";
        line = line.replaceAll("[0-9]+",",");
        System.out.println(line);
    }
}
package com.mlyStudyJava.RegExp;

import java.util.Arrays;

public class RegExp03 {
    public static void main(String[] args) {
        String line ="abc123def456ghi78b";
        String[] data = line.split("[0-9]+");//按数字拆分,把数字拆掉。
//        for (int i = 0; i <data.length ; i++) {
//            System.out.println();
//        }

        System.out.println(Arrays.toString(data));
        line = "123.456.78";
        data =line.split("\\.");
        System.out.println(Arrays.toString(data));

        line = ".123.456..78.......";
        data =line.split("\\.");
        /**
         * 若开始是. 那么第一个元素是空字符串
         * 连续2个. 中间也多个空字符串
         * 末尾连续.. 空字符串被忽略
         */

        System.out.println(Arrays.toString(data));

    }



}

构造器 类型私有,get set公开调用,需要创建构造器与类同名。不同包也可以导入包

package com.mlyStudyJava.RegExp;

import java.util.Objects;

public class Point {
    private int x;
    private int y;

    //构造方法
    public Point(int x, int y) {
        this.x = x;
        this.y = y;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Point point = (Point) o;
        return x == point.x &&
                y == point.y;
    }

    @Override
    public int hashCode() {
        return Objects.hash(x, y);
    }

    @Override
    public String toString() {
        return
                "x=" + x +
                ", y=" + y ;
    }

    public int getX() {
        return x;
    }

    public void setX(int x) {
        this.x = x;
    }

    public int getY() {
        return y;
    }

    public void setY(int y) {
        this.y = y;
    }


//alt+insert ->get and set
    //command +n
}

Object

Object:对象

  • 是所有类的鼻祖,所有的类直接或间接继承了Object,万物皆对象,为了多态

  • Object中有两个经常被派生类重写的方法:toString() 和equals()

    • 调用Object类的toString()时默认范围:类的全程@地址,没有参考意义。所以会重写toString()返回字符串

    • String、StringBuilding 都重写了toString来返回字符串

package com.mlyStudyJava.Object;

import com.mlyStudyJava.RegExp.Point;
//不同包下的类

/**
 * 调用Object类的equals() ,内部还是要用== 比较地址
 * 所以要比较属性值
 */
public class Object02 {
    public static void main(String[] args) {
        Point p1 = new Point(100,200);
        Point p2 = new Point(100,200);
        System.out.println(p1 == p2);//比较的是地址
        System.out.println(p1.equals(p2));
    }
}

包装类

package com.mlyStudyJava.Wrapper;

public class Integer01 {
    public static void main(String[] args) {
        Integer i1 = new Integer(5);
        Integer i2 = new Integer(5);
        System.out.println(i1==i2);//false == compare address
        System.out.println(i1.equals(i2));//重写了toString

        System.out.println("==================");
        //Integer.valueOf()会复用-128-127 的数据 valueof()更多一点
        Integer i3 = Integer.valueOf(5);
        Integer i4 = Integer.valueOf(5);
        System.out.println(i3==i4);
        System.out.println(i3.equals(i4));

        System.out.println("==================");
        Integer i5 = Integer.valueOf(500);
        Integer i6 = Integer.valueOf(500);
        System.out.println(i5==i6);
        System.out.println(i5.equals(i6));

    }
}
package com.mlyStudyJava.Wrapper;

public class Integer02 {
    public static void main(String[] args) {

        //Integer i = Integer.valueOf(5);
        //自动装箱
        Integer i =5;
        //自动拆箱  int j = i. intValue();
        int j =i ;
    }
}
package com.mlyStudyJava.Wrapper;

public class Integer03 {
    public static void main(String[] args) {
        /**
         * 演示包装类的常用操作
         * 1.通过包装类获取基本类型的取值范围
         */

        int max = Integer.MAX_VALUE;
        int min = Integer.MIN_VALUE;
        System.out.println("int的最大值为:"+max+",最小值为:"+min);

        long max1 =Long.MAX_VALUE;
        long min1 =Long.MIN_VALUE;
        System.out.println("long的最大值为:"+max1+",最小值为:"+min1);
        //2.包装类可以将字符串类型转换为对应的基本类型-------需要掌握

        String s1 = "38";
        int age = Integer.parseInt(s1);
        System.out.println(age);//string->int

        String s2 ="123.456";
        double price = Double.parseDouble(s2);
        System.out.println(s2);//string->double

    }


}

学习的思考梳理前2个月自学的经验:

利用月考梳理前面基础的知识,梳理好上传到博客私人可见,也是记录自己完成135天的代码训练的成果,做出项目。自己的基础太不牢固,导致后续无法学习SSM框架搭建。

() ->[]-> {} 小括号,中括号,大括号。

狂神的java笔记 ->mly的每天学习博客 在达内培训 4个半月的笔记

8.16-8.23 上传每日的笔记

博客园

只有自己敲出来的代码才是自己的。只上传自己敲出来的

复制黏贴的 要备注

尚硅谷也好,韩老师的课程也好,光有好课程,不跟着敲和思考。或者光听懂也没用。总归知识是无限的,你只要把当前能用的用好,基本概念的使用跟着老师去敲就行。哪怕不理解,能用就行,暂时不会背。等真正自己把前后端的项目做出来,基本功可以过关了,技术就过关可以上班,独立开发项目。

除了上课跟老师敲 同时基本课程也要敲

动手去做题

建项目的规范性->建包-子包-子类

包名的命名规范性

r2coding 国外的课程 课本已经放在桌面上。

基本课程:

自考的课程

java语言

数据结构与算法

数据库原理

计算机组成原理

计算机网络

java语言

c++

离散数学

拓展题:

1.提取字符串

K-V split

?-> &

API基础第二天扩展练习:

  1. 定义字符串String path = "http://localhost:8088/myweb/reg?name=zhangsan&pwd=123456&nick=san&age=16";

    要求得到并输出:参数名:name 参数值:zhangsan

    ​ 参数名:pwd 参数值: 123456

    ​ 参数名:nick 参数值: san

    ​ 参数名:age 参数值: 16

    完整代码:

    //测试类
    public class Test {
        public static void main(String[] args) {
            String path = "http://localhost:8088/myweb/reg?name=zhangsan&pwd=123456&nick=san&age=16";
    
            String[] arr = path.split("\\?");
            System.out.println("请求:"+arr[0]);
            System.out.println("参数:"+arr[1]);
            //拆分出每个参数,按照"&"拆分
            arr = arr[1].split("&");//[name=zhangsan, pwd=123456, ...]
            //遍历出每一个参数
            for(int i=0;i<arr.length;i++){
                String line = arr[i];
                //再将每个参数按照"="拆分为参数名和参数值
                String[] data = arr[i].split("=");
                System.out.println("参数名:"+data[0]+",参数值:"+data[1]);
            }
        }
    }
    
  2. 在给定的字符串中 生成4位验证码

    charat 和for循环
    生成一个4位验证码(数字和字母的组合),输出到控制台并提示用户输入验证码,输入后若正确则提示验证码正确,若错误则提示验证码错误。注意:不区分大小写

参考代码:

package string;
import java.util.Scanner;
import java.util.Random;
public class Test {
	public static void main(String[] args) {
		String line = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
		Random random = new Random();
		String code = "";
		for(int i=0;i<4;i++) {
			int index = random.nextInt(line.length());
			char c = line.charAt(index);
			code+=c;
		}
		System.out.println("验证码:"+code);
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入上述验证码:");
		String input = scanner.nextLine();
		
		if(code.equalsIgnoreCase(input)){
			System.out.println("通过!");
		}else{
			System.out.println("失败!");
		}
	}
}
posted @ 2022-08-23 19:00  luyi_ma  阅读(36)  评论(0)    收藏  举报