什么是String类

五、String 类

1. String概述

在这里插入图片描述

  • 字符串是常量,创建之后不可改变。
  • 字符串字面值存储在字符串池中,可以共享。
  • String s = “Hello”; 产生一个对象,字符串池中存储。
  • String s = new String(“Hello”); 产生两个对象,堆、池各存储一个。
package com.zhuo.qf_5;

public class Demo3 {
	public static void main(String[] args) {
		String name="hello";//“hello” 常量存储在字符串中
		name="zhangsan";//“张三”赋值给那么变量,给字符串赋值时,并没有修改数据,而是重新开辟一个空间
		String name2="zhangsan";
		System.out.println(name==name2); //true
		System.out.println(name.equals(name2));	//true
		
		//演示字符串的另一种创建方式,new String();
		String str = new String("java");
		String str2 = new String("java");
		System.out.println(str==str2);	//false
		System.out.println(str.equals(str2));	//true
	}
}

2. 常用方法

  • public int length():返回字符串的长度。
  • public char charAt(int index):返回某个位置的字符。
  • public boolean contains(String str):判断当前字符串中是否包含某个字符串。
package com.zhuo.qf_5;

public class Demo3 {
	public static void main(String[] args) {		
		System.out.println("----------字符串方法的使用1-----------");
		//字符串方法的使用
		//1. length():返回字符串的长度
		//2. charAt(int index):返回某个位置的字符
		//3. contains(String str):判断是否包含某个字符串
		
		String content="java是世界上最好的编程语言";
		System.out.println(content.length()); //15
		System.out.println(content.charAt(0)); //j
		System.out.println(content.charAt(content.length()-1)); //言
		System.out.println(content.contains("java"));	//true
		System.out.println(content.contains("php"));	//false
    }
}
  • public char[ ] toCharArray():将字符串转换成数组。
  • public int indexOf(String str):查找str首次出现的下标索引,存在,则返回该下标;不存在,则返回-1。
  • public int lastIndexOf(String str):查找字符串在当前字符串中最后一次出现的下标索引
package com.zhuo.qf_5;

public class Demo3 {
	public static void main(String[] args) {		
		System.out.println("----------字符串方法的使用2-----------");
		//字符串方法的使用2
		//4. toCharArray():返回字符串中对应的数组
		//5. indexOf():返回字符串首次出现的位置
		//6. lastIndexOf():返回字符串最后一次出现的位置
		String content2="java是世界上最好的java编程语言,java真香";
		System.out.println(Arrays.toString(content2.toCharArray()));
		System.out.println(content2.indexOf("java"));	//0
		System.out.println(content2.indexOf("java", 4));  //11
		System.out.println(content2.lastIndexOf("java"));  //20
    }
}
  • public String trim():去掉字符串前后的空格。
  • public String toUpperCase():将小写转成大写; toLowerCase():把大写转小写。
  • public boolean endsWith(String str):判断字符串是否以str结尾;starsWith(str):判断是否以str开头。
package com.zhuo.qf_5;

public class Demo3 {
	public static void main(String[] args) {			
		System.out.println("----------字符串方法的使用3-----------");
		//字符串方法的使用3
		//7. trim():去掉字符串前后的空格
		//8. toUpperCase():把小写转成大写; toLowerCase():把大写转小写
		//9. endsWith(str):判断是否以str结尾;starsWith(str):判断是否以str开头
		String content3="   Hello  World   ";
		System.out.println(content3.trim()); //Hello  World
		System.out.println(content3.toUpperCase()); //  HELLO  WORLD 
		System.out.println(content3.toLowerCase()); //  hello  world  
		String filename = "hello.java";
		System.out.println(filename.endsWith("java"));  //true
		System.out.println(filename.startsWith("hello")); //true
	}
}
  • public String replace(char oldChar,char newChar):将旧字符串替换成新字符串
  • public String[ ] split(String str):根据str做拆分。
package com.zhuo.qf_5;

public class Demo3 {
        public static void main(String[] args) {	
        System.out.println("----------字符串方法的使用4-----------");
        //字符串方法的使用4
        //10. replace(char old,char new):用新的字符或字符串替换旧的字符或字符串
        //11. split():对字符串进行拆分
        String content4="java是世界上最好的java编程语言,java真香";
        System.out.println(content4.replace("java", "php"));

        String say="java is the best  programing language,java zhuo";
        String[] arr=say.split("[ ,]+"); //空格或,拆分,"+"-->可以是多个
        for(String string:arr) {
            System.out.println(string);
        }
            
    }
}
  • equals():对字符串的内容进行比较;
  • euqalsIgnoreCase():对字符串的内容不区分大小写进行比较;
  • compareTo:比较值是否相同-按字典顺序比较,返回的值是变量1比变量2的字典顺序。
