java中字符串(基础)

java中的字符串基础

String类

String 类代表字符串, 所有""字符串都是String 类的对象。

String类的特点:

  • 字符串不可变, 它的值在创建后不可改变。
  • 可以被共享(在常量池中相同的字符串指向同一个地址)
  • 字符串效果上相当于char数组, 实际基于byte 数组实现。

String的创建

/*
	1.通过构造方法创建
	2.直接等号赋值创建
*/
public class StringDemo() {
	public static void main(String[] args) {
		// 通过构造方法创建一个 ""
		String s1 = new String();
		// 通过char数组 构造方法创建 "abc"
		char[] chs = {'a', 'b', 'c'};
		String s2 = new String(chs);
		// 通过 byte数组 构造方法 创建 "abc"
		byte[] bys = {97, 98, 99};
		String s3 = new String(bys);
		// 直接赋值创建
		String s4 = "abc";
	}
}

通过构造方法与直接赋值的区别:

  1. 构造方法创建字符串不管内容如何, 都会在堆中创建新的内存所以地址不相等。
  2. 直接赋值创建字符串, 如果内容是相同的, 会直接将已有的地址赋值给新的变量。
/*
	验证字符串 两种构建方法的区别
*/
public class StringDemo02 {
	public static void main(String[] args) {
		char[] chs = {'a', 'b', 'c'};
		String s1 = new String(chs);
		String s2 = new String(chs);
		System.out.println(s1 == s1); // false
		String s3 = "abc";
		String s4 = "abc";
		System.out.println(s3 == s4); // true
	}
}

String 的一些操作

内容相等判断:

因为字符串都是对象,栈内存中保存的是地址,所以不能直接使用== 号判断字符串的内容是否相等。
public boolean equals(String s) 方法是String类的成员方法, 作用是判断字符串的内容是否相等。

/*
用户登录案列:
账号: admin  密码: 123
通过Scanner 接收用户输入的字符串, 判断是否登录成功, 3次机会
*/
import java.util.Scanner;
public class LoginDemo {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String username = "admin";
		String password = "123";
		for (int i = 0; i < 3; i++) {
			System.out.println("请输入用户名");
			String temp_username = sc.nextLine();
			System.out.println("请输入密码");
			String temp_password = sc.nextLine();
			if (username.equals(temp_username) && password.equals(temp_pssword)) {
				System.out.println("登录成功");
				break;
			} else {
				if (2 - i == 0) {
					// 没有机会了
					System.out.println("你的账号被锁定,请联系管理员");
				} else {
					System.out.println("登录失败你还剩" + (2 - i) + "次机会");
				}
			}
		}
	}
}
字符串遍历

完成一个方法, 作用是逐个打印出传入字符串中的字符。

/*
String类的两个方法
	public char charAt(int index); 根据索引返回对应字符
	public int length(); //获取字符串的长度
*/
public class StringTest01 {
	public static void main(String[] args) {
		String s1 = "qwer";
		printCharByString(s1);
	}
	/*
		返回值, 无
		参数: String
	*/
	public static void printCharByString(String str) {
		for (int i = 0; i < str.length(); i++) {
			System.out.println(str.charAt(i));
		}
	}
}
字符串拼接

完成一个方法, 作用是将数组拼成一个字符串打印

public class StringTest02 {
	public static void main(String[] args) {
		int[] arr = {1, 2, 3,};
		String arrStr = getStringByArray(arr);
	} 
	/*
	 返回值: String
	 参数: int[]
	*/
	public static String getStringByArray(int[] arr) {
		String str = "[";
		for(int i = 0; i < arr.length; i++) {
			if (i == arr.length - 1) {
				str += i;
			} else {
				str += i + ", ";
			}
		}
		str += "]";
	}
}

StringBuilder

因为String不可改变, 频繁字符串拼接会创建多个String对象,造成内存浪费。
StringBuilder可以构建可以改变的字符串。通过构造方法 StringBuilder() , 接受一个String来穿创建StringBuilder。
常用方法:

  • public StringBuilder append(any) 接受一个任意类型 返回拼接后的StringBuilder
  • public StringBuilder reverse() 将Stringbuilder反转
  • public String toString() 将StringBuilder转为String
/*
	字符数组 StringBuilder版
*/
public class StringBuilderTest01 {
	public static void main(String[] args) {
		int arr = {1, 2, 3};
		String arrStr = getStringByArray(arr);
	}
	/*
	返回值: String
	参数: int[]
	*/
	public static String getStringByArray(int[] arr) {
		// 创建一个空串 ""
		StringBuilder sb = new StringBuilder();
		sb.append("[");
		for(int i = 0; i < arr.length; i++) {
			if (i == arr.length - 1) {
				sb.append(arr[i]);
			} else {
			// 链式编程法
				sb.append(arr[i]).append(", ");
			}
		}
		return sb.append("]").toString();
	}
}
// 完成方法将传入的字符串反转
public class StringBuilderTest02 {
	public static void main(String[] args) {

	}
	public static String reverseStr(String str) {
	// 使用链式编程一句话搞定
		return new StringBuilder(str).reverse().toString();
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值