Java String类 笔记

1.什么是字符串?

在java中,字符串属于对象,java创建了String类来创建和操作字符串

2.字符串的内容一旦建立,该字符串所在堆上的内容就无法被改变

the following code can’t change the contents of the string

String str =“Java”;
str = “HTML”;

3.如果需要对字符串做很多修改,那么应该选择使用 StringBuffer & StringBuilder 类。

4.使用字符串的处理函数完成对字符串的各种基本操作

public class Test {
	public static void main(String[] args) {
		// String Compare
		String s1 = new String("abc");
		String s2 = new String("abc");
	
		if (s1==s2) 
			System.out.println("s1==s2");
		else 
			System.out.println("s1!=s2");
		
		if (s1.equals(s2)) 
			System.out.println("s1 equals to s2");
		else 
			System.out.println("s1 not equals to s2");
		
		String str1 = "Welcome to Java";
		boolean flag1 = str1.startsWith("Welcome");
		boolean flag2 = str1.endsWith("java");
		
		System.out.println("flag1=" + flag1);
		System.out.println("flag2=" + flag2);
		
		// String Connect
		String str2 = "abc";
		String str3 = "abe";
		String str4 = str2 + str3;
		String str5 = str2.concat(str3);
		System.out.println("str4=" + str4);
		System.out.println("str5=" + str5);
		
		// String Transform
		String str6 = "Welcome".toLowerCase();
		String str7 = "Welcome".toUpperCase();
		String str8 = "Welcome".replaceAll("e","A");
		
		System.out.println("str6=" + str6);
		System.out.println("str7=" + str7);
		System.out.println("str8=" + str8);
		// String Find
		String str9 = new String("I like Java");
		int i1 = str9.indexOf("like");//第一次出现like的位置
		int i2 = str9.lastIndexOf("a");
		String str10 = str9.substring(2, 5);
		
		System.out.println("i1=" + i1);
		System.out.println("i2=" + i2);
		System.out.println("str10=" + str10);
		
		char c = str9.charAt(2);//找到索引处的字符
		char[] chrs = str9.toCharArray();//将字符串转化为字符数组
		
		int length = str9.length();
	}
}

==比较的是变量在栈中的值是否相同。对于基础数据类型,可以比较其值是否相等。对于引用类型,栈里的值就是一个地址,因此比较的是地址是否相同,而不是堆上的具体内容是否相同。
equals比较的是两个字符串引用类型的变量指向的堆中的内容是否相同。

5.从控制台输入一个字符串,判断其是不是回文字符串(即翻转前和翻转后是否相同)

import java.util.Scanner;
public class StringBufferDemo {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		System.out.println("Please input the string: ");
		String oldStr = scanner.nextLine();
		
		StringBuffer oldBuffer = new StringBuffer(oldStr);
		StringBuffer newBuffer = oldBuffer.reverse();
		
		String newStr = new String(newBuffer);
		
		if (oldStr.equals(newStr)) 
			System.out.println(oldStr + "是回文字符串");
		else 
			System.out.println(oldStr + "不是回文字符串");
	}
}

6.应用字符串处理函数提取具有特征的字串

方法一:
public class StringDemo1 {

	public static void main(String[] args) {
		String message = "My email is dqpilzg@163.com!You can mail to me.";
		String email;
		
		int locationA = 0;
		int locationFirstFlagForA = 0;
		int locationSecondFlagForA = 0;
		
		
		for(int i=0; i<message.length();i++){
			if (message.charAt(i) == '@') {
				locationA = i;
				System.out.println(locationA);
				break;
			}
		}
		

		for(int i=locationA; i>=0; i--){
			if (message.charAt(i) == ' ') {
				locationFirstFlagForA = i;
				System.out.println(locationFirstFlagForA);
				break;
			}
		}
		
		for (int i = locationFirstFlagForA+1; i < message.length(); i++) {
			if (message.charAt(i) == '!') {
				locationSecondFlagForA = i;
				System.out.println(locationSecondFlagForA);
				break;
			}
		}
		email = message.substring(locationFirstFlagForA+1,locationSecondFlagForA);
		System.out.println(email);
	
	}
}


方法二:
public class StringDemo2 {
	public static void main(String args[]){
		String message = "My email is dqpilzg@163.com!You can mail to me.";
		String email;
		
		int locationFirstFlagForA = 0;
		int locationSecondFlagForA = 0;
		
		locationSecondFlagForA = message.indexOf('!');
		String message2 = message.substring(0, locationSecondFlagForA);
		locationFirstFlagForA = message2.lastIndexOf(' ');
		email = message2.substring(locationFirstFlagForA+1);
		System.out.println(email);
	}
}

6.关于截取字串,与判断是否有子串的方法

indexOf(String s),如果包含,返回的值是该子字符串在包含其的父类字符串中起始位置;如果不包含返回值为-1

java.lang.String.contains()

包含char值序列时返回true,没有返回false

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值