Java ——String 类 StringBuffer 和 StringBuilder类 随机字符
本节重点思维导图
String 类
创建字符串
String str = "I love ai";
在代码中遇到字符串常量时,"I love ai",编译器会使用该值创建一个 String 对象。
可以使用关键字和构造方法来创建 String 对象。
String 类有 11 种构造方法,这些方法提供不同的参数来初始化字符串
比如提供一个字符数组参数:
public class StringDemo{ public static void main(String args[]){ char[] helloArray = { 'r', 'u', 'n', 'o', 'o', 'b'}; String helloString = new String(helloArray); System.out.println( helloString ); } }
String 类是不可改变的,所以你一旦创建了 String 对象,那它的值就无法改变了
如果需要对字符串做很多修改,那么应该选择使用 StringBuffer & StringBuilder 类
比较符号
- ==:比较的是两个字符串的地址
- equals():比较的是两个字符串的内容
String str1 = "abc"; String str2 = "abc"; System.out.println(str1.equals(str2)); System.out.println(str1 == str2); String str3 = new String("abc"); System.out.println(str1.equals(str3)); System.out.println(str1== str3);
实例:
用户登录:果用户输入的用户名和密码分别为zhangsan、123456,则登录成功,否则登录失败。
public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("input name:"); String name = scanner.next(); System.out.println("input pwd"); String pwd = scanner.next(); if ("zhangsan".equals(name) && "123456".equals(pwd)) { System.out.println("success"); } else { System.out.println("failed"); } }
User类:
public class User { private int id; private String name; private byte age; public User setId(int id) { this.id = id; return this; } public User setName(String name) { this.name = name; return this; } public User setAge(byte age) { this.age = age; return this; } public static void main(String[] args) { User user = new User(); user.setId(3).setName("fds").setAge((byte) 33); } }
public class StreamFromString { static String src = "今天的天气真的不好"; public static void main(String[] args) throws IOException { byte[] buff = new byte[1024]; //从字符串获取字节写入流 InputStream is = new ByteArrayInputStream(src.getBytes("utf-8")); int len = -1; while(-1 != (len = is.read(buff))) { //将字节数组转换为字符串 String res = new String(buff, 0, len); System.out.println(res); } }
字符串长度——xx.length();
public class StringDemo { public static void main(String args[]) { String site = "www.runoob.com"; int len = site.length(); System.out.println( "菜鸟教程网址长度 : " + len ); } }
连接字符串
string1.concat(string2);
"我的名字是 ".concat("Runoob");
更常用: +
"Hello," + " runoob" + "!"
示例:
public class StringDemo { public static void main(String args[]) { String string1 = "菜鸟教程网址:"; System.out.println("1、" + string1 + "www.runoob.com"); } }
创建格式化字符串
String 方法
额外:
StringBuffer 和 StringBuilder 类
https://www.cnblogs.com/su-feng/p/6659064.html
对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类
和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象
String 长度大小不可变
StringBuffer 和 StringBuilder 长度可变
StringBuffer 线程安全 StringBuilder 线程不安全
StringBuilder 速度快
建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类
public class Test{ public static void main(String args[]){ StringBuffer sBuffer = new StringBuffer("菜鸟教程官网:"); sBuffer.append("www"); sBuffer.append(".runoob"); sBuffer.append(".com"); System.out.println(sBuffer); } }
示例:
public static void main(String[] args) { StringBuilder sb = new StringBuilder(); sb.append("aaa"); sb.append("bbb"); sb.append("ccc"); System.out.println(sb); sb.insert(3, "1234"); System.out.println(sb); sb.insert(4, true); System.out.println(sb); sb.deleteCharAt(8); System.out.println(sb); sb.delete(3, 6); System.out.println(sb); int length = sb.length(); System.out.println(length); sb.reverse(); System.out.println(sb); StringBuffer stringBuffer = new StringBuffer(); stringBuffer.append("aa").append("bb").append("cc"); System.out.println(stringBuffer); }
产生随机字符
public static void main(String[] args) { String string = UUID.randomUUID().toString(); System.out.println(string); System.out.println(string.length()); }