Java基础——常用对象API(一)String类和StringBuffer类

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Dirichlet_zju/article/details/86036201

String

一、特点

  1. 字符串是一个特殊的对象。
  2. 字符串一旦初始化就不可被改变。

问:String str = "abc" 和 String str1 = new String("abc") 有什么区别?

new出来的对象在堆内存中,产生两个对象但都在堆内存中;

直接赋值对象在字符串常量池中,由String类来维护,可以被共享。

 equals方法:就是比较两个字符串是否一样

二、构造函数

1.String()

String s = new String(); 等效于 String s = "";但不等效于String s = null;

2.String(byte[] bytes)

将一个字节数组变成字符串,但转换成了ASCII码。

3.String(char[] chars)

将一个字符数组转换成字符串。

或者采用String(char[] chars, int offset, int length)//其中offset为偏移量,length字符串长度。

三、方法

按照面向对象的思想对字符串进行功能分类。

1.获取

1.1.获取字符串长度.length(),

1.2.char charAt(int index),

1.3.int indexOf(char ch)第一次出现字符处的索引。

1.4.int indexOf(char ch, int fromIndex) 从指定位置进行ch的查找第一次出现的索引

类似的还有搜索String字符串,以及lastIndexOf方法从后往前找

1.5.String substring(int beginIndex, int endIndex)获取从哪到哪(endIndex-1)的子字符串。、

2.转换

2.1.将字符串变成字符串数组(字符串的切割)

String[] split(String regex):涉及到正则表达式.

简单来说,","可以切,“.”不能切,得转换成"\\."切。 

2.2.将字符串变成字符数组。

char[] toCharArray();

2.3.将字符串变成字节数组。

byte[] getBytes();

2.4.将字符串中的字母转成大小写。

String toUpperCase();大写
String toLowerCase();小写

2.5.将字符串中的内容进行替换

String replace(char oldch,char newch);
String replace(String s1,String s2);

2.6.将字符串两端的空格去除。

String trim();

2.7.将字符串进行连接 。

String concat(string);

3.判断

3.1.两个字符串内容是否相同啊?

boolean equals(Object obj);
boolean equalsIgnoreCase(string str);忽略大写比较字符串内容。

3.2.字符串中是否包含指定字符串?

boolean contains(string str);

3.3.字符串是否以指定字符串开头。是否以指定字符串结尾。

boolean startsWith(string);
boolean endsWith(string);

3.4.比较,按字典顺序比较两个字符串。

int compareTo(String str);//返回第一个不相同字符的Unicode差值

4.其他

String intern();

StringBuffer

一、概述

StringBuffer是字符串缓冲区。用于存储数据的容器。

1.特点:

  1. 长度不可变。
  2. 可以存储不同的数据类型。
  3.  

二、功能

1.添加:

1.1.append

StringBuffer append(data);//data基本是任意数据类型
使用:
StringBuffer sb = new StringBuffer();
StringBuffrt s1 = sb.append(4);
System.out.println(sb);
System.out.println(s1);
System.out.println(sb==s1);
输出:
4
4
true

1.2.insert

StringBuffer insert(int offset, Data data);
使用:
StringBuffer sb = new StringBuffer();
sb.append(123);
sb.insert(1, "haha");
System.out.println(sb);
输出:
1haha23

2.删除

StringBuffer delete(int start, int end);包含头不包含尾
StringBuffer deleteCharAt(int index);删除指定位置元素

清空缓冲区:

sb.delete(0, sb.length());

3.查找

char charAt(int index);
int indexOf(String str);
int lastIndexOf(String str);

4.修改

StringBuffer replace(int begin, int end, String str);//包含头不包含尾
void setCharAt(int index, char ch);

5.其他

5.1.setLength()

void setLength(int length);
使用:
StringBuffer sb = new StringBuffer("asd");
sb.setLength(2);
输出:
as

5.2.reverse()反转


StringBuilder

与StringBuffer一毛一样,但不保证同步。从1.5开始使用。由于一模一样,所以在一般情况下尽量使用StringBuilder以使速度更快

那么StringBuffer和StringBuilder的安全性体现在哪里呢?

在读写操作上加了锁。

jdk一般升级趋势:

  • 简化书写;
  • 提高效率;
  • 增加安全性。
展开阅读全文

没有更多推荐了,返回首页