String类概述和方法

字符串类型概述

又爱又恨!!!
	爱:
		字符串基本上就是数据的保存,传输,处理非常重要的一种手段。
	恨:
		解析过程非常烦人,需要掌握熟记很多方法,同时需要有一定的技巧和灵性

	String字符串类型是Java中引用数据类型,并且String类型是使用final修饰,没有自己的子类。

字符串的存储也是非常个性的一件事情,分两种情况,
	一种是在内存的数据区
	一种是在内存的堆区

字符串是一个常量!!!
	字符串确定之后无法修改!!!

字符串内存分析和equals方法

package com.qfedu.b_string;

/*
 * 字符串常量分析
 */
public class Demo1 {
	public static void main(String[] args) {
		String str1 = "烤羊排";
		String str2 = "烤羊排";
		String str3 = new String("烤羊排");
		String str4 = new String(str1);
		
		/*
		 * tfff
		 * == 等于判断是比较两个变量中保存的数据是否一致
		 * String str1 str2 str3 str4 都是引用数据类型的变量,也就是==判断比较的是
		 * str1 ~ str4 中保存的空间首地址
		 */
		System.out.println("str1 == str2 : " + (str1 == str2)); // true
		System.out.println("str2 == str3 : " + (str2 == str3)); // false
		System.out.println("str3 == str4 : " + (str3 == str4)); // false
		System.out.println("str4 == str1 : " + (str4 == str1)); // false 
		
		System.out.println("----------------------------------------");
		/*
		 * 字符串如何比较是否一致???
		 * 
		 * Java中规定,字符串比较要求采用equals方法来完成,并且使用的equals方法是String类
		 * 重写Object类内的方法,比较方式是比较字符串内容。
		 */
		System.out.println("str1.equals(str2) : " + str1.equals(str2)); // true
		System.out.println("str2.equals(str3) : " + str2.equals(str3)); // true
		System.out.println("str3.equals(str4) : " + str3.equals(str4)); // true
		System.out.println("str4.equals(str1) : " + str4.equals(str1)); // true
		
	}
}

获取方法

int length();  
	获取字符串的长度
char charAt(int index); 
	从字符串中获取对应下标位置的字符,(存在下标越界问题)
        
int indexOf(char ch); 
	找出指定字符在当前字符串中的下标位置
    "ABCDEFGABCDEFG"
    查询 'E' ==> result 4
        
int indexOf(String str); 
	找出指定字符串在当前字符串中的下标位置
    "ABCDEFGABCDEFG"
    查询 "DE" ==> result 3

int lastIndexOf(char ch); 
	找出指定字符最后一次出现的下标位置
    "ABCDABCD";
	查询 'B' ==> result 5
        
int lastIndexOf(String str); 
	找出指定字符串最后一次出现的下标位置
    "ABCDABCD";
	查询 "CD" ==> result 6

 

package com.qfedu.b_string;

/*
 * 获取方法
 */
public class Demo2 {
	public static void main(String[] args) {
		String str = "ABCDEFGABCDEFG";
		
		// length方法
		System.out.println("str.length() : " + str.length());
		
		// charAt方法
		System.out.println("str.charAt(5) : " + str.charAt(5));
		System.out.println("str.charAt(0) : " + str.charAt(0));
		// StringIndexOutOfBoundsException 字符串下标操作越界异常 字符串长度为14
		// 有效下标为0 ~ 13
		// ArrayIndexOutOfBoundsException 
		// System.out.println("str.charAt(14) : " + str.charAt(14));
		
		// indexOf方法
		System.out.println("str.indexOf(\"CD\") : " + str.indexOf("CD"));
		System.out.println("str.indexOf('C') : " + str.indexOf('C'));
		
		// lastIndexOf方法
		System.out.println("str.lastIndexOf(\"CD\") : " + str.lastIndexOf("CD"));
		System.out.println("str.lastIndexOf('C') : " + str.lastIndexOf('C'));
	
	}
}

判断方法

boolean endsWith(String str);
	判断当前字符串是不是指定字符串结尾,如果是返回true,不是返回false
        
boolean startsWith(String str);
	判断当前字符串是不是指定字符串开始,如果是返回true,不是返回false
        
boolean isEmpty();
	判断当前字符串是否为空,空字符串是指 "" 双引号什么都没有
        
boolean contains(String str) 是否包含指定序列 应用:搜索
    判断该指定字符串是否是当前字符串的子字符串。
    当前字符串:
		"ABCDEFG";
    参数字符串:
		"CDE"; ==> result true;
	参数字符串:
		"CE"; ==> result false
    原码是调用String类的indexOf方法,找出指定字符串的下标位置,indexOf方法下标为大于等于0,返回 true,否则返回 false
            
boolean equals(Object anObject);
	重写 Override Object类内方法,判断两个字符串是否一致。
        
boolean equalsIgnoreCase(String anotherString);
	忽略大小写是否相等,不考虑英文大小写方式比较两个字符串是否一致。    

 

package com.qfedu.b_string;

/*
 * 判断方法
 */
