String类的使用

String类

1、String的概述

(1) String 是Java给提供的一个用来操作字符串的类。它在lang 包下,故使用的时候不需要导包
(2) String 类使用final 来修饰的,故不可被继承
(3) String 字符串创建的对象是不可变且不可以被修改,原因是字符串只提供了构造器来初始化创建字符串,但是没有提供set 方法来修改设置的字符串的值。
(4) 通常使用赋值的形式创建字符串是一个常量存放至字符串常量池中,好处能够快速获取。

2、创建字符串的方式以及字符串的构造器的用法

(1) String(byte[] by); 将字节码表示的字符解码成对应的字符串表示形式;
String st = “abcd为”;
//将字符串转换成字节数组表示形式,即字符串的编码操作
byte[] by = st.getBytes();
System.out.println(Arrays.toString(by));
//将直接数组表示的字符串解码成对应的字符串
String str = new String(by);
System.out.println(str);
(2) String(byte[] bytes, Charset charset); 第一个参数是需要解码的字节数组,第二个参数是解码的方式、如UTF-8 、GBK
byte[] by = {12,34,56,67,-90,-34};
String st = new String(by,“GBK”);
System.out.println(st);
(3) String(byte[] by,int offset,int length); //第一个参数是需要解码的字节数组,第二个是指定字节数组解码的初始索引位置,第三个参数是,解码的长度。
byte[] by = {12,34,56,67,-90,-34};
String st = new String(by,2,3); //包含指定位置的初始索引对应的字符
System.out.println(st);
(4)String(char[] ch); 将指定的字符数组转换成对应 的字符串;
char[] ch = {‘a’,‘2’,‘我’,‘t’};
String st = new String(ch);
System.out.println(st);
(5)String st = “我是字符串!”; 直接定义一个字符串常量,是最常用的创建字符串对象的方式。

3.String 类常用方法

1.charAt(int index) 获取指定索引位置的字符

		String st = "hdsjsjds";
		char ch = st.charAt(3);
		System.out.println(ch); //输出j
		

2、求字符串长度
public int length()//返回该字符串的长度

		 String str = new String("asdfzxc");
		 int strlength = str.length();//strlength = 7

3、单个字符的查找
indexOf(String ch); 获取ch 在该字符串对象中第一次出现的索
lastIndexOf(String ch) 返回ch 在该字符串对象中最后一次出现的索引位置;
4、获取当前字符串长度
length() ; 获取当前字符串对象的长度;
5、提取子字符串
substring(int beginIndex); 获取从指定索引处到字符串末尾截取的字符串的子串;
substring(int beginIndex, int endIndex); 获取从指定索引位置开始到指定索引位置结束的字符串的子串。(包括左边 不包括右边)
6、字符串中字符的大小写转换
1)public String toLowerCase()//返回将当前字符串中所有字符转换成小写后的新串
2)public String toUpperCase()//返回将当前字符串中所有字符转换成大写后的新串
7、对字符串进行分割
String[] split(String str)//将str作为分隔符进行字符串分解,分解后的字字符串在字符串数组中返回。

1 String str = "asd!qwe|zxc#";
2 String[] str1 = str.split("!|#");//str1[0] = "asd";str1[1] = "qwe";str1[2] = "zxc";

8、去除首位空格
String trim()//截去字符串两端的空格,但对于中间的空格不处理。
9、判断是否被包含
contains(String str)//判断参数s是否被包含在字符串中,并返回一个布尔类型的值。

 String str = "student";
 str.contains("stu");//true
str.contains("ok");//false

10、对字符串的比较

