黑马程序员-->10_字符串操作
来源:互联网 发布:上海潘多网络 编辑:程序博客网 时间:2024/06/04 23:34
一、边界问题(面试题)
程序一
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_字符串操作
- 黑马程序员-->10_字符串操作
- 黑马程序员_字符串各种操作
- 黑马程序员_Java基础_字符串操作
- 黑马程序员_字符串操作总结
- 黑马程序员_字符串
- 黑马程序员_字符串
- 黑马程序员_字符串
- 黑马程序员_字符串
- 黑马程序员_字符串
- 黑马程序员_字符串
- 黑马程序员_字符串
- 黑马程序员_字符串数据的操作概述
- 黑马程序员_字符串String
- 黑马程序员_字符串类
- 黑马程序员_字符串处理
- 黑马程序员_字符串缓冲区
- 黑马程序员_.NET字符串
- rwytffrfyuhjkljgd
- uwefuhjhgjgllhdfjkhljfgbgfknjsdg
- Android学习系列(1)--为App签名(为apk签名)
- Java中HashMap遍历的两种方式
- hiho一下 第三周 Hiocoder #1015 : KMP算法
- 黑马程序员-->10_字符串操作
- Android学习系列(2)--App自动更新之通知栏下载
- Android学习系列(3)--App自动更新之自定义进度视图和内部存储
- 黑马程序员-->11_反射和枚举(Reflect & Enum)
- Eclipse ADT 运行 cocos2dx 程序 .解决 avd 上黑屏的问题
- WEB前端开发学习----3.HTML表单form标签
- 「长」length //文本长度 20140803 ①文本处理
- 关于MD5加密与解密
- 关于MD5加密与解密