API-String类

本文详细介绍了Java中的String类,包括其不可变性、常用方法如length()、split()、replace()、compareTo()等,以及字符串与字符数组、字节数组之间的转换。此外,还展示了字符串的比较、查找、拼接和大小写转换等操作,以及在实际场景中的应用,如邮箱格式验证和账号注册登录流程。
摘要由CSDN通过智能技术生成
  • 了解String类:

1.String类是处于lang包,无需导包

2.String类父类是Object,同时String也是一个常量类,不能被继承

3.String它是一种引用类型(所有的类都是引用类型,而且类的首字母都是大写的)

 4.String可以用来定义字符串,其本质就是一个字符数组

 5.String一旦定义长度不可更改,一旦更改,字符串存储的内存地址就会发生改变。
        String str = "章"; str+="游";--"章游"(这里会出现2个不同的内存地址)

6.String定义字符串的,那么定义方式有哪些?
        ①直接定义 String str = "xxx";

 String name1 = "阳文广芜湖1111111111111111111";


        ②可以通过String类的构造函数来定义字符串

String name2 = new String("阳文广");
  •  String类常用方法

1.获取字符串的长度 length()

System.out.println(name1.length());

2.字符串和字符串数组互相转换方法

字符数组转换字符串:

①字符串转字符数组
方法一:String str = new String(char[] chs);//通过构造方法转换
例子:char[]chs = {'我','爱','你',};
    String str = new String(chs);
    syso(str); 
//结果为:我爱你


方法二:String.valueOf(char chs);//调用方法转换
例子:将int转成String
		System.out.println(String.valueOf(123));
		String str = "123";
		System.out.println(Integer.valueOf("123"));
  //  	Integer.parseInt();
//结果为:123  123


②字符数组转字符串
String[] strArr = str.split(",");//如果str字符串存在分割符可使用此方法
str.toCharArray();//调用方法转换
例子:String str = "唐烨";
  char[]cahrArray = str.toCharArray();
  for(char c : charArray){
    syso(c);
}
③new String(字节数组|字符数组)
    toCharArray 转字符数组
    getBytes 转字节数组

  3 字符串和字节数组互相转换方法

①字符串转换字节数组--str.getBytes();

String str4 = "hello";
byte[]b = str.getBytes();
for(int i = 0;i,b.length;i++){
syso((char)b[i]);
}

②字节数组转换字符串--String str = new String(byte[] bys);

byte[]b={67,98,99,100};
String str = new String(byte);
syso(str);

	  

4.字符串中字符的大小写转换
    ①toLowerCase();返回将当前字符串中所有字符转换成小写后的新串。
    ②toUpperCase();返回将当前字符串中所有字符转换成大写后的新串。

String str = "alhfkSJDFjsahf";
System.out.println(str.toLowerCase());
System.out.println(str.toUpperCase());

5.字符串拼接
    concat(String str)//将参数中的字符串str连接到当前字符串的后面,效果等价于"+"

String s1 = "yangwenguang";
String s2 = "guihua";
System.out.println(s1+s2);
System.out.println(s1.concat(s2));

6.去除前后空格
    trim();截去字符串两端的空格,但对于中间的空格不处理


作比较得出结果:
System.out.println("  akashd   ".length());
System.out.println("  akashd   ".trim().length());

7.截取子串
   ① substring(int beginIndex)//该方法从beginIndex位置起,从当前之后的字符串中取出剩余的字符作为一个新的字符串返回。
   ②substring(int beginIndex, int endIndex)//该方法从beginIndex位置起,从当前字符串中取出到endIndex-1位置的字符作为一个新的字符串返回。

截取  substring         
String str = "alhfkjsahf";
//截取hfk  
System.out.println(str.substring(2, 5));

8.字符串中字符的替换
     replace(char oldChar, char newChar)//用字符newChar替换当前字符串中所有的oldChar字符,并返回一个新的字符串。

	替换  replace        
String str = "helhloh";
System.out.println(str.replace("h", "a"));
结果为:aelaloa
注意:所有的“h”都被“a”替代了

9.字符串分割
     split(String str)//将str作为分隔符进行字符串分解,分解后的字字符串在字符串数组中返回。

split   分割(提供一个目标字符串,按照特定的规则将该字符串分割成一个字符串数组)  ?

方法一:String names2 = "a,b,c,d,e";
String[] split = names2.split(",");
for (String string : split) {
			System.out.println(string);
		}

