为什么要学习String的处理呢?
开发中,对字符串的处理是非常常见的。
String是什么?可以做什么?
java.lang.String 代表字符串。可以用来创建对象封装字符串数据,并对其进行处理。
1、创建对象
2、封装字符串数据
3、调用String的方法
String创建对象封装字符串数据的方法:
方式一:
Java程序中的所有字符串文字(例如:“abc”)都为此类对象。
String name = "小黑";
String SchoolName = "黑马程序员";
方式二:
调用String类的构造器初始化字符串对象。
new String()创建字符串对象,并调用构造器初始化字符串。
package cn.ensource.string;
public class StringDemo {
public static void main(String[] args) {
String name = "itheima";
System.out.println(name);
String rs1 = new String();
System.out.println(rs1);
String rs2 = new String("itheima");
System.out.println(rs2);
char[] chars = {'a', 'b', 'c'};
String rs3 = new String(chars);
System.out.println(rs3);
byte[] bytes = {100, 101, 102};
String rs4 = new String(bytes);
System.out.println(rs4);
}
}
运行结果:
通过构造函数创建
通过new创建的字符串对象,每一次new都会申请一个空间,虽然内容相同,但是地址值不同。
直接赋值方式创建:
以“”双引号给出的字符串,只要字符串序列相同顺序和大小相同,无论程序代码中出现几次,JVM都只会建立一个String对象,并在字符串池中维护。
String类的常用方法:
String提供的操作字符串数据的常用方法:
为什么是快速熟悉这些方法呢?
API是解决需求的,快速地认识他们,实实在在地解决业务需求。
package cn.ensource.string;
public class StringDemo2 {
public static void main(String[] args) {
// 目标:快速熟悉String提供的处理字符串的方法
String s = "黑马Java";
// 获取字符串的长度
System.out.println(s.length());
// 提取字符串中某个索引位置处的字符
char c = s.charAt(1);
System.out.println(c);
// 字符串的遍历
for (int i = 0; i < s.length(); i++) {
char ch = s.charAt(i);
System.out.print(ch);
}
System.out.println("--------");
// 把字符串转成字符数组,然后再进行遍历
char[] chars = s.toCharArray();
for (int i = 0; i < chars.length; i++) {
System.out.print(chars[i]);
}
System.out.println("--------");
// 判断字符串内容,内容一样,就返回true
String s1 = new String("黑马");
String s2 = new String("黑马");
boolean rs = s.equals(s2);
System.out.println(rs);
System.out.println("--------");
// 忽略大小写比较字符串
String c1 = "34Aefg";
String c2 = "24aefg";
System.out.println(c1.equals(c2));
System.out.println(c1.equalsIgnoreCase(c2));
System.out.println("--------");
// 截取字符串内容
String s3 = "Java是最好的编程语言之一";
System.out.println(s3.substring(0, 8));
System.out.println("--------");
// 截取字符串内容,从当前位置到字符串末尾
System.out.println(s3.substring(8));
System.out.println("--------");
// 把字符串的某个内容,替换成新内容
String s3c = s3.replace("Java", "C++");
System.out.println(s3c);
System.out.println("--------");
// 判断字符串中是否包含某个关键字
String info = "Java是最好的编程语言之一";
boolean rs5 = info.contains("Java");
System.out.println(rs5);
// startwith
System.out.println("--------");
String info2 = "Java是最好的编程语言之一";
boolean rs6 = info2.startsWith("Java");
System.out.println(rs6);
System.out.println("--------");
// 分割字符串
String str5 = "张无忌,周芷若,殷素素,赵敏";
String[] names = str5.split(",");
for(int i = 0; i < names.length; i++) {
System.out.println(names[i]);
}
}
}
split这个成员方法,之前在python中也遇到。
如果方法不再记得了,都是可以到API文档中查询的。
另外:
==:
比较基本数据类型:比较具体的值。
比较引用数据类型:比较的是对象地址值。
package com.company;
public class Main {
public static void main(String[] args) {
char[] chs = {'a', 'b', 'c'};
String s1 = new String(chs);
String s2 = new String(chs);
String s3 = "abc";
String s4 = "abc";
System.out.println(s1 == s2);
System.out.println(s1 == s4);
System.out.println(s3 == s4);
System.out.println("-------------");
System.out.println(s1.equals(s2));
System.out.println(s1.equals(s3));
System.out.println(s3.equals(s4));
}
}
运行结果:
false
false
true
-------------
true
true
true
用户登录案例:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
String username = "changchunhua";
String password = "chang@123";
for (int i=0; i<3; i++) {
Scanner sc = new Scanner(System.in);
System.out.println("Please input username: ");
String name = sc.nextLine();
System.out.println("Please input password: ");
String pwd = sc.nextLine();
if (name.equals(username) && pwd.equals(password)) {
System.out.println("Sign in susccessfully!");
break;
} else {
if (2 - i == 0) {
System.out.println("Your account is locked!");
} else {
System.out.println("Your has 2 - i times to sign in.");
}
}
}
}
}
运行结果:
Please input username:
chang
Please input password:
chang@123
Your has 2 - i times to sign in.
Please input username:
changchun
Please input password:
chang@123
Your has 2 - i times to sign in.
Please input username:
changchunhua
Please input password:
chang@123
Sign in susccessfully!
字符串反转:
package com.company;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Please input a string: ");
String line = sc.nextLine();
String s = reverse(line);
System.out.println("s: " + s);
}
public static String reverse(String s) {
String ss = "";
for(int i=s.length()-1; i>=0; i--) {
ss += s.charAt(i);
}
return ss;
}
}
运行结果:
Please input a string:
changchunhua
s: auhnuhcgnahc