(1) contains(CharSequence s) 判断指定的字符串是否包含 s中戈丁的字符串序列;
String st = “hgasjhellosakkjslk”; //创建字符串实例
boolean bo = st.contains(“hello”);
System.out.println(bo); //true
bo = st.contains(“helloworld”);
System.out.println(bo); //false
(2)endsWith(String suffix); 判断字符串是否以指定的字符串结尾;该方法在匹配字符串的是否从后往前匹配。
String st = “hello.jpg”;
boolean bo = st.endsWith(".jpg");
System.out.println(bo);//true
(3)equals(Object anObject); 比较两个字符串是否相等;
String st = “hello”;
String st1 = “hello”;
System.out.println(st.equals(st1)); //true
System.out.println(st == st1); // false
先拼接后写入,最后两个字符串指向同一个位置
String st2 = “hello” + “world”;
String st3 = “helloworld”;
System.out.println(st2.equals(st3)); //true
System.out.println(st2 == st3); // true
String st4 = “world”;
String st5 = st + st4;
System.out.println(st3.equals(st5)); //true
因为在字符串是不可变的,所以在两个字符串对象拼接的时候, 会使用StringBuilder来拼接成新的字符串后再写入到内存中,故地址发生了变化
System.out.println(st3 == st5); // false
//该种创建字符串的方式创建的字符串对象是存放到堆中的。
String st6 = new String(“helloworld”);
//字符串重写了equals 方法
System.out.println(st3.equals(st6)); //true
System.out.println(st3 == st6); // false
String st7 = new String(“demo”);
(4)equalsIgnoreCase(String anotherString) ; 忽略字符的大小写来比较两个字符串是否相等。
String st = “hello”;
String st8 = “HELLO”;
System.out.println(“iGnor” + st8.equalsIgnoreCase(st));
(5)startsWith(String prefix);参看一个字符串是否以指定的字符串开头,从头开始匹配;
String s = “day12.doc”;
boolean bo = s.startsWith(“day”);
System.out.println("startsWith : " + bo);
(6)isEmpty(); 判断字符串的长度是否为0;如果长度为0 返回true