public class Demo3 {
	public static void main(String[] args) {
		String str = "ABCDEFGABCDEFG";
		
		// endsWith方法
		System.out.println("str.endsWith(\"FG\") : " + str.endsWith("FG"));
		System.out.println("str.endsWith(\"FG\") : " + str.endsWith("GF"));
		
		// startsWith方法
		System.out.println("str.startsWith(\"AB\") : " + str.startsWith("AB"));
		System.out.println("str.startsWith(\"BA\") : " + str.startsWith("BA"));
		
		// isEmpty方法
		System.out.println("str.isEmpty() : " + str.isEmpty());
		System.out.println("\"\".isEmpty() : " + "".isEmpty());
		
		// contains方法
		System.out.println("str.contains(\"ABCD\") : " + str.contains("ABCD"));
		System.out.println("str.contains(\"ACBD\") : " + str.contains("ACBD"));
		
		// equalsIgnoreCase方法
		System.out.println("ABCDEFG".equalsIgnoreCase("AbcdEfg"));
	}
}

转换方法

String(char[] value);
	将字符数组转换为字符串
        
String(char[] value, int offset, int count);
	将字符数组转换为字符串,从指定offset位置开始,计数count
        offset是开始位置
        count是截取个数
    例如:
		char[] arr = {'A', 'B', 'C', 'D', 'E'};
	调用方法参数:
		new String(arr, 2, 3); ==> result "CDE"
            
static String valueOf(char[] data);
	同理String(char[] value);
	tips: 底层代码是 return new String(data);
        
static String valueOf(char[] data, int offset, int count);
	同理String(char[] value, int offset, int count);
	tips: 底层代码是 return new String(data, offset, count);

char[] toCharArray();
	将字符串转换为字符数组
    例如:
		"ABCDE";
	返回值:
		{'A', 'B', 'C', 'D', 'E'};
package com.qfedu.b_string;

/*
 * 转换方法
 */
public class Demo4 {
	public static void main(String[] args) {
		char[] arr = {'A', 'B', 'C', 'D', 'E', 'F', 'G'};
		
		String str = new String(arr);
		System.out.println(str);
		
		String str2 = new String(arr, 3, 3);
		System.out.println(str2);
		
		String str3 = String.valueOf(arr);
		System.out.println(str3);
		
		String str4 = String.valueOf(arr, 3, 3);
		System.out.println(str4);
		
		char[] charArray = "你好,这里是骚磊电台".toCharArray();
		for (int i = 0; i < charArray.length; i++) {
			System.out.println(charArray[i]);
		}
	}
}

其他方法

String replace(char oldChar, char newChar); 
	替换使用newChar字符类型,替换当前字符串内的所有指定字符oldChar
    例如:
		"ABCDEABCDE";
	调用方法:
		"ABCDEABCDE".replace('A', '你');
	返回值结果:
		"你BCDE你BCDE"; 【注】原字符串不变
            
String[] split(String regex); 【重点】
	【重点】切割,将当前字符串按照指定字符串切割成String类型数组
    例如:
		String str = "你好!他好!大家好!广州好迪";
	调用方法:
		str.split("!");
	返回值结果:
		String[] arr = {"你好", "他好", "大家好", "广州好迪"};
	调用方法:
		str.split("好");
	返回值结果:
		String[] arr = {"你", "!他", "!大家","!广州", "迪"};

String substring(int beginIndex); 【重点】
	从指定beginIndex开始,到字符串结尾截取字符串
    例如:	
		String str = "ABCDEFG";
	调用方法:
		str.substring(3);
	返回值结果:
		"DEFG"
String substring(int beginIndex, int endIndex); 【重点】
	从指定beginIndex开始,到endIndex结束,截取字符串
    要头不要尾 beginIndex <= 结果范围 < endIndex [3,5)
                                     
    例如:	
		String str = "ABCDEFG";
	调用方法:
		str.substring(3, 5);
	返回值结果:
		"DE"
                                         
String toUpperCase();
	字符串中所有的英文字母转大写,返回新字符串
String toLowerCase(); 
	字符串中所有的英文字母转小写,返回新字符串                               
String trim(); 
	去除字符串两边的空格                               
package com.qfedu.b_string;

import java.util.Arrays;

/*
 * 其他方法
 */
public class Demo5 {
	public static void main(String[] args) {
		String str = "ABCDEFGABCDEFG";
		String replace = str.replace('A', '你');
		
		System.out.println(str);
		System.out.println(replace);
		
		String str1 = "你好,他好,大家好,广州好迪";
		String[] split = str1.split(",");
		// Arrays数据工具类的toString方法,数组中的元素会使用, 分割
		System.out.println(Arrays.toString(split));
		for (int i = 0; i < split.length; i++) {
			System.out.println(split[i]);
		}
		
		String substring = str.substring(5);
		System.out.println(substring);
		
		String substring2 = str.substring(5, 9);
		System.out.println(substring2);
		
		System.out.println("abc,,,d浩爷EFG".toUpperCase());
		System.out.println("AB!!!!C浩爷Defg".toLowerCase());
		
		System.out.println();
		
		String str2 = "                             fdafdsaf         fedadfs                   ";
		System.out.println(str2);
		System.out.println(str2.trim());
	}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值