*字符串相关
1.String类
2.所属的包是java.lang包 不用导入
3.找寻构造方法创建对象
String s1="abc";//直接将字符串常量赋值给s1;
String ss=new String();//无参数构造方法创建空的对象;
String s2=new String("abc");//带String参数的构造方法创建对象
· String s2=new String(byte[] value);//将数组中的每一个元素转化成对应的char组合成String
String s2=new String(char[] value);//将数组中的每一个char元素拼接成最终的String
String是一个非常特殊的引用数据类型 可以像基本数据类型一样 创建 赋值
4.String类的特性
String的不可变特性;
体现在两个地方:长度及内容
长度-->final修饰的数组 数组长度本身不变 final修饰数组的地址也不变;
内容-->private修饰的属性 不能在类的外部访问
在String类中包含一个数组;
private final char[] value;//存储String中的每一个字符
final最终的不可改变的-->地址不让改变;数组的长度本身不可变;
private 私有的 当前类中才可访问-->数组中的内容也不能改变;
*5.String类中常用的方法 20+
1.boolean=equals(Object obj);//继承Object类 重写啦 比较两个字符串中的字面值是否相等;
2.int = hashCode();//继承自Object重写啦 31*h+和;
3.int =compareTo(String str);//实现自Compare接口 实现啦 按照字典(unicode编码)索引的顺序比较;
4.String =toString();//继承自Object 重写啦 不再输出@hashCode (16进制的形式);输出字符串中的字面值;
------------------------------------------------------------------------------------------------------------------------
5.char = charAt(int index);//"abc" 0--a
//返回给定index对应位置的那个char值(字符)
6.int = codePointAt(int index);//"abc" 0-97
//返回给定index对应位置的那个char所对应的code码
7.int=length();//返回字符串的长度(个数);(其实就是底层char[] value属性的长度)
注意:区别数组length是属性 String的length()是方法 集合size()方法;
8.String = concat(String);//将给定的字符串拼接在当前字符串之后;
注意:方法执行完毕需要接受返回值 String的不可变特性;
concat方法 与 ‘+’拼接的性能问题;concat方法快些;
若是遇到频繁的拼接字符串-->通常使用StringBuilder、StringBuffer
9.boolean=contains(CharSequence s);//判断给定的s是否在字符串中存在
10.startsWith(String prefix);//判断此字符串是否以prefix开头;
endsWith(string suffix);结尾
11.byte[]=getBytes();
char[]=toCharArray();
将当前的字符串转化成数组
12.int index=indexOf(int/String str [,int fromIndex]);
//四个方法重载,找寻给定的元素在字符串中第一次出现的索引位置;若字符串不存在,则返回-1
lastIndexOf();//找寻给定的元素在字符串中最后一次出现的索引位置 若不存在则返回-1;
13.boolean=isEmpty();
判断当前字符串是否为空字符串(length()是否为0);
注意:与null的区别;
14.replace();
replaceAll();
replaceFirst();
将给定的字符串替换成另外的字符串;
15.split(String regex [,int limit]);
按照给定的表达式将原来的字符串拆分开的
16.String=substring(int beginIndex [,int endIndex]);
将当前的字符串截取一部分;
从beginIndex开始至endIndex结束
若endIndex不写 则默认到字符串最后
17.toUpperCase();
toLowerCase();
将全部字符串转换成大写/小写
18.trim();
去掉字符串前后多余的空格;
===============================================================
Regular有规律的 Expression表达式
正则表达式regex
一个带有一定规律的表达式
匹配字符串格式的
正则表达式通常的作用如下:
1.字符串的格式校验String类中提供的一个方法 matches("regex")
2.字符串的拆分及替换String类中提供的方法replace split
3.字符串的查找Pattern模式 Mather匹配器
| 或者
如下的所有都用来描述字符出现的次数;
? 0-1次
* 0-n次
+ 1-n次
-------------------------------------------------------------------------------------
public class Test0517{
public static void main(String[] args){
String str="我-爱-你-中国我爱你中国";
//str=str.substring(3);//-你-中国我爱你中国
str=str.substring(2,5);//[2,5) 爱-你
System.out.println(str);
}
}
public class Test0517{
public static void main(String[] args){
String str="我爱你中国我爱你中国";
//str=str.replace("中国","china");//我爱你china我爱你china
//str=str.replaceAll("中国","china");//我爱你china我爱你china
str=str.replaceFirst("中国","*");//我爱你*我爱你中国
System.out.println(str);
}
}
public class Test0517{
public static void main(String[] args){
String st="";
boolean v=st.isEmpty();
System.out.println(v);//true
}
}
public class Test0517{
public static void main(String[] args){
String a="abcda";
//int b=a.indexOf("a");//0
//int b=a.indexOf("k");//-1
//int b=a.indexOf("a",3);//从3号索引开始找 //4
//int b=a.indexOf("cd");//2
//int b=a.indexOf(98);//98号code码对应的字符//1
//int b=a.lastIndexOf("a");//4
int b=a.lastIndexOf("bd");//-1
System.out.println(b);
}
}
public class TestString{
public static void main(String[] args){
byte[] a=new byte[]{65,97,48};
String b=new String(a);//unicode 码
System.out.println(b);//Aa0
char[] c={'h','e','l','l'};//必须是单引号,不可以是双引号
String str=new String(c,1,3);//第一个索引开始,取3个值
System.out.println(str);//ell 数字对应的字符;
System.out.println(str.equals(null));//false;
System.out.println(str.hashCode());//一串数字
String ab="abc";
String bc="bcd";
System.out.println(ab.compareTo(bc));
char x=ab.charAt(0);
System.out.println(x);//a
for(int i=0;i
char value=ab.charAt(i);
System.out.print(value+" ");//abc
int v=ab.codePointAt(i);
System.out.print(v+";"); //unicode码 (char)v 字符
}
System.out.println("-----------------");
//ab=ab.concat("jkl");
ab=ab+"jkl";
System.out.println(ab);//abcjkl
/*
String s1="abc";
String s2="abc";
String s3=new String("abc");
String s4=new String("abc");
System.out.println(s1==s2);//true
System.out.println(s1==s3);//false
System.out.println(s3==s4);//false
System.out.println(s1.equals(s2)); //true
//将继承自Object中的equals重写了,equals比较值;
System.out.println(s1.equals(s3));
System.out.println(s3.equals(s4));
*/
}
}
==================================================
public class TestString{
public static void main(String[] args){
String s1="abc";
String s2="abc";
String s3=new String("abc");
String s4=new String("abc");
System.out.println(s1==s2);//true
System.out.println(s1==s3);//false
System.out.println(s3==s4);//false
System.out.println(s1.equals(s2)); //true
//将继承自Object中的equals重写了,equals比较值;
System.out.println(s1.equals(s3));
System.out.println(s3.equals(s4));
}
}