4.对String使用的综合
package com.baidu.day11;
import java.util.Arrays;
import java.util.Scanner;
import org.junit.Test;
	//1.编写程序将 “jdk” 全部变为大写,并输出到屏幕,截取子串”DK” 并输出到屏幕
	public class Work13 {
	@Test
	public void demo1(){		
		String c=new String();
		 c="jdk";
		 //转化为大写
		String a=c.toUpperCase();
		System.out.println(a);
		System.out.println(a.substring(1, 3));
	}
	//2.写一个方法判断一个字符串是否对称
	@Test
	public void demo2(){
		Scanner sc=new Scanner(System.in);
		System.out.println("输入一个字符串");
		String a=sc.next();
		//将字符串放入字符数组之中
		char[]c=a.toCharArray();
		//判断是否对称
		boolean x=true;
		for(int i=0;i<a.length();i++){		
				if(c[i]==c[a.length()-i-1]){
					x=false;
				}else{
					System.out.println("不是对称的");
					break;
				}		
		}
		if(x==false){
		System.out.println("是对称的");
		}
	}
	//3.编写一个程序,将下面的一段文本中的各个单词的字母顺序翻转:
	//“To be or not to be",将变成"oT eb ro ton ot eb"。
	@Test
	public void demo3(){
		String num="To be or not to be";
		//将字符串以空格分割
		String []a=num.split(" ");
		for(int i=0;i<a.length;i++){
			StringBuilder s=new StringBuilder(a[i]);
			System.out.print(s.reverse()+" ");
		}		
	}

	//4.String s=”name=zhangsan age=18 classNo=090728”;
	//将上面的字符串拆分,结果如下:zhangsan 18 090728
	@Test
	public void demo4(){
		String s="name=zhangsan age=18 classNo=090728";
		//以空格分割
		String []a =s.split(" ");	
		for (int i = 0; i < a.length; i++) {
			//找出=的下标
			int in=a[i].indexOf("=");
			System.out.print(a[i].substring(in+1)+" ");
		}
}
	//5.	使用两种方法把这个字符串中的单词首字母转为大写:
	//String str = “hello Java and Android!”
	@Test
	public  void demo5(){
		String s="hello Java and Android!";
		String []a=s.split(" ");
		for(int i=0;i<a.length;i++){
			//将第一个转化为大写,之后的转化为小写
			a[i]=a[i].substring(0, 1).toUpperCase()+a[i].substring(1, a[i].length());
		}
		for (int i = 0; i < a.length; i++) {
			System.out.print(a[i]+"\t");
		}
	}
//	/6、编程. 已知字符串:"this is a test of java". 
//	按要求执行以下操作:
//	(1) 统计该字符串中字母s出现的次数
//	(2) 取出子字符串"test"
//	(3) 用多种方式将本字符串复制到一个字符数组Char[] str中.
//	(4) 将字符串中每个单词的第一个字母变成大写, 输出到控制台。
//	(5) 用两种方式实现该字符串的倒叙输出。(用StringBuffer和for循环方式分别实现)
//	(6) 将本字符串转换成一个字符串数组,要求每个数组元素都是一个有意义的额英文单词,并输出到控制台
	@Test
	public void demo6(){
		String num="this is a test of java";
		//将字符串转换为字符数组
		char [] a=num.toCharArray();
		int x = 0;
		for(int i=0;i<a.length;i++){
			if(a[i]=='s'){
				 x++;			
			}
		}
		System.out.println(x);
		//分割字符串
		String[]b=num.split(" ",num.length());
		for (int i = 0; i < b.length; i++) {
			if(b[i].equals("test")){
			System.out.println(b[i]);
			}
			//将下表为0的大写 加上下标1到字符串最后的小写
			b[i]=b[i].substring(0,1).toUpperCase()+b[i].substring(1,b[i].length());
		}
		for (int i = 0; i < b.length; i++) {
			System.out.print(b[i]+"\t");
		}
		StringBuilder s1=new StringBuilder();
		s1.append(num).reverse();
		System.out.println("\n"+s1);
		
}
	@Test
	public void demo7(){
		System.out.println("请输入一个字符串");
		Scanner sc=new Scanner(System.in);
		String a=sc.next();
		//找到第一个*的下标
		int x=a.indexOf("*");
		//最后一个*的下标
		int x1=a.lastIndexOf("*");
		if(x==0||x1==a.length()-1){
		  a=a.substring(1, a.length()-1);
			System.out.println(a);
			}
		}
	}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
string是C++标准库中的一个,用于处理字符串。它提供了一系列成员函数和操作符,方便我们对字符串进行操作和处理。 要使用string,需要包含头文件<string>。 下面是一些常用的string成员函数和操作符: 1. 构造函数: - string():默认构造函数,创建一个空字符串。 - string(const char* s):通过C风格的字符串创建一个string对象。 - string(const string& str):通过拷贝构造函数创建一个string对象。 2. 赋值操作: - operator=():赋值运算符,用于将一个字符串赋给另一个字符串。 - assign():将指定的字符串赋给当前字符串。 3. 访问和修改字符串内容: - operator[]():通过索引访问字符串中的字符。 - at():通过索引访问字符串中的字符,会进行边界检查。 - c_str():返回一个指向以null结尾的字符数组的指针。 - data():返回一个指向字符数组的指针。 - size() / length():返回字符串的长度。 - empty():判断字符串是否为空。 - clear():清空字符串内容。 4. 字符串连接和拼接: - operator+():将两个字符串进行连接。 - append():在当前字符串末尾添加指定字符串。 - insert():在指定位置插入指定字符串。 5. 字符串比较: - operator==() / operator!=():判断两个字符串是否相等。 - operator< / operator> / operator<= / operator>=:进行字符串的字典序比较。 6. 子字符串操作: - substr():返回从指定位置开始的指定长度的子字符串。 - find():在字符串中查找指定子字符串的第一个出现位置。 以上仅是string的部分常用成员函数和操作符,还有更多功能可以参考C++标准库的文档或教程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值