String类小结

String类

  1. String s1=“abc”;s1里面保存的不是“abc”字符串,s1里面保存的是“abc”字符串对象的内存地址
  2. 字符串的定义
private static void f1() throws UnsupportedEncodingException {
		   String s1="java程序设计";
		   String s2=new String("java程序设计");
		   String s3=new String();//字符串为空
		   System.out.println(s3.length());//0
		   System.out.println(s1.length());//8
		   System.out.println(s1.getBytes().length);//不确定 utf-8一个汉字3个字节,gbk一个汉字2个字节  
		   //utf-8  16 

		   String s4=new String( s1.getBytes()  );//字节数组转换成字符串	   

		   //字符数组--》字符串
		   char [] cArray={'a','b','c','d'};
		   String s5=new String(cArray);
		   String s52=new String(cArray,1,2);//bc

		   System.out.println(s52);
		   //字符串--》字符数组
		   char[]cArray2= s1.toCharArray();

		   //字节数组转换为字符串,可以指定编码 
		   String s6=  new String(s1.getBytes(),"gbk");
		  System.out.println(s6);
	}
  1. subString方法
//subString提取身份证号中的出生日期,判断性别
	private static void f3() {
		String s="123456";//"411301200010230123";
		String s2=s.substring(1, 3);//位置从0开始,获取子串包含开始位置字符,不包含结尾位置字符
		System.out.println(s2);
		
		String s3="411301200010230123";
		System.out.println("出生日期"+s3.substring(6, 14) );
		
		String sex=s3.substring(16,17);
		System.out.println(sex);
		
		//字符串-->数值转换方法
		int sex1=Integer.parseInt(sex);
		int sex2=Integer.valueOf(sex);
		if(sex1%2==0){System.out.println("女生");}
		else System.out.println("男生");
	}

4.将任意类型转换为字符串类型

private static void f1() {
		
		double d=3.14;
		//String s2=d;		
		String s2=String.valueOf(d);
		System.out.println(s2.length());
		
		char[] c={'a','b','c','d'};
		
		String s3=String.valueOf(c);		
		System.out.println(s3);//abcd
		
		String s4=String.valueOf(c, 1, 2);
		System.out.println(s4);//bc	
		
		//2 功能与valueOf类似,实现将字符数组转换为字符串
		char[] c2={'a','b','c','d'};
		String s5=String.copyValueOf(c2);
		System.out.println(s5);
	}

5.String.format 显示正号用%+ ,%d整数 , %f实数 , %c字符, %s字符串 , %x十六进制 , %o八进制, %e指数格式, %g指数格式; //显示正号用%+ ,%-左对齐 默认右对齐

private static void f2() {
		int a=10;
		String s6=String.format("%d%+d%-5d***", a,a,a);
		System.out.println(s6);//10+1010   ***
		double  d2=123.456789;
		String s7=String.format("%f,%e,%g,%9.2f,%+-9.2f", d2,d2,d2,d2,d2);
		System.out.println(s7);//123.456789,1.234568e+02,123.457,   123.46,+123.46   
		
		//%2$  后边的第几个参数
		String s8=String.format("%2$+d,%1$-10d", a,123456);
		System.out.println(s8);//+1234356,10        (8个空格)
		
		
		Date date=new Date();
		String s9=String.format("%tY--%1$tm--%1$td--%1$tH--%1$tM--%1$tS", date);
		System.out.println(s9);//2020--11--03--15--04--48
		
		String s10=String.format("%tF--%1$tT", date);
		System.out.println(s10);//2020-11-03--15:06:40
	}

