本节重点思维导图

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());
}

Java ——String 类 StringBuffer 和 StringBuilder类 随机字符的更多相关文章

  1. JAVA String、StringBuffer、StringBuilder类解读

    JAVA String.StringBuffer.StringBuilder类解读 字符串广泛应用 在 Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作 ...

  2. String、StringBuffer和StringBuilder类的区别

    Java提供了String.StringBuffer和StringBuilder类来封装字符串,并提供了一系列操作字符串对象的方法. 它们的相同点是都用来封装字符串:都实现了CharSequence接 ...

  3. 浅谈java中的String、StringBuffer、StringBuilder类的区别以及关系

    在java中最常见的使用就是对字符串的操作:首先先说一下对字符串的理解:字符串就是一连串字符序列,Java提供了String和StringBuffer两个类来封装字符串,并提供一系列方法来操作字符串对 ...

  4. Java基础知识(JAVA中String、StringBuffer、StringBuilder类的区别)

    java中String.StringBuffer.StringBuilder是编程中经常使用的字符串类,他们之间的区别也是经常在面试中会问到的问题.现在总结一下,看看他们的不同与相同. 1.可变与不可 ...

  5. Java笔记——String、StringBuffer和StringBuilder类

    String类是不可变类,即一旦一个String对象被创建以后,包含在这个对象中的字符串序列是不可改变的,直至这个对象被销毁.   StringBuffer对象则代表一个字符序列可变的字符串,当一个S ...

  6. 【JAVA中String、StringBuffer、StringBuilder类的使用】

    一.String类概述 1.String对象一旦创建就不能改变. 2.字符串常量池. 字符串常量池的特点:池中有则直接使用,池中没有则创建新的字符串常量. 例1: public class Strin ...

  7. 总结 String、StringBuffer与StringBuilder类中常用的方法

    一.String类的常用方法 1.获取: 1)获取字符串str长度 int i = str.length(); 2)根据位置(index)获取字符 char c = str.charAt(index) ...

  8. Java String和StringBuffer和StringBuilder

    最近在牛课网上做了几道字符串操作的题目,好久没有做题了,之前用的也是大一时C语言做的,对Java字符串操作不太了解,所以深入了解一下String类的相关用法 String构造方法 String() 空 ...

  9. Java String、StringBuffer、StringBuilder有什么区别

    ① String是Java语言非常基础和重要的类,提供了构造和管理字符串的各种基本逻辑.它是典型的immutable类,被声明成final class,所有属性也都是final的,由于它的不可变性,类 ...

随机推荐

  1. redis基础及redis特殊场景使用描述

    数据类型 String set list hash zset redis原理 单线程:redis是单线程+io多路复用:检查文件描述的就绪状态 对比memchached:多线程+锁 redis优势 解 ...

  2. Mysql where in (几百或几千个id)的优化

    1. SELECT employees.* FROM employees, clients WHERE employees.client_id = clients.id AND clients.nam ...

  3. 375-基于TI DSP TMS320C6657、XC7K325T的高速数据处理核心板

    基于TI DSP TMS320C6657.XC7K325T的高速数据处理核心板 一.板卡概述    该DSP+FPGA高速信号采集处理板由我公司自主研发,包含一片TI DSP TMS320C6657和 ...

  4. 03python面向对象编程2

    3.继承 如果你要编写的类是另一个现成类的特殊版本,可使用继承.一个类继承另一个类时,它将自动获得另一个类的所有属性和方法:原有的类称为父类,而新类称为子类.子类继承了其父类的所有属性和方法,同时还可 ...

  5. redis-5.0.5 集群部署

    之前写过一套基于redis-4.0.6版本的测试集群部署 https://www.cnblogs.com/mrice/p/10730309.html 最近生产环境需要部署一套redis-5.0.5版本 ...

  6. webpack 零基础到工程实战(1)

    webpack resolve:resolve 配置是帮助 webpack 查找依赖模块resolve.alias 是最常用的配置,通过设置 alias 可以帮助 webpack 更快查找模块依赖,而 ...

  7. 7天玩转性能&接口测试

    众所周知,近10年IT领域有两个关键的风向转变,传统IT向云计算转变,传统瀑布和迭代开发模式向敏捷开发模式转变.这两个转变促成了DevOps产品交付模式的出现.互联网行业竞争激烈,许多公司专注于产品和 ...

  8. SpringCloud学习系列-Eureka服务注册与发现(3)

    修改microservicecloud-provider-dept-8001 1.修改pom 增加内容 <!-- 将微服务provider侧注册进eureka --> <depend ...

  9. Java 8 Date常用工具类

    原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11983108.html Demo package org.fool.util; import java ...

  10. vim插件cscope使用方法

    一.安装cscope 安装方式比较多样,可以在各自linux软件管理工具中安装,也可以去官网下载安装. sudo apt-get install cscope 二.插件安装 这里选择的是Vundle来 ...