javaSE之 swing + String类+正则表达式

到此处我们面向对象就基本完成;

1、变量 – 数据类型(8大数据类型、复杂数据类型)
2、流程控制 顺序 分支(if..else switch..case) 循环(for while do…while)
3、数组、函数 (减少代码的重复编写)
3、面向对象 – 抽象 – 【方法】 – 封装– 继承 –多态 (关键字)– 抽象类–接口
方法的重写、重载、构造器、static、final 、super、this,4个访问修饰符public、private。
4、javaSE的学习、
图形界面。
常用类、学会API
操作硬盘、网络通信、复杂数据结构、。。。。。

GUI:图形用户界面,

CPU:指令处理器
GPU:图形指令处理器

JFrame:组件 –> 类
创建对象调用构造器-构造方法。

这里写图片描述

所有的类我们都可以使用默认构造方法,
然后创建对象,调用方法,完成创建

//窗体  -- 宽高
        JFrame jf = new JFrame();
        //设置宽高
        jf.setSize(430, 330);
        //设置初始位置
        jf.setLocation(400, 200);
        //设置标题
        jf.setTitle("QQ");
        //设置关闭按钮事件
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

文字组件: JLabel
//创建文字
JLabel zhanghao = new JLabel(“账号”);
JLabel mima = new JLabel(“密码”);
按钮组件:
JButton btu_login = new JButton(“登录”);
JButton btu_reg = new JButton(“注册”);

    jf.add(btu_login);
    btu_login.setBounds(100, 170, 100, 30);

文本框组件:

    JTextField user = new JTextField();
    JTextField pwd = new JTextField();

    jf.add(user);
    user.setBounds(100, 60, 200, 30);

设置布局方式: 默认边界布局:同安卓、ios,
改成空布局

//设置为空布局,好加载我们的组件
        jf.setLayout(null);

事件: javascript里面讲解过事件,道理一样

btu_login.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String userName = user.getText();
String password = pwd.getText();
System.out.println(“userName=”+userName);
System.out.println(“pwd = ” + password);
if(userName == “admin” && password==”admin”) {
System.out.println(“登录成功”);
}else {
System.out.println(“登录失败,,,,”);
}

        }
    });

此时我们发现,无论如何都是登录失败,问题出在字符串的比较上,此时我们对String类进行讲解,
此处注意:
   对于基本数据类型  我们用== 进行比较
   对于复杂数据类型,我们需要调用equals进行比较,因为equals是比较的对象里面的内容是否相等。

对于String来说,我们在内存中会将字符串当做常量存储在静态常量池,代码如下:
    int num = 10;
    Person p = new Person();
    String name1 = "zhangsan";
    String name2 = "zhangsan";
    System.out.println(name1 == name2);
    System.out.println(name1.equals(name2));

    String name3 = new String("zhangsan");
    String name4 = new String("zhangsan");
    System.out.println(name3 == name4);
    System.out.println(name3.equals(name4));
内存图如下:
![这里写图片描述](https://img-blog.csdn.net/20180605153959605?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NreTI3NDU0ODc2OQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)


所以对于String来说,内存的理解很重要!

对于String类来说

截取字符串,查询字符串,包含字符串,替换内容等方法都很重要,

1、equals方法
     equals是object定义的专门用于比较大小的方法。对于我们来说,如果我们自己定义了一个想要通过equals来比较是否相等,我们需要重写自己类的equals方法,

public class Person {

private String name;
private int age;
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public int getAge() {
    return age;
}
public void setAge(int age) {
    this.age = age;
}

//重写equals  实现名字和年龄相同才返回true

public boolean equals(Object obj) {
    Person p1 = (Person) obj;
    boolean flag = false;

    if(p1.getName().equals(this.getName())) {
        flag = true;
    }
    return flag;
}

}



2、toString方法
      toString方法是一个返回该对象数据的方法,
public String toString() {
        return "Person [name=" + name + ", age=" + age + "]";
    }
当我们访问对象的时候,默认是调用了toString方法。

3String和基本数据类型转换
      String info = "" + 19;
      Sring info 2 = String.valueof(18);
48大基本数据的包装类
    我们在代码中将基本数据类型转String是简单的,但是String中没有提供方法可以吧一个String转成基本数据类型,所以java就为每一个基本数据类型提供了一个包装类, double == Double    logn = Logn   int = integer  这些包装类提供了一个将String转成基本数据类型的方法。我们可以调用,从继承关系我们可以发现,所有的基本数据类型double继承自Number类。

5、正则表达式:根据某一规则去判断一个字符串是否匹配。又可以理解成为一门独立的编程语言,只是针对字符串进行操作。
    String info = "A";  //"a"
    //判断是0-9的数字
    System.out.println(info.matches("\\d"));
    //判断小写字母
    System.out.println(info.matches("\\p{Lower}"));
    //判断大写字母
    System.out.println(info.matches("\\p{Upper}"));

info = “13599996666”;
System.out.println(info.matches(“((136)|(135)|(137)|(187)|())\d{8}”));
System.out.println(info.matches(“(^(1)[356789])\d{9}$”));
info = “中华人名共和国”;
System.out.println(info.matches(“[\u4E00-\u9FA5\s]+”));
“`

正则表达式是一组规则,网上提供了大部分的模板,但是有部分是错误的,使用的时候可以测试一下。

猜你喜欢

转载自blog.csdn.net/sky274548769/article/details/80570934
今日推荐