美文网首页
字符串相关类

字符串相关类

作者: TryCatch菌 | 来源:发表于2018-10-01 00:11 被阅读0次

JAVA运行期数据存放

内存分为四个区域,堆 栈 数据 段代码段
堆:new(对象)
栈:局部变量
数据段:类变量,常量
代码段:方法的定义

需特别注意

String s=new String ("abc");
s 变量指向堆当中的字符串对象,但是在产生堆中的字符串对象之前,会先在常量区中,产生字符串常量对象(abc).然后以常量对象为模板,拷入堆中的字符串对象。如果常量区中有对应的字符串,就直接拷贝。

栈生命周期最短,方法结束空间释放,堆空间方对象,类结束,空间结束,数据段虚拟机关闭空间释放,代码的单独空间放置

equals 方法比较,如果是String 类型,比较的就是地址对应的内容,过个是引用类型,比较的就是地址是否相等
==比较的是地址,基本类型用==比较,因为数据和地址是一起的,所以可以用==直接比较内容

字符串的特性
字符串具有长度不可变化的特性,当对字符串进行添加,替换,删除时,不会改变字符串的内容,而是产生一个新的字符串

java.lang包String类常用方法

public class StringTest {

      public static void main(String[] args) {

            String s1="abc";
            //得到指定下标的字符串
            char c=s1.charAt(1);
            System.out.println(c);

            String s2="abc";
            String s3="ABC";
            //比较两个字符串是否相等,忽略大小写
            System.out.println(s2.equalsIgnoreCase(s3));
            //比较两个字符串是否相等,区分大小写
            System.out.println(s2.equals(s3));

            String s4="abcde";
            //得到指定字符串第一次出现在s4字符串的下标,如果s4中不包含该字符串,返回-1
            int index=s4.indexOf("bc");
            //得到指定字符串最后一次出现在s4字符串的下标,如果s4中不包含该字符串,返回-1
            int last=s4.lastIndexOf("c");
            System.out.println(index+"   "+last);

            //得到字符串长度
            int len=s4.length();
            System.out.println(len);

            //替换指定字符串
            String s5="abdsafdsa";
            String rep=s5.replace("a", "$");
            System.out.println(rep);

            String s6="acabdsafg";
            //下标3开始,截取字符串
            String sub=s6.substring(3);
            //下标3开始,5结束,截取字符串,包含开始3,不包含结束5
            String sub1=s6.substring(3, 5);
            System.out.println(sub+"  "+sub1);

            String s7="   ab cd ef    ";
            //去掉两头空格
            s7=s7.trim();
            System.out.println(s7+"*");

      }

}

编写一个程序,解析字符串,然后写入资源文件

import java.io.FileWriter;
import java.io.IOException;
import java.util.Properties;

public class Test2 {

      public static void main(String[] args) {
            String str="http://localhost:8088/abc?name=john&sex=男";

            //获取问号下标
            int num=str.indexOf("?");
            //获取等号下标
            int num2=str.indexOf("=");
            //截取问号之后等号之前的数据
            String nameStr=str.substring(num+1,num2);

            //截取&之前,等号之后数据
            int num3=str.indexOf("&");
            String userName=str.substring(num2+1,num3);

            //去掉&之前字符串
            String newStr=str.substring(num3);
            //获取性别
            int num4=newStr.indexOf("=");
            String sexStr=newStr.substring(1, num4);
            //获取性别
            String userSex=newStr.substring(num4+1);

            //添加进资源文件
            Properties pro=new Properties();
            pro.setProperty(nameStr, userName);
            pro.setProperty(sexStr, userSex);
            try {
                  pro.store(new FileWriter("String.txt"),null);
            } catch (IOException e) {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
            }
      }

}


正则表达式

指定为字符串的正则表达式必须首先被编译为此类的实例。然后,可将得到的模式用于创建 Matcher 对象,依照正则表达式,该对象可以与任意字符序列匹配。

正则表达式的构造要求


    1. [ ]:表示[ ]中描述的任意字符
    2. {3,20}:表示前一个规则最少出现3次,最多出现20次
    3. {3, }:表示最少出现3次,没有上限
    4. {3}:表示只能出现3次,不能多,不能少
    5. |:表示或者
    6. *:等价于{0,},可以出现,可以不出现,如果出现,没有上限
    7. +:等价于{1,},至少出现异常,没有上限限制
    8. ?:等价于{0,1},可以出现,可以不出现,如果出现最多一次
    9. .:表示任意字符
    10. \d:等价于[0-9],表示数字
    11. \s:表示空格或回车
    12. \w:等价于[a-zA-Z0-9_ ],表示合法标识符
    13. 匹配中文 \u4e00-\\u9fa5  两个斜杠  例如 \\w    \\d


import javax.swing.JOptionPane;

