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 );
在面试中常见的考题:
- public class StringTest2 {
- /**
- * 将字符串反转,
- * 思路:
- * (1)先将字符串转换为字符数组
- * (2)再将字符数组反转
- * (3)将字符数组变成字符串
- */
- public static void main(String[] args)
- {
- String str="abcdefg";
- String str1=reverseString(str);
- System.out.println(str1);
- }
- public static String reverseString(String str)
- {
- char[] arr=str.toCharArray();
- reverse(arr);
- return new String(arr);
- }
- public static void reverse(char[] arr)
- {
- for(int start=0,end=arr.length-1;start<end;start++,end--)
- {
- swap(arr,start,end);
- }
- }
- public static void swap(char[] arr,int start,int end)
- {
- char temp=arr[start];
- arr[start]=arr[end];
- arr[end]=temp;
- }
- }
- public class StringTest1
- {
- /**
- * 自定义方法实现去除字符串两端空格。
- */
- public static void main(String[] args)
- {
- String str=" abcdefg ";
- String str1=myTrim(str);
- System.out.println(str1);
- String str2=str.trim();
- System.out.println(str2);
- }
- public static String myTrim(String str)
- {
- int start=0,end=str.length()-1;
- while(start<=end&&str.charAt(start)==' ')
- start++;
- while(start<=end&&str.charAt(end)==' ')
- end--;
- return str.substring(start,end+1);//返回的子串是包含头不包含尾的。
- }
- }
------------------------------------------------------------------------------------
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范围内容,对于新特性,如果该数值已经存在,则不会再开辟新的空间。
- 【java】:java String类
- 学习java String类
- java手记---String类
- java string类详解
- JAVA String类学习
- java String 类源代码
- Java.String类
- JAVA的String 类
- java String 类细节
- Java String类总结
- java-String类
- java基础---->String类
- java String类
- JAVA的String 类
- JAVA String类详解
- JAVA string 类
- Java API String类
- java String 类详解
- NYOJ 370 波动序列 dp 动态规划
- linux常用工具安装
- 使用cadence建封装
- 软件设计模式系列之三 STRATEGY(策略)
- hadoop相关(以期为单位)
- java String类
- java中设计模式
- 11gR2单实例安装ASM
- java中的排序(选择,冒泡,希尔,插入)
- MFC下拉列表框的用法
- PHP自学之路---PHP开发环境配置说明
- java多线程之死锁
- intel cpu 分类 i7、i5、i3、T系列、P系列
- List.链表(增删改查)