String
1.重要方法
1.intern():把指向转向到方法区
//
/* String str1="abc";
String str2=new String("abc");
//把指向转向到方法区
str2=str2.intern();
//str1=str1.intern();
//
System.out.println(str1==str2);*/
2.isEmpty():判断字符串对象内容是否为空
//空串---对象已经创建但是没有具体内容
String str1="";//空串
String str2=new String();//空串
String str3=new String("");//空串
//null---地址值不指向任何内存区域
//空不是null,null不是空
String str4=null;
//判断字符串对象是否是空串
System.out.println(str3.isEmpty());
3.matches():填入正则语法来匹配对应信息
package cn.tedu.pattern;
public class PatternDemo1 {
public static void main(String[] args) {
//
String str="1";
//匹配内容只有abc的字符串
//正则提供的语法---可以直接写出匹配内容
//System.out.println(str.matches("abc"));
//匹配内容只有一个数字的字符串
//[起始-结束]---匹配起始到结束范围内的任意一个数据
//System.out.println(str.matches("[0-9]"));
//\\d--字符串转义--\d--正则转义--[0-9]
System.out.println(str.matches("\\d"));
//.代表一个任意字符
//*代表数量词,表示前面的符号可以出现次数
//*代表可以不出现也可以出现多次
//System.out.println(str.matches(".*"));
}
}
4.replaceAll():根据填入正则语法来匹配对应信息,再把匹配到的信息替换成新的指定内容
package cn.tedu.pattern;
import java.util.Arrays;
public class PatternDemo2 {
public static void main(String[] args) {
//
String str="我2是3大4776";
//根据正则匹配的信息替换成新的内容
//System.out.println(str.replaceAll("\\d","*"));
//对字符串数字进行排序
//把字符串中所有的非数字字符替换成空串
//调用方法返回的新串给原串来赋值
str=str.replaceAll("\\D","");
//转成字符数组
char[] cs=str.toCharArray();
//排序
Arrays.sort(cs);
//
System.out.println(Arrays.toString(cs));
}
}
5.split():根据填入正则语法匹配对应信息,把匹配到信息当做切割符来切割字符串
package cn.tedu.pattern;
import java.util.Arrays;
public class PatternDemo3 {
public static void main(String[] args) {
//
String str="16asd4dv699f7a80";
//根据填入正则语法匹配对应信息,把匹配到信息当做成切割符来切割字符串
//当切割符出现在后面直接切掉,当出现在前面切出空串
//当切割符出现多个且在前面有几个切割符就切割出几个空串
//当切割符出现多个且在中间有几个切割符就切割出个数减一个空串
//当切割符出现多个且在后面无论有几个切割符都要切掉
String[] ss=str.split("\\d");
//输出数组内容
System.out.println(Arrays.toString(ss));
}
}
6.replace():把指定内容替换成新的内容
/* //
String str="wejhevbe";
//把指定的内容替换成新的内容
System.out.println(str.replace('e','+'));*/
7.subString():根据指定下标来截取子串
//
String str="wdjhfb";
//按照指定下标来截取子串
System.out.println(str.substring(2));
//左包右不包(含头不含尾)
System.out.println(str.substring(1,4));
8.toLowerCase/toUpperCase:转小写/大写
9.toString():String类重写Object类里方法,获取对象时获取的是对象的内容而不是地址值(字符处对象有地址值)
10.trim():把前面和后面的空格删除
public static void main(String[] args) {
//
String str=" dfv\t7 ";
//
System.out.println(str+"A");
//删除开头以及结尾的空格---掐头去尾
System.out.println(str.trim()+"A");
}
11.valueOf():支持所有类型数据转成字符串形式
package cn.tedu.string;
public class StringDemo4 {
public static void main(String[] args) {
/* //把double类型数据转成字符串形式的数据
String s=String.valueOf(2.3);
//把boolean类型数据转成字符串形式的数据
String s1=String.valueOf(true);
System.out.println(s1);*/
//
int[] arr={1,2,3};
//底层String.valueOf()接收arr数组
//调用Object类里toString方法拼接地址值来返回
System.out.println(arr);
char[] cs={'a','b','5'};
//底层没有执行String.valueOf方法没有调用Object类里
//toString方法没有拼接地址值,直接输出的是内容
System.out.println(cs);
//直接用数组对象调用Object类里toString来拼接地址值
System.out.println(cs.toString());
}
}
2.正则表达式
针对字符串中的关键信息来进行匹配
练习:
1.给定字符串输出每个字符的次数(replaceAll() 晚自习)
包装类
1.概念
为了方便、快捷的去操作基本类型数据,java
提供基本 类型对应的包装类。只能创建出包
装类的对象就能提供操作基本类型的数据的
便捷性。
byte short char int long float double boolean
Byte Short Character Integer Long Float Double Boolean
注意:
1.除了Character以及Integer之外其他包装类都是首字母大写
2.由基本类型数据来构建包装类对象—封箱
3.基本类型数据直接赋值给包装类的对象—自动封箱
包装类.valueOf(基本类型数据 )
包装类对象直接赋值给基本类型数据—自动拆箱
包装类对象.xxxValue()
4.自动封箱/拆箱是jdk1.5新特性
package cn.tedu.baozhuang;
public class BZDemo1 {
public static void main(String[] args) {
//定义变量
//int i=1;
//创建Integer类的对象
//由基本类型数据来构建包装类的对象---封箱
//Integer in=new Integer(i);
//把基本类型数据直接赋值给包装类的对象---自动封箱
//底层实现---Integer in=Integer.valueOf(i);
//自动封箱底层实现---包装类.valueOf(基本类型数据)
//自动封箱是jdk1.5的新特性
/* Integer in=i;
//自动封箱
//底层实现---Character c=Character.valueOf('a');
Character c='a';
//
System.out.println(in);*/
Integer in=new Integer(1);
//包装类对象直接赋值给基本类型数据---自动拆箱
//底层实现---int i=in.intValue();
//自动拆箱底层实现---包装类对象.xxxValue();
//自动拆箱是jdk1.5新特性
int i=in;
//
Double d=new Double(2.3);
//
//底层实现---double d1=d.doubleValue();
double d1=d;
//
System.out.println(i);
}
}
5.当整型包装类做自动封箱时,在-128127之间共享同一个数组,但是超过这个范围每次返回一个新对象(character共享范围是(0127))
package cn.tedu.baozhuang;
public class BZDemo2 {
public static void main(String[] args) {
//自动封箱
//Integer.valueOf(1)
//在-128~127之间共享同一个数组,但是超了这个范围每次返回一个新对象
/*Integer in1=1;
Integer in2=1;
//
System.out.println(in1==in2);*/
//Byte在-128~127之间共享同一个数组
//Byte.valueOf((byte)1)
//Short在-128~127之间共享同一个数组
//Short.valueOf((short) 2)
//Character在0~127之间共享同一个数组
//Character.valueOf('a')
//
//Boolean.valueOf( true)
//
int i=10;
Integer in=100;
//当包装类对象和基本类型数据进行操作时,会默认进行自动拆箱
//拆箱成了对应的基本类型数据就可以接着做操作
System.out.println(in+i);
}
}