public class EmailTest {
     //匹配邮箱格式是否合法
      public static void main(String[] args) {
            String EmailStr = JOptionPane.showInputDialog(null, "请输入邮箱号");
            // 设定正则表达式匹配的字符串的格式
            String rex = "[a-zA-Z0-9]{3,20}[@][A-Za-z0-9]{2,9}[.](com|cn|net)";
            if (EmailStr.matches(rex)) {
                  JOptionPane.showMessageDialog(null, "合法");
            } else {
                  JOptionPane.showMessageDialog(null, "非法");
            }

      }

}

实际应用 添加信息匹配

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class StudnetFrame extends JFrame{

      private Text nameTxt=new Text("姓名", 50, 50, this);
      private Text ageTxt=new Text("年龄", 50, 100, this);
      private Text sexTxt=new Text("性别", 50, 150, this);

      public StudnetFrame(){
            this.setLayout(null);

            Button addButton=new Button("添加", 100, 200, this);
            addButton.addActionListener(new ActionListener() {

                  @Override
                  public void actionPerformed(ActionEvent e) {
                        String info="";
                        if(nameTxt.getText().matches("[a-zA-Z\\u4e00-\\u9fa5]{2,}")==false){

                              info+="姓名必须是2位以上的字母或汉字\n";
                        }
                        if(ageTxt.getText().matches("\\d{1,3}")==false){
                              info+="年龄必须是数字\n";
                        }
                        if(sexTxt.getText().matches("(男|女)")==false){
                              info+="性别必须是男或女\n";
                        }
                        if(info.length()!=0){
                              JOptionPane.showMessageDialog(null, info);
                              return;
                        }

                        JOptionPane.showMessageDialog(null, "执行业务");

                  }
            });


            this.setSize(500,400);
            this.setVisible(true);
            this.setDefaultCloseOperation(3);
            this.setLocationRelativeTo(null);
      }



      public static void main(String[] args) {
            StudnetFrame s=new StudnetFrame();

      }

}

StringBuffer类
StringBuffer是缓存区的对象,当对StringBuffer做添加,替换,删除时,直接改变StringBuffer的内容,不会产生新对象
如果需要对字符串做频繁操作时,一般先转换为为StringBuffer,操作完成后再通过toString()转换为字符串

StringBuffer类常用方法

import javax.swing.JOptionPane;

public class Test {

      public static void main(String[] args) {

            StringBuffer sb=new StringBuffer("123456");
            //追加
            sb.append("s");
            System.out.println(sb);
            //插入 (插入的位置下标,插入的内容)
            sb.insert(4, "********");
            System.out.println(sb);
            //删除(删除起始位置,结束位置)
            sb.delete(1, 2);
            System.out.println(sb);

            // 将字符串倒序输出 比如:输入”abcde”   那么,输出 “edcba”
            String str=JOptionPane.showInputDialog(null,"请输入一个数组");
            StringBuffer str1=new StringBuffer(str);
            //reverse()方法为反转输出,在StringBuffer中第一个方法
            str=str1.reverse().toString();
            System.out.println(str);
               

      }

}

相关文章

  • Chapter 11 . 常用类

    阅读原文 Chapter 11 . 常用类 11.1字符串相关类 String类:构造字符串对象 常量对象:字符串...

  • 8.2-全栈Java笔记:字符串相关类(String/Strin

    字符串相关类(String/StringBuilder /StringBuffer) String类 String...

  • Java实战开发篇-7 基础类库

    基础类库 一、String类 String类是定义不可变的字符串,如 用String类创建常量字符串以及相关子类 ...

  • Java常用类笔记

    字符串相关的类 String类及常用方法 String的特性 String类:代表字符串。Java 程序中的所有字...

  • 可变字符串类和日期相关类

    来自拉钩教育-JAVA就业集训营 可变字符串类和日期相关类 可变字符串类(重点) 基本概念 由于String类描述...

  • 字符串相关类

    JAVA运行期数据存放 内存分为四个区域,堆 栈 数据 段代码段堆:new(对象)栈:局部变量数据段:类变量,常量...

  • Javascript通用工具类

    Json工具类,处理所有Json相关的通用方法。 数字计算工具类 颜色工具类 日期工具类 字符串工具类

  • C# 源码计数器

    设计背景 设计思路 相关技术 抽象类 文件操作 字符串解析 项目结构 抽象类FileAnalyser 文件分析类负...

  • 递归经典问题求解

    2.字符串相关操作 java 类 String 中对字符串的操作特别之多 如通过equal()判断字符串相等 tr...

  • Java进阶-常用类

    字符串相关类 之前我们学习的字符串被作为String类的对象处理,然而String对象在创建之后是不可变的,接下来...

网友评论

      本文标题:字符串相关类

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