方法二:String names2 = "a,b,c,d,e";
		String[] split = names2.split(",");
			for (int i = 0; i < split.length-1; i++) {
				for (int j = 0; j < split.length-i-1; j++) {
					if(split[j].compareTo(split[j+1])>0) {
						String a = split[j+1];
						split[j+1] = split[j];
						split[j] = a;
					}
					}
				}for(int i = 0;i<split.length;i++) {
					System.out.print(split[i]);
				}

结果为:abcde

10.字符串比较
    ①compareTo(String anotherString)//该方法是对字符串内容按字典顺序进行大小比较,通过返回的整数值指明当前字符串与参数字符串的大小关系。若当前对象比参数大则返回正整数,反之返回负整数,相等返回0。(类似比较考试成绩一样,假如总分相同就比较语文成绩,谁语文成绩高,谁就在前面,如果语文成绩也一样,那么就比较数学成绩,如果还是一样,就一直比下去,直到位置。。。如果都一样那就=0)

// compareTo 比较(比较字符串的大小)     ?
		// 每个字符串的首字母开始比较 使用每个字符的ASCII值比较
		// 相同就往后比
String str1 = "aa";// 97
String str2 = "ab";// 98
// 如果第一个字符串大于第二个字符串 返回正数(两者之差)
// 反之 返回负数(两者之差)
// 如果相等 返回0
System.out.println(str1.compareTo(str2));
结果为:-1


//比较:邓言康  邓诗龙的大小
String name1 = "邓言康";
String name2 = "邓诗龙";
System.out.println(name1.compareTo(name2));
结果为:-471


    ②compareToIgnore(String anotherString)//与compareTo方法相似,但忽略大小写。

	    String str1 = "aa";// 97
		String str2 = "Ab";// 98
		// 如果第一个字符串大于第二个字符串 返回正数(两者之差)
		// 反之 返回负数(两者之差)
		// 如果相等 返回0
		System.out.println(str1.compareToIgnoreCase(str2));
        //结果为:-1
        //因为A与a不区分大小写,所以之间比a和b


    ③equals(Object anotherObject)//比较当前字符串和参数字符串,在两个字符串相等的时候返回true,否则返回false。(就是用来判断两个字符串是非相同)

	boolean flag = false;
			for(int i = 0;i<persons.length;i++) {
				//(1)获取所有非空的位置
				if(persons[i]!=null) {
					//(2)判断参数p与非空位置的person对象一一对比
					if(p.equals(persons[i])) {
						flag = true;
						System.out.println("数组种已存在添加的对象,不能再次添加");
						break;
					}
				}
			}


    ④equalsIgnoreCase(String anotherString)//与equals方法相似,但忽略大小写。

 11. charAt 根据下标查找指定字符
        

String str = "my name is zz";
        System.out.println(str.charAt(3));    
//结果为:n   

11.统计一个字符串中a的出现次数   
      

String str = "abcayya";
        // 字符串其本质就是字符数组
int count= 0;
     for (int i = 0; i < str.length(); i++) {
       if(str.charAt(i) == 'a') {
      count++;
         }
     }
   System.out.println("count = "+count);
//结果为:count=3

12.contains 是否包含  结果只能为true  or false     
 

 String str = "xiewenjianxihuanshuine?";
 System.out.println(str.contains("xiewenjian"));
 //结果为:true

13.endWith()  判断字符串的结尾是否以指定的字符结尾      
 

//        判断一个文件的扩展名是否以.java结尾
String fileName = "helloWorld.java";
 if(fileName.endsWith(".java")) {
      System.out.println("YES");
     }
       
       startsWith
       if(fileName.startsWith("h")) {
            System.out.println("YES");
        }
//结果为:YES   YES

14.验证邮箱格式         
 

//       @ .    
//              123456@qq.com
//              baiduzz@sina.cn        
  String email = "123456@qq.com";
 if(email.indexOf('@')!=-1 &&
               email.indexOf('.')!=-1 &&
               email.indexOf('@') <email.indexOf('.')) {
            System.out.println("OK");
       }
//结果为:OK
//证明“@”为什么在“.”前面

15.oop中如何注册,登录账户

