java String类

来源:互联网 发布:网络借贷监管 编辑:程序博客网 时间:2024/05/16 17:17

String类:

字符串是一个特殊的对象,在实际编程中应用广泛,在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 );

在面试中常见的考题:

[java] view plaincopy
  1. public class StringTest2 {    
  2.     
  3.     /**  
  4.      * 将字符串反转,  
  5.      * 思路:  
  6.      * (1)先将字符串转换为字符数组  
  7.      * (2)再将字符数组反转  
  8.      * (3)将字符数组变成字符串  
  9.      */    
  10.     public static void main(String[] args)    
  11.     {    
  12.         String str="abcdefg";    
  13.         String str1=reverseString(str);    
  14.         System.out.println(str1);    
  15.     }    
  16.     public static String reverseString(String str)    
  17.     {    
  18.         char[] arr=str.toCharArray();    
  19.         reverse(arr);    
  20.         return new String(arr);    
  21.     }    
  22.     public static void reverse(char[] arr)    
  23.     {    
  24.         for(int start=0,end=arr.length-1;start<end;start++,end--)    
  25.         {    
  26.             swap(arr,start,end);    
  27.         }    
  28.     }    
  29.     public static void swap(char[] arr,int start,int end)    
  30.     {    
  31.         char temp=arr[start];    
  32.         arr[start]=arr[end];    
  33.         arr[end]=temp;    
  34.     }    
  35. }    

[java] view plaincopy
  1. public class StringTest1     
  2. {    
  3.     /**  
  4.      * 自定义方法实现去除字符串两端空格。  
  5.      */    
  6.     public static void main(String[] args)    
  7.     {    
  8.         String str="   abcdefg  ";    
  9.         String str1=myTrim(str);    
  10.         System.out.println(str1);    
  11.         String str2=str.trim();    
  12.         System.out.println(str2);    
  13.     }    
  14.     public static String myTrim(String str)    
  15.     {    
  16.         int start=0,end=str.length()-1;    
  17.         while(start<=end&&str.charAt(start)==' ')    
  18.             start++;    
  19.         while(start<=end&&str.charAt(end)==' ')    
  20.             end--;    
  21.         return str.substring(start,end+1);//返回的子串是包含头不包含尾的。    
  22.     }    
  23. }    
其实在上面两例子中,java有方法可以直接实现,这里是基本原理。
------------------------------------------------------------------------------------


StringBuffer与StringBuilder:字符串缓冲区。

  |现在都少用了

  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范围内容,对于新特性,如果该数值已经存在,则不会再开辟新的空间。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 孩子在学习上无所谓怎么办 孩子对学习无所谓的态度怎么办 孩子不上进什么都无所谓怎么办 倔强的学生不理老师怎么办 一岁宝宝特别犟怎么办 孩子遇到问题喜欢发脾气怎么办 企业培养新人跑了怎么办 二年级学生读不懂题目怎么办 6岁宝宝有鼻炎怎么办 外地儿童怎么办北京医保卡 江苏联宝投资的钱怎么办 银行叫开了证券怎么办 中班心理健康我不开心了怎么办 大学生心理健康课总是抢不到怎么办 孩子成绩提不上去怎么办 孩子数学不开窍怎么办 二年级 初中孩子语文不开窍怎么办 分到的班级都是差生怎么办 初三了英语差怎么办呀 初三了英语差的很怎么办 五年级英语太差怎么办 听课效率没有自学效率高怎么办 小学生不好好写作业怎么办 带的家教成绩没有提高怎么办 学生出国学校成绩证明怎么办 学生成绩考差了班主任怎么办 高一的学生成绩跟不上怎么办 综合素质评价手册丢了怎么办 小学综合素质评价手册丢了怎么办 人体质不出汗差怎么办 儿子一年级语文成绩太差怎么办 小孩读一年级差几个月怎么办 小孩一年级下学期数学差怎么办 小学五年成绩差怎么办 生完孩子记忆力不好怎么办 生了孩子之后记忆力不好怎么办 孩子记忆力差学习不好怎么办 党课结业证丢了怎么办 对三年级不听话的学生应该怎么办 素质报告单丢了怎么办 社保小红本丢了怎么办