黑马程序员-->10_字符串操作
2014-01-15 13:13
330 查看
----------- android培训、java培训、期待与您交流!
-----------
一、边界问题(面试题)
程序一
Integer m=128;
Integer n=128;
System.out.println("m==n是"+(m==n));
程序二
Integer m=127;
Integer n=127;
System.out.println("m==n"+(m==n));
输出结果:第一个是false,第二个是true
解释:因为byte类型的数据的范围是-128---127,如果当数值在byte范围的时候,对于新特性,如果在这个范围之内,就不会开辟新空间,如果超过这个范围,就会开辟一个新的空间,所以上面的当m==n==128的时候,超出了范围,就会重新开辟新的空间,所以不相同,所以为false。
二、基本数据类型对象包装类
1、基本数据类型 包装类:
byte Byte
short Short
int Integer
long Long
boolean Boolean
double Double
char Character
2、基本数据类型对象包装类常见作用:
用于基本数据类型和字符串之间的相互转换!!(很简单的内容!)
三、转换的方法
1、字符串转换到别的数据类型(举例说明)
int a=Integer.parseInt("123"); //将字符串123转换成int类型的基本数据。
double b=Double.parseDouble("123"); //将字符串123转换成double类型的数据。
boolean c=Boolean.parseBoolean("true"); //将字符串“true”转换成boolean类型。
2、别的数据类型转换成字符串
基本数据+“”。 //比方说11+“”;就可以直接将int类型的11转换成字符串类型的数据
基本数据类型.toString(基本数据)。 //String dd=Double.toString(745839275.473892759);
3、十进制转换成别的进制
toBinaryString() //转换成二进制
toHexString() //转换成十六进制
toOctalString() //八进制(经常不用)
四、可变字符串StringBuffer(容器,字节缓冲区)
特点
1、长度可改变!
2、可以直接操作多个数据类型!
3、如果要输出,最终会通过toString方法变回字符串的。
重点
CURD:解释一下什么是CURD,分别是creat、update、read、delete
1、存储
StringBuffer append():将指定的数据作为参数添加到已有的数据结尾处
StringBuffer insert(index,数据):可以将数据插入到指定的位置
2、删除
StringBuffer delete(start,end):删除缓冲区的数据,包含start,不包含end
StringBuffer deleteCharAt(index):删除指定位置上的字符
3、获取
char charAt(int index):返回此序列中指定索引处的 char 值。
int indexOf(String str):返回第一次出现的指定子字符串在该字符串中的索引。
int lastIndexOf(String str):返回最右边出现的指定子字符串在此字符串中的索引(有点返回长度的意思)。
int length():返回长度。
String substring(int start,int end):返回一个新的 String,它包含此序列当前所包含的字符子序列。
4、修改
StringBuffer replace(start,end,string):使用给定 String 中的字符替换此序列的子字符串中的字符。
void setCharAt(int index,char ch):将给定索引处的字符设置为 ch。
5、反转
StringBuffer reverse():将此字符序列用其反转形式取代。
清空缓冲区
有时候会需要清空一下字符缓冲区,可以使用.delete()方法,很有效果!StringBuffered的代码例子就不列举了,跟StringBuilder的基本一样,下面有示例。
五、可变字符串StringBuilder(容器,字节缓冲区)
1、概念:
使用String定义的字符串是不能改变长度的,但是使用StringBuffer&StringBuilder创建的字符串变量可以任意改变字符串的长度。
2、区别:
(1)、StringBuffer是线程同步的,具有安全性,因为有synchronized安全锁(从1.0版本就有了)。
(2)、StringBuilder是线程不同步的,没有安全性,无synchronized安全锁,但是效率高(从1.5版本才开始有)。
3、总结:
所以之所以提出StringBuilder是因为它的高效率。
4、java升级的三大原因:
(1)、提高效率。
(2)、简化代码量。
(3)、提高安全性。
5、清空缓冲区:
有时候会需要清空一下字符缓冲区,可以使用.delete()方法,很有效果!下面是一个StringBuilder的小程式:
六、String类中一些常用小操作
1、转换(大小写转换)
String toUpperCase();
String toLowerCase();
2、将字符串两段多余的一个或多个空格去除
String trim();
3、将两个字符串进行自然顺序的比较
int compareTo(string);
4、替换
String replace(oldchar,newchar);
5、切割
String split(regex);
6、字串,获取字符串中的一部分
String substring(begin,end);
7、获取长度
int length();
8、根据位置获取该位置上字符
char charAt(int index);
9、根据字符获取字符所在位置
int indexOf(int ch); //返回的是ch在字符串中第一次出现的位置。
int indexOf(int ch,int fromIndex); //从fromIndex指定的位置开始,获取ch在字符串中位置。
int indexOf(String str); //返回的是str在字符串中第一次出现的位置。
int indexOf(String str,int fromIndex); //从fromIndex指定的位置开始,获取str在字符串中位置。
int lastIndexOf(int ch); //返回指定字符在此字符串中最后一次出现处的索引。
10、字符串中是否指定内容开头
boolean startsWith(str);
字符串中是否指定内容结尾
boolean endsWith(str);
七、字符串与数组的转换
1、字符数组转换成字符串
String(char[],offset,count):将字符数组中的一部分转换成字符串
其中静态方法:
static String copyValueOf(char[])
static String copyValueOf(char[] data,int offset,int count)
static String valueOf(char[])
2、字符串转换成字符数组
char[] toCharArray()
3、字节数转换成字符串
String(byte[])
String(byte[],offset,count)将字节数组中的一部分转换成字符串
4、将基本的数据类型转换成字符串
static String valueOf(int)
static String valueOf(double)
以此类推。。。
八、小面试题
String a=“abc”;
String b=new String(“abc”);
以上两个对象的创建有什么不同呢?
答案:第一个创建了一个对象,第二个创建了两个对象,分别是引用b和abc。
-----------
一、边界问题(面试题)
程序一
Integer m=128;
Integer n=128;
System.out.println("m==n是"+(m==n));
程序二
Integer m=127;
Integer n=127;
System.out.println("m==n"+(m==n));
输出结果:第一个是false,第二个是true
解释:因为byte类型的数据的范围是-128---127,如果当数值在byte范围的时候,对于新特性,如果在这个范围之内,就不会开辟新空间,如果超过这个范围,就会开辟一个新的空间,所以上面的当m==n==128的时候,超出了范围,就会重新开辟新的空间,所以不相同,所以为false。
二、基本数据类型对象包装类
1、基本数据类型 包装类:
byte Byte
short Short
int Integer
long Long
boolean Boolean
double Double
char Character
2、基本数据类型对象包装类常见作用:
用于基本数据类型和字符串之间的相互转换!!(很简单的内容!)
三、转换的方法
1、字符串转换到别的数据类型(举例说明)
int a=Integer.parseInt("123"); //将字符串123转换成int类型的基本数据。
double b=Double.parseDouble("123"); //将字符串123转换成double类型的数据。
boolean c=Boolean.parseBoolean("true"); //将字符串“true”转换成boolean类型。
2、别的数据类型转换成字符串
基本数据+“”。 //比方说11+“”;就可以直接将int类型的11转换成字符串类型的数据
基本数据类型.toString(基本数据)。 //String dd=Double.toString(745839275.473892759);
3、十进制转换成别的进制
toBinaryString() //转换成二进制
toHexString() //转换成十六进制
toOctalString() //八进制(经常不用)
四、可变字符串StringBuffer(容器,字节缓冲区)
特点
1、长度可改变!
2、可以直接操作多个数据类型!
3、如果要输出,最终会通过toString方法变回字符串的。
重点
CURD:解释一下什么是CURD,分别是creat、update、read、delete
1、存储
StringBuffer append():将指定的数据作为参数添加到已有的数据结尾处
StringBuffer insert(index,数据):可以将数据插入到指定的位置
2、删除
StringBuffer delete(start,end):删除缓冲区的数据,包含start,不包含end
StringBuffer deleteCharAt(index):删除指定位置上的字符
3、获取
char charAt(int index):返回此序列中指定索引处的 char 值。
int indexOf(String str):返回第一次出现的指定子字符串在该字符串中的索引。
int lastIndexOf(String str):返回最右边出现的指定子字符串在此字符串中的索引(有点返回长度的意思)。
int length():返回长度。
String substring(int start,int end):返回一个新的 String,它包含此序列当前所包含的字符子序列。
4、修改
StringBuffer replace(start,end,string):使用给定 String 中的字符替换此序列的子字符串中的字符。
void setCharAt(int index,char ch):将给定索引处的字符设置为 ch。
5、反转
StringBuffer reverse():将此字符序列用其反转形式取代。
清空缓冲区
有时候会需要清空一下字符缓冲区,可以使用.delete()方法,很有效果!StringBuffered的代码例子就不列举了,跟StringBuilder的基本一样,下面有示例。
五、可变字符串StringBuilder(容器,字节缓冲区)
1、概念:
使用String定义的字符串是不能改变长度的,但是使用StringBuffer&StringBuilder创建的字符串变量可以任意改变字符串的长度。
2、区别:
(1)、StringBuffer是线程同步的,具有安全性,因为有synchronized安全锁(从1.0版本就有了)。
(2)、StringBuilder是线程不同步的,没有安全性,无synchronized安全锁,但是效率高(从1.5版本才开始有)。
3、总结:
所以之所以提出StringBuilder是因为它的高效率。
4、java升级的三大原因:
(1)、提高效率。
(2)、简化代码量。
(3)、提高安全性。
5、清空缓冲区:
有时候会需要清空一下字符缓冲区,可以使用.delete()方法,很有效果!下面是一个StringBuilder的小程式:
public class StringBuilderDemo { /** * @param args */ public static void out(Object obj){ System.out.println(obj); } public static void f(){ StringBuilder sb=new StringBuilder("你好"); sb.append(",是一个好人"); out("追加之后的内容:"+sb); sb.insert(2, ",我叫***"); out("插入之后的内容:"+sb); int cap=sb.capacity(); out("当前容量:"+cap); sb.replace(12, 14, "学生"); out("替换后的内容是:"+sb); sb.setCharAt(5, '马'); sb.setCharAt(6, '济'); sb.setCharAt(7, '亨'); out("指定之后的内容:"+sb); sb.delete(10,12); out("删除之后的内容是:"+sb); sb.reverse(); out("反转之后的内容:"+sb); } public static void main(String[] args) { // TODO Auto-generated method stub f(); } }
六、String类中一些常用小操作
1、转换(大小写转换)
String toUpperCase();
String toLowerCase();
2、将字符串两段多余的一个或多个空格去除
String trim();
3、将两个字符串进行自然顺序的比较
int compareTo(string);
4、替换
String replace(oldchar,newchar);
5、切割
String split(regex);
6、字串,获取字符串中的一部分
String substring(begin,end);
7、获取长度
int length();
8、根据位置获取该位置上字符
char charAt(int index);
9、根据字符获取字符所在位置
int indexOf(int ch); //返回的是ch在字符串中第一次出现的位置。
int indexOf(int ch,int fromIndex); //从fromIndex指定的位置开始,获取ch在字符串中位置。
int indexOf(String str); //返回的是str在字符串中第一次出现的位置。
int indexOf(String str,int fromIndex); //从fromIndex指定的位置开始,获取str在字符串中位置。
int lastIndexOf(int ch); //返回指定字符在此字符串中最后一次出现处的索引。
10、字符串中是否指定内容开头
boolean startsWith(str);
字符串中是否指定内容结尾
boolean endsWith(str);
public class StringTestDemo { /** * @param args */ public static void out(Object obj){ System.out.println(obj); } public static void main(String[] args) { // TODO Auto-generated method stub String s1="C:\\RedHatLinux5"; String s2="C:\\RedHatLinux"; int num=0; char c=s1.charAt(num); out("索引"+num+"上的字符是:"+c); int boo=s1.compareTo(s2); if(boo==1) out("内容不相同!"); else out("内容相同!"); boolean boo1=s1.contains(s2); if(boo1=true) out("字符串"+s1+"包含字符串"+s2); else out("字符串"+s1+"不包含字符串"+s2); int len=s1.length(); out("s1的长度是:"+len); String s11=s1.replace(s1, "c:\\Android\\KitKat"); out("被替换后的s1是:"+s11); String[] arr=s11.split("\\\\"); for(int i=0;i<arr.length;i++){ out("第"+(i+1)+"段内容:"+arr[i]); } String lower=s1.toLowerCase(); out("s1变成小写之后的内容是:"+lower); } }
七、字符串与数组的转换
1、字符数组转换成字符串
String(char[],offset,count):将字符数组中的一部分转换成字符串
其中静态方法:
static String copyValueOf(char[])
static String copyValueOf(char[] data,int offset,int count)
static String valueOf(char[])
2、字符串转换成字符数组
char[] toCharArray()
3、字节数转换成字符串
String(byte[])
String(byte[],offset,count)将字节数组中的一部分转换成字符串
4、将基本的数据类型转换成字符串
static String valueOf(int)
static String valueOf(double)
以此类推。。。
八、小面试题
String a=“abc”;
String b=new String(“abc”);
以上两个对象的创建有什么不同呢?
答案:第一个创建了一个对象,第二个创建了两个对象,分别是引用b和abc。
相关文章推荐
- 黑马程序员-->10_字符串操作
- 【Foundaton-10-3】#import <Foundation/NSArray.h>字符串操作
- <2012 12 17> C标准库中一些字符串操作函数的实现
- [C++STDLib基础]关于C++string字符串的操作——C++标准库头文件<string>
- 黑马程序员_字符串操作总结
- 黑马程序员--Java基础--字符串常用操作(一)
- R语言学习笔记之<字符串操作>
- 黑马程序员,String类适用于描述字符串事物的。常见的操作有哪些?
- 黑马程序员——字符串各种操作
- 第13周 项目5-字符串操作(1)-<统计A的个数>
- 黑马程序员——字符串常见操作
- 黑马程序员_字符串各种操作
- 黑马程序员-OC中字符串的操作-NSString+NSMutableString+NSValue+NSAraay用法汇总
- 黑马程序员——字符串3:操作字符串的其他类
- 黑马程序员---操作字符串、封装基本数据
- Entity Framework 6 Recipes 2nd Edition(10-8)译 - >映射插入、修改、删除操作到存储过程
- C#操作字符串方法总结<转>
- 黑马程序员——Java基础-> String字符串
- 1 通过JNI混合使用Java和C++ -----> 操作字符串
- 黑马程序员_Java基础_字符串操作