public static void work10() {
Scanner sc=new Scanner (System.in);
String zh="";
String mi="";
while(true) {
	System.out.println("请你进行操作:1.注册账号 ,2.登陆账号");
	int in=sc.nextInt();
	if(in==1) {
	System.out.println("请您输入账号");
	String uu=sc.next();
	System.out.println("请你输入密码:");
	String ii=sc.next();
	System.out.println("请您再次确认密码");
	String mm=sc.next();
	while(true) {
	if(uu.length()>=6&&uu.length()<=12) {
		System.out.println("你的账号非常安全!");
		zh=uu;
		
	}else {
		System.out.println("你的账号存在危险!!");
		zh=uu;
		
	}
	if(ii.equals(mm)&&ii.length()>=6) {
		
		mi=ii;
		System.out.println("账号注册成功");
		
		if(ii.length()>=10) {
		System.out.println("你的密码非常安全");
		break;
		}else {
			System.out.println("你的密码有点不安全");
		break;
		}
		
	}else {
		
		System.out.println("你的密码和上一次的不一样或者秘密长度不够六位数");
		break;
	}
	}
	}else if(in==2) {
		System.out.println("请你输入账号:");
		String ze=sc.next();
		System.out.println("请你输入密码:");
		String zc=sc.next();
		
		if(ze.equals(zh)&&zc.equals(mi)) {
			
			System.out.println("登陆成功!!");
			break;
	
	}else {
		System.out.println("账号或秘密错误!");
	}
	}else {
		break;
	}
}

16.字符串中单个字符查找
   ① indexOf(int ch/String str)//用于查找当前字符串中字符或子串,返回字符或子串在当前字符串中从左边起首次出现的位置,若没有出现则返回-1。

indexOf  求下标(索引)      ?
String str = "唐铨肖鹏伟猴子";
//提供字符在目标字符串中不存在  返回-1
System.out.println(str.indexOf('s'));//-1

String str = "唐铨肖鹏伟猴子";?
//		查找唐铨的下标
System.out.println(str.indexOf("唐铨"));


    ②indexOf(int ch/String str, int fromIndex)//改方法与第一种类似,区别在于该方法从fromIndex位置向后查找。

根据指定的位置查找字符        
String str = "ashfkjsahkja";
//从下标为3的位置处开始查找a出现的位置下标
System.out.println(str.indexOf('a', 3));
结果为:7


   ③ lastIndexOf(int ch/String str)//该方法与第一种类似,区别在于该方法从字符串的末尾

位置向前查找。

获取指定字符串在目标字符串中最后一次出现的位置    --lastIndexOf()  
String str = "ashfkjsahkja";
System.out.println(str.lastIndexOf('a'));
结果为:11


    ④lastIndexOf(int ch/String str, int fromIndex)//该方法与第二种方法类似,区别于该方法从fromIndex位置向前查找。

根据指定的位置查找字符        
String str = "ashfkjsahkja";
//从下标为3的位置处开始查找a出现的位置下标
System.out.println(str.lastIndexOf('a', -3));
结果为:-1
Java String 类型 API 测试代码 1.String和char[]之间的转换 toCharArray(); 2.String和byte[]之间的转换 getBytes() Arrays工具 : Arrays.toString(names) String String replace(char oldChar, char newChar) String replace(CharSequence target, CharSequence replacement) String[] split(String regex) boolean contains(CharSequence s):当且仅当此字符串包含指定的 char 值序列时,返回 true int indexOf(String str):返回指定子字符串在此字符串中第一次出现处的索引 int indexOf(String str, int fromIndex):返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始 int lastIndexOf(String str):返回指定子字符串在此字符串中最右边出现处的索引 int lastIndexOf(String str, int fromIndex):返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索 boolean endsWith(String suffix):测试此字符串是否以指定的后缀结束 boolean startsWith(String prefix):测试此字符串是否以指定的前缀开始 boolean startsWith(String prefix, int toffset):测试此字符串从指定索引开始的子字符串是否以指定前缀开始 int length():返回字符串的长度: return value.length char charAt(int index): 返回某索引处的字符return value[index] boolean isEmpty():判断是否是空字符串:return value.length == 0 String toLowerCase():使用默认语言环境,将 String 中的所有字符转换为小写 String toUpperCase():使用默认语言环境,将 String 中的所有字符转换为大写 String trim():返回字符串的副本,忽略前导空白和尾部空白 boolean equals(Object obj):比较字符串的内容是否相同 boolean equalsIgnoreCase(String anotherString):与equals方法似,忽略大小写 String concat(String str):将指定字符串连接到此字符串的结尾。 等价于用“+” String substring(int beginIndex):返回一个新的字符串,它是此字符串的从beginIndex开始截取到最后的一个子字符串。 String substring(int beginIndex, int endIndex) :返回一个新字符串,它是此字符串从beginIndex开始截取到endIndex(不包含)的一个子字符串。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值