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();
	}
}
课程目标:学习Java语言字符串相关的知识、字符编码常识和正则表达式的使用,并完成案例前导课程:《Java工程师必学系列课程》前4部课程内容:本课程是《Java工程师必学系列课程》的第5部分,主要讲解Java语言字符串相关知识、字符编码常识和正则表达式的使用。本课程涉及的主要内容可以分为四部分:一、String、StringBuffer和StringBuilder类基本常识、基本原理和使用技巧二、字符编码常识三、Java语言正则表达式的详细语法和使用技巧四、实战案例课程说明:在开发Java程序的过程,最常用的类莫过于字符串相关的类。可以毫不夸张的说,任何一个Java程序,都离不开对字符串保存和处理。很多学员对字符串的理解只是处于比较粗浅的阶段。殊不知,如果对字符串处理的不好,会影响到软件的运行效率。本课程专门讲解字符串相关的知识,将从字符串的存储方式、底层的运行方式等各方面深入讲解其的原理和技巧。此外,对字符串进行更高级的处理,又要用到正则表达式的相关知识。正则表达式广泛应用于各种与字符串处理相关的场合。它是一套独立的语言系统,经过几十年的完善和发展,现在已经非常的强大,并且形成了国际标准。各种高级编程语言,都实现了自己的表达式引擎。本课程详细的讲解了Java语言正则表达式的语法和使用技巧。掌握了正则表达式,对编程水平的提高有非常大的帮助!同时,本课程在最后一部分,安排了非常精彩的、完整的实战案例,通过实战的形式切实帮助学员提高解决具体问题的能力!预期效果:认真学习完本课程,学员可以掌握字符串处理及正则表达式相关的系统知识,并能提高实际的编码水平。环境配置要求:学习本课程需安装JDK1.8或更高版本的JDK,以便程序能正确运行,建议使用IntelliJ IDEA 2019.1.2或更高版本的开发工具。    因有合作协议约束,《穆哥学堂》只提供PDF版本的课件!
©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页