java(十二)String 字符串

字符串的基本概念

字符串或串(String)是由数字、字母、下划线组成的一串字符。

程序通常需要处理大量文本数据,Java 语言的文本数据被保存为字符或字符串类型。

字符串在开发中的应用场景

字符串操作就是以串的整体作为操作对象,如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等。

创建字符串

Java定义字符串(2种方式)

1.在 Java 中定义一个字符串最简单的方法是用双引号把它包围起来,直接赋值 

String  s = "aa";

2.使用new关键字

初始化一个新创建的 String 对象,使其表示一个与参数相同的字符序列。换句话说,新创建的字符串是该参数字符串的副本。

String str1 = new String("Hello Java");

字符串常量池

String  string0= "hello";//存放在字符串常量池里

String  string1="hello";//发现在字符串常量池里存在就不创建,而是使用字符串常量池里原有的

这时我们使用== 来判断string0和string1的地址相等,使用equals来判断值相等

此时==结果为true,equals的结果为true。

如果字符串常量池中没有再重新创建一份

String字符串的不变性

字符串一旦创建,任何方法都不能修改其内容

字符串的常用操作

equals方法 

String s = "aa";String s1 = "aa";

 注意 对于引用数据类型(字符串,对象,数组,类) equals用于判断值相等,对于基础数据类型 判断用==
 if(s.equals(s1)){
     System.out.println("值相等");
 }

//==用于判断地址相等 ,结果是相等的,因为在字符串常量池里

if(s==s1){
    System.out.println("地址相等");
}

new String 用来在堆中创建字符串

String s = "aa";String s1 = new String("aa");

 if(s.equals(s1)){
     System.out.println("值相等");
 }

if(s==s1){
    System.out.println("地址不等"); //因为new 新创建了一个对象
}

字符串的拼接使用+号,concat完成

String s = "hello";String s1 = " word";System.out.println(s+s1);

字符串操作的相关函数网址

https://www.matools.com/api/java8

charAt  查找字符在字符串中的索引的位置,出现的位置

String str = "Hello, World!";
char ch1 = str.charAt(4);
System.out.println("字符在索引4的位置是: " + ch1);

substring字符串截取

String astring="abs";
String b = astring.substring(1);
System.out.println(b);

indexOf 字符串查找

String astring1="abs";
astring1.indexOf("bs");
System.out.println( astring1.indexOf("bs"));

StringBuffer

字符串变量(Synchronized,即线程安全)。通过 StringBuffer 创建的对象是创建在堆 (heap) 上的,如果要频繁对字符串内容进行修改,出于效率考虑最好使用 StringBuffer 它是线程安全的,适合多线程环境下使用。由于线程安全,其性能较慢。

StringBuffer s = new StringBuffer("hello");

// 增

s.append(','); // "hello,"

s.append("张三丰");// "hello,张三丰"

s.append("赵敏").append(100).append(true).append(10.5);// "hello,张三丰赵敏100true10.5"

System.out.println(s);// "hello,张三丰赵敏100true10.5"

// 删

/* * 删除索引为 >= start && < end 处的字符

       解读: 删除 11~14的字符 [11, 14)

*/

s.delete(11, 14);

System.out.println(s);// "hello,张三丰赵敏true10.5"

 // 改

// 解读,使用 周芷若 替换 索引9-11的字符 [9,11)

s.replace(9, 11, "周芷若");

System.out.println(s);// "hello,张三丰周芷若true10.5"

// 查

// 查找指定的子串在字符串第一次出现的索引,如果找不到返回-1

int indexOf = s.indexOf("张三丰");

System.out.println(indexOf);// 6

// 插

// 解读,在索引为9的位置插入 "赵敏",原来索引为9的内容自动后移

s.insert(9, "赵敏");

System.out.println(s);// "hello,张三丰赵敏周芷若true10.5"

// 长度

// 返回字符的个数,与容量无关

System.out.println(s.length());// 22

System.out.println(s);

StringBuilder 与 StringBuffer 类似,它的值也是存储在堆上,同时也可以被修改。两者之间最大的不同就是 StringBuilder 不是线程安全的,但同时也因为它不需要考虑线程安全,它的性能更好。是单线程的,不建议使用

字符串与其他类型相互转换

1.任意基本类型或引用类型 转换为 字符串

使用静态方法valueOf()

String.valueOf(123); // "123"

String.valueOf(45.67); // "45.67"

String.valueOf(true); // "true"

String.valueOf(new Object()); // 类似java.lang.Object@636be97c

2.字符串 转换为 其他类型

    1.字符串转换成Int型

    int/Integer num = Integer.parseInt(String str);

    2.字符串转换成long型

    Long/long num = Long.parseLong(String str);

    3.转换成short型

    short/Short num = Short.parseShort(String str);

    4.转换成float型

    float/Float num = Float.parseFloat(String str);

    5.转换成double型

    double/Double num = Double.parseDouble(String str);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Allen019

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值