正则表达式
正则表达式是一种字符串处理工具,它用于匹配、查找、替换和提取文本中符合要求的内容。
正则表达式中普通字符匹配规则
特殊字符
非打印字符
限定符
定位符
用于正则表达式中的几个方法
Pattern.compile(String regex):用于将正则表达式编译成一个Pattern对象。
Macther.matches():该方法用于判定给定字符串是否与正则表达式匹配,返回一个布尔值。是拿着整个字符串序列和正则表达式匹配,是要看整体的。
Matcher.find():该方法用于在给定字符串中查找与正则表达式匹配的子序列,并返回一个布尔值。如果找到,可以用group()方法获取匹配的子序列。这个方法与Macther.matches()方法不同,是在整个序列中找符合正则表达式的子序列。
上述三个方法的使用:
//匹配数字,匹配三位
String regex = "\\d\\d\\d";
//将正则表达式编译成pattern对象
Pattern pattern = Pattern.compile(regex);
String str = "a12345";
//创建匹配器
Matcher matcher = pattern.matcher(str);
//使用matcher.find()输出结果
System.out.println(matcher.find()); //true
//匹配数字
String regex = "\\d+";
String str = "123456";
//将正则表达式编译成pattern对象
Pattern pattern = Pattern.compile(regex);
//创建匹配器
Matcher matcher = pattern.matcher(str);
boolean isMatches = matcher.matches();
System.out.println(isMatches); //true
matcher.replaceAll(String replacement):该方法用于在给定字符串中匹配正则表达式的子序列,replacement是一个字符串类型的替换字符串。
// 匹配数字
String regex = "\\d+";
// 将正则表达式编译成模式
Pattern pattern = Pattern.compile(regex);
String text = "hello 123 world 456";
// 创建匹配器对象
Matcher matcher = pattern.matcher(text);
// 将匹配的子序列替换为"###"
String replacedText = matcher.replaceAll("###");
// 输出替换后的结果字符串 hello ### world ###
System.out.println(replacedText); //hello###world###
包装类
为了使基本数据类型也具有面向对象的特性,Java提供了包装类,包装类是一种特殊的类,用于将基本数据类型封装成对象,Java提供了8中包装类:除了Character,其他都是包装类都是对应的基本数据类型首字母大写。
构造方法(JDK9之后过时)
Integer构造方法:Integer(int value),Integer(String s),s表示数字字符串。
装箱/拆箱
装箱和拆箱指的是基本数据类型和对应的包装类之间的转换。
装箱:将基本数据类型转换成对应的包装类对象,可以使用包装类的构造方法或者静态方法valueOf( )来完成。
拆箱:将包装类对象转换成对应的基本数据类型,可以使用包装类提供的XxxValue( )方法来完成。
// 装箱:将int类型转换为Integer类型
int i = 100;
Integer integerObj = new Integer(i);
Integer integerObj2 = Integer.valueOf(i);
// 拆箱:将Integer类型转换为int类型
Integer integerObj3 = new Integer(200);
int j = integerObj3.intValue();
int k = integerObj3; // 自动拆箱
}
自动装箱/拆箱(JDK5以上)
当基本数据类型和它们对应的包装类有如下操作时,会进行自动装箱/拆箱:
进行 "="赋值操作时(装箱或拆箱)
+ - * /混合运算时,进行拆箱
> < == 比较运算时,进行拆箱
调用equals( )比较时,进行装箱
ArrayList,HashMap添加基础类型数据时,进行装箱
int a = 100;
Integer b = 100;
System.out.println(a == b); // true (a和b比较时b会进行自动拆箱,然后直接比较二者的值)
Integer c = 100;
Integer d = 100;
System.out.println(c == d); // true
Integer num1 = new Integer(100);
Integer num2 = new Integer(100);
System.out.println(num1 == num2); // false
c = 200;
d = 200;
System.out.println(c == d); // false
Integer c = 100;
Integer d = 100;
System.out.println(c == d); // true
//此处是因为IntegerCache(缓存常量池)中有-128-127之间的所有数字(int范围内的所有数字),-128-127之间的数字可以直接从缓存池中拿,不会重新创建对象,所以c == d是true
Integer方法
Character方法
String类型转换成基本类型
将字符串类型转成成基本类型,需要使用基本类型的包装类,String的valueOf( )将基本数据类型转换成字符串。
基本类型中除了char类型之外,其他7种基本数据类型使用各自的包装类调用parseXxx()方法将String类型转换成基本数据类型。
char类型的转换可以通过String类的charAt(int index)完成。
基本数据类型转换为String类型
String数据类型在参与运算时,需要转换成基本数据类型,基本数据类型在界面上显示时需要将数据转换成String类型后输出在界面上。
八种基本数据类型转换成String的方法有两种
1.通过 "+" 将基本数据类型和String类型连接,将基本数据类型转换成String类型。
2.通过String.valueOf(基本数据类型)方法将基本数据类型转换成String类型。
字符串变量
StringBuffer类
StringBuffer类在Java中是一个可变的字符串类,它提供了对字符串进行修改的方法。与String类不同,StringBuffer类的对象可以修改。
StringBuffer类的构造方法
StringBuffer sb = new StringBuffer( ):创建一个空的StringBuffer对象,初识容量默认为16.
StringBuffer sb = new StringBuffer(int capacity) :创建一个空的StringBuffer对象,并指定初始容量。
StringBuffer sb = new StringBuffer(String str):创建一个空的StringBuffer对象,初始容量将被设置为字符串的长 度加上默认的容量增量(默认为16)。
// 创建一个空的StringBuffer对象
StringBuffer sb1 = new StringBuffer();
// 创建一个初始容量为20的StringBuffer对象
StringBuffer sb2 = new StringBuffer(20);
// 创建一个包含字符串"Hello"的StringBuffer对象
StringBuffer sb3 = new StringBuffer("Hello");
// 创建一个包含StringBuilder对象内容的StringBuffer对象
StringBuffer sb4 = new StringBuffer(new StringBuilder("World"));
StringBuffer常用方法
StringBuffer sb = new StringBuffer();
sb.append(); //将一个字符或字符串添加到sb末尾
sb.insert(); //将一个字符或字符串添加到sb的指定位置上
sb.delete(); //从sb中删除指定位置的元素
sb.reverse(); //将sb的序列翻转
sb.length(); //获取sb序列的长度
sb.toString(); //将sb转换成普通的字符串
使用示例:
// 创建一个空的StringBuffer对象
StringBuffer sb = new StringBuffer();
sb.append("Hello");
sb.insert(5, " World");
sb.deleteCharAt(10);
sb.reverse();
System.out.println(sb.toString());
StringBuilder类
StringBuilder是Java中的一个类,它提供了一种可变的字符串缓冲区,可以动态的改变字符串的内容,StringBuilder类是可变的,意味着它的长度和内容可以随时变化,不用再重新创建新的对象。
StringBuilder类的常用方法
StringBuilder sb = new StringBuilder();
sb.append(); //追加字符或字符串
sb.insert(); //在指定位置插入指定的字符串
sb.delete(); //删除指定范围内的字符串
sb.reverse(); //翻转序列的字符顺序
sb.replace(); //用指定的字符串替换指定的字符串
使用示例:
StringBuilder sb = new StringBuilder();
sb.append("Hello");
sb.append(" ");
sb.append("World");
String result = sb.toString();
System.out.println(result); // Hello World
}