Day

Day,第1张

Day

String是Java.lang.String(字符串类,包含了字符串的值和实现字符串相关 *** 作的一些方法),使用时不需要导包.
 * String是字符串类,是引用类型,底层是char数组,所以String 的特性和数组一致
 *
 * 1.字符串一旦构建,该字符串不能更改
 *
 * 2.为了提高字符串的访问效率,java虚拟机使用了一种缓存技术,可以对字符串 *** 作更加简单方便,更加高效(字符串常量池)
 *
 * 3.字符串会被保存在静态区的常量池中,可以增强复用性
 * 当我们用到一个重复的字符串的时候,会去常量池中进行检索,如果有该字符串,则直接指向,如果没有就创建
 *

public class String_01 {
	public static void main(String[] args) {
		// 创建一个字符串对象,直接指向常量池
		String string = "ab";
		// string 是main方法中的局部变量, = 赋值只是更改了这个变量的值,并没有更改ab这个字符串对象
		string = "cd";

		// 只会创建一个对象 , 就是abc 保存在常量池中
		String s1 = "abc";
		String s2 = "abc";
		// true
		System.out.println(s1 == s2);
		System.out.println(s1.equals(s2));
		
		// 创建了3个对象,堆内存两个,常量池1个
		String s3 = new String("abc");
		String s4 = new String("abc");
		System.out.println(s3 == s4);
		System.out.println(s3.equals(s4));
	}
}

构造方法:创建String对象的几种方法
 * 1.直接创建
 * 2.普通构造
 * 3.字节数组
 * 4.字符数组

public class String_02 {
public static void main(String[]args){
	//直接创建
	String s1="xxx";
	//普通构造
	String s2=new String("xxx");
	//字节数组
	byte[]bytes={97,98,99,100};
	String s3=new String(bytes);
	//abcd
	System.out.println(s3);
	
	//字节数组截取一部分
	//下标0开始,第二个参数  起始下标(包含),第三个参数 是个数
	String s4=new String(bytes,1,3);
	//bc
	System.out.println(s4);
	
	//字符数组
	char[]chars={'q','w','e','r','d','f'};
	String s5=new String(chars);
	System.out.println(s5);
	
	//字符数组   截取一部分
	String s6=new String(chars,2,3);
	System.out.println(s6);
}
}

常用方法
 * 1.什么方法,是成员还是静态
 * 2.方法名 参数,返回值是什么
 * 3.方法功能

public class String_03 {
public static void main(String[]args){
	//1.char charAt(int index):获取字符串中指定下标的字符
String s1="qwer";
char c=s1.charAt(2);
System.out.println(c);

//2.boolean startsWith(String prefix):判断该字符串是否以指定字符串开头
//endsWith:是否以指定字符串结尾
System.out.println("Hello.java".endsWith(".java"));
//false注意空格
System.out.println("Hello.java ".endsWith(".java"));
System.out.println("Hello.java".endsWith("a"));

//3.boolean equals(Object obj):判断字符串是否相等
//boolean equalsgnoreCase(String str):不区分大小写判断相等
System.out.println("aAfXCs".equals("aaFxcs"));
System.out.println("aAfXCs".equalsIgnoreCase("aaFxcs"));

//4.byte[]getBytes():把字符串转换成字节数组
byte[]bytes="abcd".getBytes();
for(byte b:bytes){
	System.out.println(b);
}
	//5.char[]toCharArray():把字符串转换成字符数组
	char[] chars="abcd".toCharArray();
for(char d:chars){
		System.out.println(d);
	}
	//6 int indexOf(String str):获取指定字符串在该字符串中第一次出现的索引,找不到就返回-1
//int lastIndexOf(String str):同上,最后一次出现的索引,
int index = "abfacdefabc".indexOf("fa");
System.out.println(index);
index =  "abfacdefabc".lastIndexOf("fa");
System.out.println(index);

//7.int length():返回字符串长度
System.out.println("xzjhcaskd".length());
//8.String[]split(String regex):分割字符串,支持正则表达式
String[]strs="2008,08,09".split(",");
for(String string:strs){
	System.out.println(string);
}
System.out.println("=============");

//9.String replaceAll(String regex,String replacement):替换字符串中的内容为指定文字,支持正则表达式
//replace:替换字符串中的指定文字,不支持正则表达式
String string="ahsdhqwajsbasda";
//替换为空字符串,就等于把a删掉
String newString=string.replace("a","");
System.out.println(newString);


//10.String substring(int beginIndex,int endIndex):截取字符串,包含开始
//substring(int beginIndex):从指定下标开始(包含),到末尾
String s2="abcde";
//cdef
System.out.println(s2.substring(2));
//cd
System.out.println(s2.substring(2,4));


//11.	String toUpperCase():转换为大写
//12.String toLowerCase():转换为小写
//13.String trim():去除两边空格
System.out.println("                   a            b                     ");
System.out.println("                   a            b                     ".trim());

//多个英文名字,以逗号隔开
String name="job,rols,xiaoming,xiaohong";
//需求:获取每一个姓名,并把该姓名以首字母大写进行储存
//1.以逗号分割,得到封装每个名字的数组
String[]names=name.split(",");
//2.遍历数组,获取每个姓名,截取字符串,转换为大写,再拼接起来
for(int i=0;i 

使用String不推荐进行频繁的字符串拼接 *** 作
 *
 * 因为字符串一旦创建不可改变,只要拼接,就会创建新的字符串对象
 *
 * 浪费空间,效率还低,就等于是使用定长数组频繁做添加 *** 作一样

public class String_04 {
public static void main(String[]args){
	//字符数组
	String[] strs={"a","b","c"};
	String str="";
	//遍历
	for(int i=0;i 
public class String_05 {
	public static void main(String[] args) {
            String s1="ab";
            String a="a";
            String b="b";
            String s2=a+b;
            //false
            System.out.println(s1==s2);
            
            String s3="a"+"b";
            //true
            System.out.println(s3==s1);
            
            String s4=new String("ab");
            //false
            System.out.println(s1==s4);
}
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/3981680.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-10-21
下一篇 2022-10-21

发表评论

登录后才能评论

评论列表(0条)

保存