String
概念
String
概念
public final class String
extends Objectimplements Serializable, Comparable<String>, CharSequence
String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。
字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。
因为 String 对象是不可变的,所以可以共享。
特点
字符串不变:字符串的值在创建后不能被更改
因为String对象是不变的,所以它们可以被共享
String的本质:JDK1.8之前是char[]数组;JDK1.8之后是byte[]
构造方法
public String(): 创建了一个空白的字符串
public String(char[] array):根据char数组创建字符串对象
public String(byte[] array):根据byte数组创建字符串对象
public String(char[] value, int offset, int count): 将char数组的一部分转换成字符串对象
public String(byte[] bytes, int offset, int length) :将byte数组的一部分转换成字符串对象
常用方法
字符串比较相关方法
package string.字符串的比较相关方法;
/**
* @Describe
* @Author Double LiFly
* @date 2021/4/16 12:07
*/
public class StringEquals {
public static void main(String[] args) {
/**
* >* public boolean equals (Object anObject) :将此字符串与指定对象进行比较
* >* public boolean equalsIgnoreCase(String anotherString) : 将此字符串与指定对象进行比较,忽略大小写
* >* public boolean endsWith(String suffix): 判断此字符串是否以指定的后缀开始
* >* public boolean startsWith(String prefix): 判断此字符串是否以指定的前缀开始 :
*/
String str = "abc";
String str1 = "abc";
String str2 = "ABC";
//public boolean equals (Object anObject) :将此字符串与指定对象进行比较
System.out.println(str.equals(str1));//true
System.out.println(str.equals(str2));//false
//public boolean equalsIgnoreCase(String anotherString) : 将此字符串与指定对象进行比较,忽略大小写
System.out.println(str.equalsIgnoreCase(str1));//true
System.out.println(str.equalsIgnoreCase(str2));//true
//public boolean endsWith(String suffix): 判断此字符串是否以指定的后缀开始
String fileName = "test.java";
System.out.println(fileName.endsWith("class"));//false
System.out.println(fileName.endsWith("java"));//true
//public boolean startsWith(String prefix): 判断此字符串是否以指定的前缀开始 :
System.out.println(fileName.startsWith("test"));//true
System.out.println(fileName.startsWith("Test"));//false
}
}
字符串获取相关方法
package string.字符串的获取相关方法;
/**
* @Describe
* @Author Double LiFly
* @date 2021/4/16 14:11
*/
public class GetString {
public static void main(String[] args) {
/**
* >* public int length():返回此字符串的长度
* >* public String concat(String str): 将指定的字符串连接到该字符串的末尾。
* >* public char charAt(int index): 返回指定索引处的char值。
* >* public int indexOf(String str):返回指定子字符串第一次出现在该字符串内的索引。
*/
//public int length():返回此字符串的长度
String str = "sadhasfdhasfhasfhuiahfaffasjkf123";
System.out.println(str.length());
//public String concat(String str): 将指定的字符串连接到该字符串的末尾。
String str1 = "hello";
String str2 = "world";
System.out.println(str1.concat(str2));
System.out.println(str1+str2);
//public char charAt(int index): 返回指定索引处的char值。
System.out.println(str1.charAt(2));
//public int indexOf(String str):返回指定子字符串第一次出现在该字符串内的索引。
String chs = "abcdabcdabcdabcdabcd";
System.out.println(chs.indexOf('a'));
System.out.println(chs.indexOf("abcd"));
System.out.println(chs.indexOf("abcde"));
}
}
字符串转换相关方法
package string.字符串的转换相关方法;
import java.io.UnsupportedEncodingException;
import java.util.Arrays;
/**
* @Describe
* @Author Double LiFly
* @date 2021/4/16 14:25
*/
public class ChangeString {
public static void main(String[] args) throws UnsupportedEncodingException {
/**
* >* public char[] toCharArray() : 将此字符串转换为新的字符数组。
* >* public byte[] getBytes() : 使用平台的默认字符集将该String编码转换为新的字节数组。
* >* public String replace(char oldChar, char newChar) : 将oldChar匹配的字符串使用newChar字符串替换。
* >* public String replaceFirst(String regex,String replacement) : 用给定的 replacement 替换此字符串匹配给定的regex的第一个子字符串。
* >* public String toUpperCase() : 将字符中转换为大写
* >* public String toLowerCase(): 将字符中转换为小写
*/
// public char[] toCharArray() : 将此字符串转换为新的字符数组。
String str = "abcdefghijklmnopqrstuvwxyz";
char[] chars = str.toCharArray();
System.out.println(chars);
System.out.println(Arrays.toString(chars));
//public byte[] getBytes() : 使用平台的默认字符集将该String编码转换为新的字节数组。
String str1 = "你好";
byte[] gbks = str1.getBytes("GBK");
System.out.println(Arrays.toString(gbks));
//public String replace(char oldChar, char newChar) : 将oldChar匹配的字符串使用newChar字符串替换。
String str2 = "你大爷的,会不会玩,不会玩滚";
String newStr = str2.replace("大爷", "**");
System.out.println(newStr);
// public String replaceFirst(String regex,String replacement) : 用给定的 replacement 替换此字符串匹配给定的regex的第一个子字符串。
String str3 = "abcabcabc";
String a = str3.replaceFirst("a", "*");
System.out.println(a);
//public String toUpperCase() : 将字符中转换为大写
String s = str3.toUpperCase();
System.out.println(s);
//public String toLowerCase(): 将字符中转换为小写
String s1 = s.toLowerCase();
System.out.println(s1);
}
}
分割和去空格相关方法
package string.分割和去空格的功能方法; import java.util.Arrays; /** * @Describe * @Author Double LiFly * @date 2021/4/16 14:59 */ public class SubString { public static void main(String[] args) { /** * >* public String[] split(String regex):将此字符串按照给定的regex(规则)拆分为字符串数组。 * >* public String trim():去除该字符串的两端空格 */ //public String[] split(String regex):将此字符串按照给定的regex(规则)拆分为字符串数组。 String str = "Hello world"; String substring = str.substring(0, 5); System.out.println(substring); String substring1 = str.substring(6); System.out.println(substring1); //public String trim():去除该字符串的两端空格 String str1 = " hello world "; String trim = str1.trim(); System.out.println(trim); //public String[] split(String regex):将此字符串按照给定的regex(规则)拆分为字符串数组。 String string = "a,b,c,d"; String[] split = string.split("\\+"); System.out.println(Arrays.toString(split)); String[] s = string.split("_"); System.out.println(Arrays.toString(s)); String strs = "a.b.c.d"; String[] split1 = strs.split(","); System.out.println(Arrays.toString(split1)); String[] split2 = strs.split("\\."); System.out.println(Arrays.toString(split2)); } }
字符串截取相关方法
package string.字符串的截取方法;
/**
* @Describe
* @Author Double LiFly
* @date 2021/4/16 14:19
*/
public class SubString {
public static void main(String[] args) {
/**
* >* public String substring(int index): 返回一个子字符串,从beginIndex开始截取字符串到字符串结尾。
* >* public String substring(int beginIndex, int endIndex): 返回一个子字符串,从 beginIndex 到endIndex截取字符串。
* 含beginIndex,不含endIndex。
*/
String str = "abc abc edg rng we";
System.out.println(str.substring(5));
System.out.println(str.substring(4,8));
}
}
指定字符串拼接小练习(一)
package string.按指定格式拼接字符串;
/**
* @Describe
* @Author Double LiFly
* @date 2021/4/16 15:12
*/
public class Test {
public static void main(String[] args) {
/**
* >* 定义一个方法,把数组{1,2,3}按照指定格式拼接成一个字符串。格式参照如下:
* * [word1#word2#word3]
*/
int[]arr = {1,2,3};
// String arrayToString = getArrayToString(arr);
// System.out.println(arrayToString);
String arrayToString = getArrayToString(arr);
System.out.println(arrayToString);
}
/*public static String getArrayToString(int[]arr){
String str = "[";
for (int i = 0; i < arr.length; i++) {
if (i == arr.length-1){
str += arr[i];
}else {
str += arr[i]+",";
}
}
str += "]";
return str;
}*/
public static String getArrayToString(int[]arr){
String str = "[";
for (int i = 0; i < arr.length; i++) {
if (i == arr.length-1){
str += arr[i];
}else {
str += arr[i]+"#";
}
}
str += "]";
return str;
}
}
统计字符个数小练习(二)
package string.按指定格式拼接字符串;
import java.util.Scanner;
/**
* @Describe
* @Author Double LiFly
* @date 2021/4/16 15:30
*/
public class Test1 {
public static void main(String[] args) {
/**
* 练习:统计输入的字符串中各种字符的个数
* 需求: 键盘输入一个字符串,并且统计其中各种字符出现的次数。
* 种类有:大写字母、小写字母、数字、其他
*
* 解题步骤
* 1.创建四个变量
* 大写字母: upperCount
* 小写字母: lowerCount
* 数字: numberCount
* 其他: otherCount
* 2.创建Scanner对象,键盘录入
* 3.for循环遍历判断输入的字符属于大写字母或小写字母或数字或其他
* 4.输出
*/
Scanner scanner = new Scanner(System.in);
System.out.println("请输入字符串:");
String str = scanner.nextLine();
char[] chars = str.toCharArray();
getNumber(chars);
}
public static void getNumber(char[] chars){
int upperCount = 0;
int lowerCount = 0;
int numberCount = 0;
int otherCount = 0;
for (int i = 0; i < chars.length; i++) {
char ch = chars[i];
if (ch >= 'A' && ch <= 'Z'){
upperCount++;
}else if (ch >= 'a' && ch <= 'z'){
lowerCount++;
}else if (ch >= '0' && ch <= '9'){
numberCount++;
}else {
otherCount++;
}
}
System.out.println("大写字母为:"+upperCount+"个");
System.out.println("小写字母为:"+lowerCount+"个");
System.out.println("数字为:"+numberCount+"个");
System.out.println("其他为:"+otherCount+"个");
}
}