java工具类;String类

*字符串相关

 

 

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<ab.length();i++){
			char value=ab.charAt(i);
			System.out.print(value+" ");//a	b	c
			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));
	}
}

  

  

 

 

posted on 2020-05-16 18:37  星空6  阅读(280)  评论(0编辑  收藏  举报

导航