JAVASE之String

来源:互联网 发布:无光源网络是什么意思 编辑:程序博客网 时间:2024/06/06 23:03

Java常用APIString

API(application programming interface)应用程序编程接口.Java API指的就是JDK中提供的各种功能的java.

 

String类的API:

“abc”String类的一个实例,或者称为String类的一个对象

字符串字面值”abc”也可以看成是一个字符串对象.

字符串是常量,一旦被赋值,就不能被改变.

字符串本质是一个字符数组.

String类的构造方法:

String(String original);把字符串数据封装成字符串对象.

String(char[ ] value);把字符数组的数据封装成字符串对象.

String(char[ ] ,int index,int count);把字符数组中的一部分数据封装成字符串对象.index个开始的count个字符.

注意:一般引用数据类型,直接输出对象就是输出该对象的地址值.但是字符串作为比较特殊的引用数据类型,直接输出字符串对象输出的是该对象中的数据.

字符串的内容是被存储在方法区中的常量池中的,是为了方便字符串的重复使用.

 

直接赋值字符串对象和通过构造方法创建出来的字符串对象的区别.

通过构造方法创建字符串对象是在堆内存中.(new出来的对象都是在堆内存中)

直接赋值方法创建对象是在方法区的常量池中.

Object是类层次结构中的根类.所有的类都直接或者间接的继承自该类.

如果一个方法的形式参数是Object,那么这里我们就可以传递他的任意的子类对象(多态).

 

String的判断方法:boolean equals(Object obj):比较字符串的内容是否相同

Boolean equalsIgnoreCaseString str):比较字符串的内容是否相同,忽略大小写

Boolean startsWithString str):判断字符串对象是否以指定的str开头。

Boolean endsWithString str);判断字符串是否以指定的str结尾。

String的获取方法:int length():获取字符串的长度,其实也就是字符个数

Char charAtint index):获取指定索引处index位置的字符

Int indexOfString str):获取str在字符串对象中第一次出现的索引。

String substringint start):从start开始截取字符串

String substringint startint end)从start(包)开始,到end(不包)结束截取字符串。

String与其他的转换:char[] toCharArray();把字符串转换为字符数组

String toLowerCase();把字符串转换为小写字符串

String toUpperCase();把字符串转换为大写字符串.

去除字符串两端的空格:String trim();

按照指定符号分割字符串: String[] split(String str)

 

StringStringBuilder

StringBuilder是一个可变的字符串.字符串缓冲区类.

String的内容是固定的,StringBuilder的内容是可变的.

一般使用字符串的时候不使用+=.太消耗内存.因为每次拼接都会产生新的字符串对象,而利用StringBuilder来拼接字符串自始至终用的都是同一个StringBuilder容器.

 

StringBuilder

构造方法:StringBuilder();

成员方法;

Public int capacity();返回当前容量(理论值)

Public int length();返回长度(已经存储的字符个数)

Public StringBuilder append(Object obj);添加数据,并返回自身对象.

Public StringBuilder reverse();反转功能.(字符串反转功能实现.)

StringBuilderString的相互转换:

StringBuilder---String

Public String toString();通过toString()可以将StringBuilder对象转换成String对象.

String----StringBuilder

StringBuilder(String str);通过构造方法就可以实现把String转换成StringBuilder.

 

 

Tips:StringBuilderStringBuffer;

String是字符串常量(在不断的创建对象,GC回收垃圾中),StringBuilderStringBuffer是字符串变量.

StringBuilder是线程不安全的,执行效率非常高.

StringBuffer是线程安全的,执行效率相对StringBuilder,但是对String还是相当高的.

当我们在字符串缓冲去被多个线程使用时,JVM不能保证StringBuilder的操作是安全的,虽然他的速度最快,但是可以保证StringBuffer是可以正确操作的.当然大多数情况下就是我们是在单线程下进行的操作.所以大多数情况下是建议用StringBuilder而不是StringBuffer,就是速度的原因.

So: 操作少量的数据用String

单线程操作字符串缓冲区下大量数据  StringBuilder

多线程操作字符串缓冲区下操作大量数据   StringBuffer