String
重要方法
1.intern():把指向转向到方法区
2.isEmpty():判断字符串对象内容是否为空
package cn.tedu.string;
public class StringDemo1 {
public static void main(String[] args) {
//
/*String str1="abc";
String str2=new String("abc");
//把指向转向到方法区
str2=str2.intern();
//str1=str1.intern();
//
System.out.println(str1==str2);*/
//空串----对象已经创建但是没有具体内容
String str1="";//空串
String str2=new String();//空串
String str3=new String("");//空串
//null---地址值不指向任何内存区域
//空不是null,null不是空
String str4=null;
//判断字符串对象是否是空串
System.out.println(str4.isEmpty());
}
}
3.matches():填入正则语法来匹配对应信息
4.replaceAll():根据填入的正则语法来匹配对应信息,再把匹配到的信息替换成新的指定内容
5.split():根据填入的正则语法匹配对应信息,把匹配到信息当做切割符来切割字符串
6.replace():把指定内容替换成新的内容
7.subString():根据指定下标来截取子串
package cn.tedu.string;
public class StringDemo2 {
public static void main(String[] args) {
//
/*String str="aesfewaxecz";
//把指定内容替换成新的内容
System.out.println(str.replace('e','+'));*/
//
String str="safwa";
//按照指定下标来截取子串
System.out.println(str.substring(3));
//左包右不包(含头不含尾)
System.out.println(str.substring(1,4));
}
}
8.toLowCase/toUpperCase():转小写/大写
9.toString():String重写Object类里方法,获取对象时获取的是对象的内容而不是地址值(字符串对象有地址值)
10.trim():把前面和后面的空格删除
package cn.tedu.string;
public class StringDemo3 {
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;
import javax.swing.plaf.synth.SynthOptionPaneUI;
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());
}
}
正则表达式
针对字符串中的关键信息来进行匹配
package cn.tedu.pattern;
public class PatternDemo1 {
public static void main(String[] args) {
//
String str="9";
//匹配字符串中只有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(".*"));
}
}
package cn.tedu.pattern;
import java.util.Arrays;
public class PatternDemo2 {
public static void main(String[] args) {
//
String str="我是ahf大ba42ga3";
//根据正则匹配的信息替换成新的内容
//System.out.println(str.replaceAll("\\d","*"));
//对字符串中数字进行排序
//把字符串中所有的非数字字符替换成空串
//调用方法返回的新串给原串来赋值
str=str.replaceAll("\\D","");
//转成字符数组
char[] cs=str.toCharArray();
//排序
Arrays.sort(cs);
//
System.out.println(Arrays.toString(cs));
}
}
package cn.tedu.pattern;
import java.util.Arrays;
public class PatternDemo3 {
public static void main(String[] args) {
//
String str="saf4ag5a3ga";
//根据填入的正则语法匹配对应信息,把匹配到的信息当做成切割符来切割字符串
//当切割符出现在后面直接切掉,当出现在前面切出空串
//当切割符出现多个且在前面,有几个切割符就切割出几个空串
//当切割符出现多个且在中间有几个切割符就切割出个数减一个空串
//当切割符出现多个且在后面无论几个切割符都要切掉
String[] ss=str.split("\\d");
//输出数组内容
System.out.println(Arrays.toString(ss));
}
}
包装类
为了方便、快捷的去操作基本数据类型,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新特性
5.当整形包装类做自动封箱时,在-128127之间共享同一个数组,但是超过这个范围为此返回一个新对象(character共享范围是(0127))
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();
//自动拆箱底层实现---包装类对象.xxxxvalue();
//自动拆箱是jdk1.5新特性
int i=in;
//
Double d=new Double(2.3);
//
//底层实现---double d=d.doubleValue();
double d1=d;
//
System.out.println(i);
}
}
package cn.tedu.baozhuang;
public class BZDemo2 {
public static void main(String[] args) {
//自动封箱
//Integer.valueOf(1)
//在-128~127之间共享同一个数组,但是超过这个范围每次返回一个新对象
/* Integer in1=1;
Integer in2=2;
//
System.out.println(in1==in2);*/
//Byte
//Byte.valueOf((byte)1);
//Short
//Short.valueOf((short)2);
//Character
//Character.valueOf('a');
//Float
//Float.valueOf((float) 2.3);
//
int i=10;
Integer in=100;
//当包装类对象和基本类型数据进行操作时,会默认进行自动拆箱
//拆箱成了对应的基本类型数据就可以接着做操作
System.out.println(in+i);
}
}
package cn.tedu.baozhuang;
public class BZDemo3 {
public static void main(String[] args) {
//创建包装类对象
//NumberFormatException---数字格式异常
//转成Integer类型时除了+和-以外其他的非数字字符都不能出现
/*Integer in=new Integer("+123");
//转成Integer类型时除了+和-以及.以外其他的非数字字符都不能出现
Double d=new Double("-1.23");
//底层是忽略大小写比较true
Boolean b=new Boolean("TrUE");
System.out.println(b);*/
//把字符串转成基本类型数据
int i=Integer.parseInt("123");
//
double d=Double.parseDouble("2");
//因为String类提供字符串直接转成字符的方法,包装类不需要了
//Character.parseCharacter()
//NaN---不是一个数(和自己都不想等)
System.out.println(Double.NaN==Double.NaN);
}
}