6.String类的charAt()方法,codePointAt()方法,比较方法,连接concat()、替代replaceAll()、包含contains();endsWith();startsWith();

	public static void main(String[] args) {
		
		String s1="abcdefg";
		
		//1字符串中某个位置对应的字符
		char c=s1.charAt(3);//d
		System.out.println(c);
		//char c2=s1[3];//没有这样的格式
		
		//2对应位置的asc码值
		int i=s1.codePointAt(3);
		System.out.println(i);//d的asc码 100
		
		//3比较,返回值int 0相等     >0当前字符串大     <0当前字符串小    按照字典顺序  
		//compareToIgnoreCase比较的同时忽略大小写。验证码比较一般就可以忽略大小写
		System.out.println(s1.compareTo("abcc"));//>0  1
		System.out.println(s1.compareTo("ABCC"));//>0  32
		System.out.println(s1.compareToIgnoreCase("ABCC"));//>0  1
		
		//相等比较的方法三个		
		if(s1.compareTo("abcdefg")==0)System.out.println("相等");
		if(s1.equals("abcdefg"))System.out.println("相等");		
	    if(s1.contentEquals("abcdefg"))System.out.println("相等");
	    
	    //4 连接,替代,原字符串没有发生改变,可以将结果赋值给另外一个串
	    s1="abcdefg";
	    s1.concat("1234");
	    System.out.println(s1);//abcdefg
	    
	    s1="abcdefg";
	    s1=s1.concat("1234");
	    System.out.println(s1);//abcdefg1234
	    
	    s1="abcdefg";
	    s1.replaceAll("bcd", "123");
	    System.out.println(s1);//不变,abcdefg
	    
	    s1="abcdefgabcdefgabcdefg";
	    s1=s1.replaceAll("bcd", "12");//
	    System.out.println(s1);//a12efga12efga12efg
	    
	    s1="abcdefgabcdefgabcdefg";
	    s1=s1.replaceFirst("bcd", "123");
	    System.out.println(s1);//a123efgabcdefgabcdefg
	    
	  	s1="abcdefgabcdefgabcdefg";
	    s1= s1.replace('a', ',');
	    System.out.println(s1);//,bcdefg,bcdefg,bcdefg
	   
	    //按照规则替代
	    //s1.replaceAll(regex, replacement)
	    s1="i love Java!i love data Structure.";
	    String s2=s1.replaceAll("[,.! ?]", "");//去掉所有的标点
	    System.out.println(s2);//iloveJavailovedataStructure
	    System.out.println(s1.length()-s2.length());		
	  
	 	//5包含
	 	s1="abcdefg";
	    System.out.println(s1.contains("bcd"));//true	
	    System.out.println(s1.endsWith("fg"));//true
	    System.out.println(s1.startsWith("ab"));//true
	  
	    //6将字符串转换为字节数组
	    byte[]bytes=s1.getBytes();
	  
	    //7indexOf找到》=0,没有找到-1  查找字符或者字符串
	    s1="abcdefgabcdefgabcdefg";
	    System.out.println(s1.indexOf('a'));//0
	    System.out.println(s1.indexOf('c'));//2
	    System.out.println(s1.indexOf('x'));//-1
	    System.out.println( s1.lastIndexOf("abc"));//14
	  
	    char[]cc=s1.toCharArray();//字符串转为字符数组
	    s1=s1.toLowerCase();//转为小写字母
	    s1=s1.toUpperCase();//转为大写字母	 
	}

7、String类的getBytes()方法

public static void main(String[] args) throws UnsupportedEncodingException {
        //汉字个数
        String s = "fghshagfhhs程序设计fhasjfj开发发生绝地反击发货8534858fhsdhf,,.";
        String regex1 = "[\u4e00-\u9fa5]";
        //String s1=s.replaceAll(regex1, "");;
        //System.out.println(s1);
        System.out.println("汉字个数:" + (s.length() - s.replaceAll(regex1, "").length()));//汉字个数:14
        System.out.println("汉字个数:" + (s.replaceAll(regex1, "12").length() - s.length()));//汉字个数:14

        //utf-8编码一个汉字3个字节,gbk编码一个汉字2个字节
        System.out.println(s.getBytes().length);//76
        System.out.println(s.length());//48

        //字符转换为字节之后字节最高位是0也就是正数,但是汉字转换为字节编码之后最高位是1也负数
        int count = 0;
        byte[] bytes = s.getBytes();
        for (byte bb : bytes) {
            if (bb > 0) count++;
        }
        //count存储的是字符个数,不含汉字
        System.out.println("汉字个数:" + (s.length() - count));//汉字个数:14

        System.out.println("汉字个数:" + (s.getBytes("GBK").length - s.length()));//汉字个数:14

        System.out.println("汉字个数:" + (s.getBytes("utf-8").length - s.length()) / 2);//汉字个数:14
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,我会尽力回答你的问题。对于字符串工具的测试,我们可以使用JUnit框架中的断言(assertion)来进行测试。JUnit提供了多个断言方法,用于比较变量或表达式的值,从而判断程序是否按预期运行。 在测试字符串工具时,我们可以使用如下的步骤: 1. 编写测试方法,测试字符串工具中的每个方法。 2. 在测试方法中调用字符串工具中的方法,得到预期结果。 3. 使用JUnit的断言方法比较预期结果和实际结果是否相等。 4. 运行测试方法,查看测试结果。 比如,我们可以编写如下的测试方法来测试字符串工具中的`reverse`方法: ``` import org.junit.Test; import static org.junit.Assert.*; public class StringUtilTest { @Test public void testReverse() { String input = "hello"; String expectedOutput = "olleh"; String actualOutput = StringUtil.reverse(input); assertEquals(expectedOutput, actualOutput); } } ``` 其中,`@Test`注解表示该方法是一个测试方法,`assertEquals`断言方法用于比较预期结果和实际结果是否相等。 当我们运行该测试方法时,JUnit会自动执行`StringUtil.reverse`方法,并将其返回值与预期结果进行比较。如果比较结果不相等,则测试失败,JUnit会输出错误信息;如果比较结果相等,则测试通过,JUnit不会输出任何信息。 通过这种方法,我们可以对字符串工具进行全面的测试,并保证其正确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李拜天不上班.

感谢支持,承蒙厚爱!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值