String类相关

来源:互联网 发布:中日友好医院 网络挂号 编辑:程序博客网 时间:2024/05/02 04:49

两种实例化方式:

String str = "Hello" ;   //直接赋值

String str = new String("Hello") ;//构造方法


 String类对象的两种实例化方式及区别:

           直接赋值:只会产生一个字符串对象,并且可以自动入池;

            构造方法:会产生两个字符串对象,其中一个将成为垃圾,同时不会自动入池,但是用户可以使用intern()方法手工入池。

即:String str1 = new String("Hello").intern() ;

在Java之中,String类的设计采用的是一种称为共享设计模式的概念。在每一个JVM底层都会存在一个String的字符串对象池(Object Pool),如果用户现在采用了直接赋值的方式声明了一个字符串,那么此字符串会自动的保存在此对象池之中(入池),而后如果用户继续声明了其他字符串变量,但是此字符串的内容正好在对象池之中已经保存了,则不会开辟新的字符串,而是从池之中取出来继续使用。实际上共享设计模式的实现主要依靠的是数组。


String对象比较时“==”和“equals()”的区别

“==”:表示数值比较,比较的是两个字符串对象的内存地址数值;

           “equals()”:表示的是两个字符串的内容。

注:比较时字符串常量写在前面,以防止出现空指向异常。System.out.println("Hello".equals(str)) ;


字符串修改与扩充(StringBuffer

任何语言都没有提供字符串的定义,都是通过程序自己补充的,所以在Java之中每当定义了一个字符串之后,那么字符串的内容是不可能改变的。在整个的修改过程之中,可以发现字符串的内容本身没有任何的变化。一直在改变的是String对象的引用,而它改变的方式所带来的后果就是会出现垃圾。

如果在程序中需要对字符串进行频繁的修改连接操作的话.使用StringBuffer性能会更高

StringBuffer sb = new StringBuffer(str);
sb.append("here");
String str = sb.toString();


String与字符数组

No.

方法名称

类型

描述

1

public String(char[] value)

构造

将全部字符数组变为字符串

2

public String(char[] value, int offset, int count)

构造

将部分字符数组变为字符串,指定开始索引和长度

3

public char charAt(int index)

普通

返回指定索引位置的字符

4

public char[] toCharArray()

普通

将字符串变为字符数组


char c = str.charAt(0) ;

char[] data = str.toCharArray() ;        //将字符串变为字符数组


判断某一个字符串中的数据是否由纯数字组成

public staticboolean isNumber(String temp) {

                     char [] data =temp.toCharArray() ;         // 将字符串变为字符数组

                     for (int x = 0 ; x <data.length ; x ++) {

                                if (data[x] >'9' || data[x] < '0') {      // 不在数字范围

                                          returnfalse ;

                                }

                     }

                     return true ;         // 如果没有错误,执行此步

           }


String与字节数组

在Java之中使用字节数组有两类情况:数据传输、编码转换。

No.

方法名称

类型

描述

1

public String(byte[] bytes)

构造

将全部的字节数组变为字符串

2

public String(byte[] bytes, int offset, int length)

构造

将部分字节数组变为字符串

3

public byte[] getBytes()

普通

将字符串变为字节数组

4

public byte[] getBytes(String charsetName) throws UnsupportedEncodingException

普通

编码转换


字符串比较

No.

方法名称

类型

描述

1

public boolean equals(String anObject)

普通

比较两个字符串的内容,区分大小写

2

public boolean equalsIgnoreCase(String anotherString)

普通

不区分大小写的比较

3

public int compareTo(String anotherString)

普通

比较两个字符串大小

在进行字符串比较的时候最需要说明的是compareTo()方法,这个方法的返回值是一个int型数据,而这个int型的数据一共有三类返回值:大于(>0)、小于(<0)、相等(=0


字符串查找

从一个指定的字符串之中查找某一个子字符串是否存在

No.

方法名称

类型

描述

1

public boolean contains(String s)

普通

直接查找子字符串是否存在,JDK 1.5提供的

2

public int indexOf(String str)

普通

从头查找指定字符串位置,如果找不到返回-1

3

public int indexOf(String str, int fromIndex)

普通

从指定位置查找指定字符串的位置

4

public int lastIndexOf(String str)

普通

由后向前查找指定字符串的位置

5

public int lastIndexOf(String str, int fromIndex)

普通

从指定位置由后向前查找

6

public boolean startsWith(String prefix)

普通

判断是否以指定的字符串开头

7

public boolean startsWith(String prefix, int toffset)

普通

从指定位置开始判断是否以指定的字符串开头

8

public boolean endsWith(String suffix)

普通

判断是否以指定的字符串结尾


字符串替换

可以将一个字符串之中的指定内容替换为其他内容,使用方法如下:

No.

方法名称

类型

描述

1

public String replaceAll(String regex, String replacement)

普通

全部替换

2

public String replaceFirst(String regex, String replacement)

普通

替换首个


字符串截取

如果要从一个完整的字符串之中截取部分字符串,则可以采用如下方法完成。

No.

方法名称

类型

描述

1

public String substring(int beginIndex)

普通

由指定位置截取到结尾

2

public String substring(int beginIndex, int endIndex)

普通

截取指定索引范围内的字符串


字符串拆分

按照指定的内容可以将一个字符串拆分为若干个子部分,可用的方法如下:

No.

方法名称

类型

描述

1

public String[] split(String regex)

普通

将字符串全拆分

2

public String[] split(String regex, int limit)

普通

部分拆分,其他不拆分的作为一个整体


如果在进行字符串拆分的过程之中出现了拆不开的情况,那么可以使用“\\”转义。

String str ="192.168.1.1" ;

                     String result[] = str.split("\\.");


其他方法

No.

方法名称

类型

描述

1

public String concat(String str)

普通

字符串连接,与“+”类似

2

public boolean isEmpty()

普通

判断是否是空字符串(""

3

public int length()

普通

字符串长度

4

public String toLowerCase()

普通

字符串转小写

5

public String toUpperCase()

普通

字符串转大写

6

public String trim()

普通

去掉左右空格


字符串变为基本数据类型

有了包装类之中,对开发之中而言,最大的方便之处是可以利用其将字符串变为指定的基本数据类型(在任何时候所有传递的数据都是字符串),下面以几个代码为例:

                     · String变为int,依靠Integer类的方法:public static int parseInt(String s)

                     · String变为double,依靠Double类的方法:public static double parseDouble(String s)

                     ·String变为boolean,依靠Boolean类的方法:public static booleanparseBoolean(String s)

例如:

String str ="123" ;       // 字符串

                     int temp =Integer.parseInt(str) ;   // 字符串变为int

但是在进行此类转换操作的时候,一定要保证字符串中的内容全部由数字所组成,否则会出现数字格式化“NumberFormatException”异常。

String str ="true" ;       // 字符串

                     boolean temp =Boolean.parseBoolean(str) ;           // 字符串变为boolean

如果在进行String向boolean数据转型的过程之中,字符串中的内容不是true或者是false,都会统一按照false处理。


基本数据类型变为字符串

做法一:任何的基本数据类型遇见了字符串的相加操作后都变为字符串。

int x = 100 ;

                     String temp =x + "";  // int变为String

 做法二:做法一之中虽然进行了转换,但是会产生垃圾的字符串空间,所以在实际的工作之中,如果要将基本类型变为字符串往往要利用String类的方法:“public static String valueOf(数据类型 b)”。

int x = 100 ;

                     String temp = String.valueOf(x) ;         // int变为String


0 0