String
Posted tyrion4396
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了String相关的知识,希望对你有一定的参考价值。
String概述
String类的特点
-
字符串不可改变、它的值在创建后不可更改
-
虽然值不可改变、但是值可以被共享使用
String类常见构造方法
public String() // 创建一个空白字符串对象,不含任何内容
public String(char[] chs) // 根据字符数组的内容,来创建字符串对象
public String(String original) // 根据传入的字符串内容,来创建字符串对象
public s = "abc" // 直接赋值的方式创建字符串对象,内容就是abc
String类构造方法创建字符串对象的特点
构造方法每创建一次对象,都会在堆内存中开辟不同的对象空间,所以每new一次,都是不同的对象
直接定义字符串变量的方式特点
直接定义的字符串内容会存储到堆内存中的常量池里,字符串内容如果相同,则直接共享使用
字符串的比较
==号的功能
==号如果比较的是基本数据类型,比较的是具体的值
==号如果比较的是引用数据类型,比较的是对象的地址值
字符串内容比较
equals(String s) : 比较字符串内容是否相同,严格区分大小写
equalsIgnoreCase(String s) : 比较字符串内容是否相同,忽略大小写
用户登录案例
public static void main(String[] args) {
String useName = "亚索";
String password = "eqeqeqfr";
for (int i = 1; i <= 3 ; i++) { // 设置3次机会
Scanner sc = new Scanner(System.in);
System.out.println("请输入您的用户名");
String scUseName = sc.nextLine();
System.out.println("请输入您的密码");
String scPassword = sc.nextLine();
if (scUseName.equals(useName) && scPassword.equals(password)) {
System.out.println("登录成功"); // equals 比较字符串是否相同
break; // 登录成功后停止循环
} else {
if (i==3) {
System.out.println("您的机会已用完,请明天再试");
} else {
System.out.println("登录失败,你还剩下"+(3-i)+"次机会");
}
}
}
}
字符串的遍历
第一种方法
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入");
String sChar = sc.nextLine();
char[] chars = sChar.toCharArray();
for (int i = 0; i < sChar.length(); i++) {
System.out.println(chars[i]);
}
}
第二种方法
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入");
String sChar = sc.nextLine();
for (int i = 0; i < sChar.length(); i++) {
char ch = sChar.charAt(i);
System.out.println(ch);
}
}
}
统计字符的个数
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入");
String s = sc.nextLine();
int bigCount = 0; // 定义三个计数器
int smallCount = 0;
int numCount = 0;
char[] chars = s.toCharArray();
for (int i = 0; i < chars.length; i++) { // 遍历字符串
char c = chars[i];
if (c >= ‘A‘ && c <= ‘Z‘) {
bigCount++;
}else if(c >= ‘a‘ && c <= ‘z‘){
smallCount++;
}else{
numCount++;
}
}
System.out.println("大写字母的个数为:"+bigCount);
System.out.println("小写字母的个数为:"+smallCount);
System.out.println("数字字母的个数为:"+numCount);
}
字符串截取(手机号屏蔽)
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入手机号:");
String tel = sc.nextLine();
String start = tel.substring(0, 3);//截取字符串前三位
String end = tel.substring(7);//截取字符串最后四位
System.out.println(start + "****" + end);
}
字符串替换(敏感词替换)
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入");
String s = sc.nextLine();
String result = s.replace("TMD", "***");
System.out.println(result);
}
字符串切割
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入学生信息:"); // 张三 23
String stu = sc.nextLine();
String[] sArr = stu.split(",");
System.out.println(sArr[0]);
System.out.println(sArr[1]);
}
String方法小结
public boolean equals(Object anObject) // 比较字符串的内容,严格区分大小写
public boolean equalsIgnoreCase(String anotherString) // 比较字符串的内容,忽略大小写
public int length() // 返回此字符串的长度
public char charAt(int index) // 返回指定索引处的 char 值
public char[] toCharArray() // 将字符串拆分为字符数组后返回
public String substring(int beginIndex, int endIndex) // 根据开始和结束索引进行截取,得到新的字符串(包含头,不包含尾)
public String substring(int beginIndex) // 从传入的索引处截取,截取到末尾,得到新的字符串
public String replace(CharSequence target, CharSequence replacement) // 使用新值,将字符串中的旧值替换,得到新的字符串
public String[] split(String regex) // 根据传入的规则切割字符串,得到字符串数组
以上是关于String的主要内容,如果未能解决你的问题,请参考以下文章
Failed to convert property value of type ‘java.lang.String‘ to required type ‘int‘ for property(代码片段
java.lang.NullPointerException: Attempt to invoke virtual method ‘int android.database.sqlite异常(代码片段