package com.zhuo.qf_5;

public class Demo3 {
        public static void main(String[] args) {	
		//补充两个方法equals , compare():比较大小
        System.out.println("-------------补充--------------");
        String s1="hello";
        String s2="HELLO";
        System.out.println(s1.equals(s2));  //false
        //equalsIgnoreCase()方法:不区分大小写比较
        System.out.println(s1.equalsIgnoreCase(s2));  //true

        String s3="abc";  //97
        String s4="xyz";  //120
        //在字典中的首个不一样的值相减
        System.out.println(s3.compareTo(s4)); // 97-120 = -23

        String s5="abc"; //3个字母
        String s6="abcxyz"; //6个字符
        System.out.println(s5.compareTo(s6)); //3-6 = -3
        }
}

3. String案例演示

  • 需求

    • 已知String str = “this is a text”;
    1. 将str中的单词单独获取出来
    2. 将str中的text替换为practice
    3. 在text前面插入一个easy
    4. 将每个单词的首字母改为大写
package com.zhuo.qf_5;

public class Demo4 {
	public static void main(String[] args) {
		String str = "this is a text";
		//1. 将str中的单词单独获取出来
		String[] arr = str.split(" ");
		System.out.println("-------1. 将str中的单词单独获取出来--------");
		for (String s : arr) {
			System.out.println(s);
		}
		//2. 将str中的text替换为practice
		System.out.println("-------2. 将str中的text替换为practice--------");
		String str2=str.replace("text", "practice");
		System.out.println(str2);
		//3. 在text前面插入一个easy
		System.out.println("-------3. 在text前面插入一个easy--------");
		String str3=str.replace("text", "easy text");
		System.out.println(str3);
		//4. 将每个单词的首字母改为大写
		System.out.println("-------4. 将每个单词的首字母改为大写--------");
		for(int i=0;i<arr.length;i++) {
			char first = arr[i].charAt(0);
			//把第一个字符转成大写
			char upperfirst = Character.toUpperCase(first);
			
			String str4 = upperfirst+arr[i].substring(1);
			System.out.println(str4);
		}
	}
}

4.可变字符串

  • StringBuffer:可变长字符串,JDK1.0提供,运行效率慢、线程安全。
  • StringBuilder:可变长字符串,JDK1.5提供,运行效率快、线程不安全
package com.zhuo.qf_5;
/**
 * StringBuffer和StringBuilder的使用
 * 和String区别:(1)效率比String高 (2)比String节省内存
 * @author _秋刀鱼
 *
 */
public class Demo5 {
	public static void main(String[] args) {
		//StringBuffer 和 StringBuilder 效果一样
		//StringBuffer sb=new StringBuffer();
		StringBuilder sb=new StringBuilder();
		//1 append();追加
		sb.append("java世界第一");
		System.out.println(sb.toString());//java世界第一
		sb.append("Java真香");
		System.out.println(sb.toString());//java世界第一Java真香
		sb.append("java不错");
		System.out.println(sb.toString());//java世界第一Java真香java不错
		//2 insert();添加
		sb.insert(0, "我是天下第一");
		System.out.println(sb.toString());//我是天下第一java世界第一Java真香java不错
		//3 replace(); 替换
		sb.replace(0, 6, "hello,");  //注意:包头不包尾 [0,6)
		System.out.println(sb.toString());//hello,java世界第一Java真香java不错
		//4 delete();删除
		sb.delete(0, 6);
		System.out.println(sb.toString());//java世界第一Java真香java不错
		//清空
		sb.delete(0, sb.length());
		System.out.println(sb.toString());
		System.out.println(sb.length());//0
	}
}
  • StringBuffer 和 StringBuilder 的使用

    和 String 区别 :(1)效率比 String 高 ;(2)比 String 节省内存

package com.zhuo.qf_5;

import javax.xml.stream.events.StartDocument;
/**
 * 验证StringBuilder效率高于String
 * @author _秋刀鱼
 *
 */
public class Demo6 {
	public static void main(String[] args) {
		//开始时间
		long start=System.currentTimeMillis();
//		String string = "";
//		for(int i=0;i<99999;i++) {
//			string+=i;
//		}
//		long end=System.currentTimeMillis();
//		System.out.println("用时:"+(end-start)); //用时:10407
		
		StringBuilder sb=new StringBuilder();
		for(int i=0;i<99999;i++) {
			sb.append(i);
		}
		System.out.println(sb.toString());
		long end=System.currentTimeMillis();
		System.out.println("用时:"+(end-start)); //用时:396
		
	}
}

忽有故人心上过,
回首山河已是秋。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

xjz_2002

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值