String类:字符串是一个特殊的对象。 字符串对象最大特点:字符串一旦初始化就不可以被改变。 String s1= "abc";// s1是一个类类型变量,“abc”是一个对象。在其内存中有一个对象。 String s2= new String ("abc");//在其内存中有两个对象。 String s3= "abc"; s1.equals(s2);结果为true。因为String类复写打了Object类中equals方法,该方法用于判断字符串是否相同。 s1==s3;结果为true。因为当定义字符串常量时,虚拟机会查看常量池,发现其中有相同的字符串对象时,便不会再开辟空间了。
String类提供的对字符串的操作方法有: 1、获取。 1.1 字符串中的包含字符数,也就是字符串的长度。 int length():获取长度。 1.2根据位置获取位置上某个字符。 char charAt(int index); 1.3 根据字符获取该字符在字符串中位置。(如果没有找到字符或字符串,返回-1) int indexof(char ch):返回的是ch在字符串中第一次出现的位置。 int indexof (char ch , int fromIndex) : 从fromIndex指定位置开始,获取ch在字符穿中出现的位置。 int indexof(string str):返回的是str在字符串中第一次出现的位置。 int indexof (string str , int fromIndex) : 从fromIndex指定位置开始,获取str在字符穿中出现的位置。 int lastIndexOf("a"):这时,字符串会从最后一个字符向前查找,但是索引不变,一样是从前面开始计算。 2、判断。 2.1 字符串中是否包含某一个子串。 boolean contains(str) : 特殊之处,indexOf(str):可以索引str第一次出现位置,如果返回-1,表示该str不在字符串中存在,if( str.indexof("aa")!=-1),而且该方法既可以判断,又可以获取出现的位置。 2.2 字符中是否有内容。 boolean isEmpty ():原理就是判断长度是否为0. 2.3 字符串是否是以指定内容开头。 boolean startsWith ( str ) ; 2.4 字符串是否是以指定内容结尾。 Boolean endsWith ( str ); 2.5 判断字符串内容是否相同。复写了Object类中的equals方法。 boolean equals ( str ); 2.6 判断内容是否相同,并忽略大小写。 boolean equalsIgnoreCase ( ); 3、转换。 3.1 将字符数组转成字符串。 构造函数:String (char[]); String ( char [] , offset , count ) : 将字符数组中的一部分转成字符串。offset起始位置,count个数。 静态方法:static String copyValueOf ( char [] ); static String copyValueOf ( char [] data , int offset , int count ) static String valueOf ( char [] ); 3.2 将字符串转成字符数组。 char [] toCharArray( ); 3.3 将字节数组转成字符串。 String ( byte[ ] ) String ( byte[ ] , offset , count ) :将字节数组中的一部分转成字符串。 3.4 将字符串转成字节数组。 byte[] getBytes ( ); 3.5 将基本数据类型转成字符串。 static String valueOf (int) static String valueOf (double) 特殊: 字符串和字节数组在转换过程中,是可以指定编码表的。 4、替换。 String replace ( oldchar , newchar )//可以替换字符串。如果要替换的字符或字符串不存在,返回原串。 5、切割。 String[] split ( regex );//传入的参数是切割的分隔字符或字符串。返回值是字符串数组。 6、子串。获取字符串的一部分。 String substring ( begin );//从指定位置开始到结尾。 String substring ( begin ,end );//包含头不包含尾。 7、转换,去除空格,比较。 7.1 将字符串转成大写或小写。 String toUpperCase ( ); String toLowerCase ( ); 7.2 将字符串两端的多个空格去除。 String trim ( ); 7.3 对两个字符串进行自然顺序的比较。 int compareTo ( string );
---------------------------------------------------------------------------------- StringBuffer:字符串缓冲区。 l 字符串的组成原理就是通过该类实现的。 l StringBuffer可以对字符串内存进行增删。 l StringBuffer是一个容器。 l 很多方法与String相同。 l StringBuffer是可变长度的。 l 可以操作多个数据类型。 l 最终会通过toString方法变成字符串。 基本操作: 1、存储 StringBuffer append ( ) :将指定数据作为参数添加到已有数据结尾处。 StringBuffer insert ( index ,数据 ):可以将数据插入到指定index位置。 2、删除 StringBuffer delete ( start , end ):删除缓冲区中的数据,包括start,不包含end。 StringBuffer deleteCharAt ( index ):删除指定位置的字符。 3、获取。 char charAt ( int index ) int indexOf (String str) int lastIndexOf ( String str) int length ( ) String substring ( int start , int end ) 4、修改。 StringBuffer replace ( start ,end ,string ); void setCharAt ( int index , char ch ); 5、反转。 StringBuffer reverse ( ) ; 6、将缓冲去中指定数据存储到指定字符数组中。 void getChars ( int srcBegin , int srcEnd , char [] dst , int dstBegin) 将缓冲去中的从begin到end,不包括end 的数据转存到dst字符数组中,从索引dst Begin开始。
JDK1.5版本之后出现了StringBuilder。 StringBuilder的方法与的方法几乎完全相同。 StringBuilder是线程不同步。所以它更加效率,但是当有多线程时应该使用buffer。 StringBuffer是线程同步。 以后开发,建议使用StringBuilder。 JDK升级的三个因素是: 1、提高效率 2、简化书写 3、提高安全性。
基本数据类型对象包装类。 基本数据类型 对象包装类 byte Byte short Short int Integer long Long boolean Boolean float Float double Double char Character
基本数据类型对象包装类的最常见作用,就是用于基本数据类型和字符串类型之间做转换。 基本数据类型转成字符串: 1、基本数据类型+" " 2、基本数据类型.toString( 基本数据类型值 ); 如:Integer.toString ( 34 );//将34整数变成“34” 字符串转成基本数据类型。 1、xxx a = Xxx.parseXxx(String); 2、int a = Interger.parseInt ( "123" ); 3、double b = Double.parseDouble ( "12.36" ); 4、boolean c = Boolean.parseBoolean ( "true");
十进制转成其他进制。 toBinaryString ( ); toHexString ( ); toOctalString ( ); 其他进制转成十进制。 parseInt ( string,radix); String:代表要转化为10进制的数。 Radix:表示被转化的进制。 Integer a = 127. Integer b = 127. a == b结果为true。因为a和b执行了同一个Integer对象。因为当数值在byte范围内容,对于新特性,如果该数值已经存在,则不会再开辟新的空间。 |