String类、StringBuffer缓冲区、基本类型包装类
来源:互联网 发布:中华王电子烟 淘宝 编辑:程序博客网 时间:2024/05/29 14:30
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
一、String类
1.字符串时一个特殊的对象,字符串一旦被初始化,就不可以被改变;
(1)比较两种写法:
String s1="abc";
String s2 = new String("abc");
s1在内存中是一个对象;
s2在内存中是两个对象;new是一个对象,“abc”是一个对象
记住:String s2=new String() 等效于String s = ""; 不等效String s = null;
(2)比较三种结果
String s1="abc";
String s2 = new String("abc");
String s3="abc";
s1==s2; false 原因:s1、s2是两个对象
s1.equals(s2); true 原因:String类复写了Equals方法,该方法判断字符串是否相同
s1==s3; true 原因:建立s1对象后,又建立一个s3,发现常量池中,已经有abc字符串,为了节约内存,直接把S3的引用指向和s1同一个对象;
2.String类适用于描述字符串事物;
那么他就提供了多个方法对字符串进行操作;
常见的操作:
1.获取;
1.1 字符串中的包含的字符数,也就是字符串中的长度;
int length();获取长度;
1.2 根据位置获取位置上某个字符。
char charAt(int index);
1.3 根据字符获取该字符在字符串中的位置。
int indexOf(int ch);返回的是ch在字符串中第一次出现的位置。
int indexOf(int ch,int fromIndex)从fromIndex指定的位置开始;
int indexOf(String str)返回的是str在字符串中第一次出现的位置;
int indexOf(String str,int fromIndex)从fromIndex指定的位置开始;
int lastIndexOf(int ch) 反向查找;
2.判断;
2.1字符串中是否包含某一个子串;
boolean contains(str)
特殊之处:indexOf(str)可以索引str第一次出现位置,如果返回-1,表示该字符串中存在。所
以,也可以用于对指定判断是否包含。if(str.indexOf("a")!=-1),
而且该方法即可以判断,又可以获取出现的位置。
2.2字符串是否有内容;
boolean isEmpty();原理就是判断长度是否为零; "" 对象null 空
2.3字符串是否是以指定内容开头;
boolean startWith(str);
2.4字符串是否是以指定内容结束;
boolean endWith(str);
2.5判断字符串内容是否相同,复写了object类中的equals方法
boolean equals(str);
2.6判断内容是够相同,并忽略大小写;
boolean equalsIgnoreCase();
3.转换。
3.1将字符数组转成字符串;
构造函数:String(char[])
String(char[],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[] getByte();
3.5将基本数据类型转成字符串;、
static String ValueOf(int)
static String valeuOf(double)
//3+""//String.valueOf(3)
特殊:字符串和字节数组在转换过程中,是可以指定编码表的;
4.替换;
String replace(oldchar,newchar)
5. 切割
String[] split(regex)
6.子串 获取字符串中的一部分;
String subString(begin,end);
7.转换,去除空格,比较;
7.1将字符串转成大写或者小写;
String toUpperCase()
String toLowerCase()
7.2将字符串两端的多个空格去除;
String trim()
7.3将两个字符串进行自然顺序的比较;
int compareTo(String anotherString)
巧记:判断存在contains,获取位置indexof,根据位置获取字符charat。
练习1
package day05;/*2.将一个字符串反转,将字符串中指定部分进行反转,思路:1.曾经学习过对数组的元素的反转;2.将字符串编程数组;对数组进行反转3.将反转后的数组编程字符串4.只要将反转的部分的开始和结束为止作为参数传递即可**/public class StringTest{public static void sop(Object obj){System.out.println(obj);}public static String myTrim(String str){//定义两个变量。记录第一个不是空格的字符下标,和最后一个不是空格的字符下标int start=0;int end = str.length()-1;// 一个变量作为从头开始判断字符串空格的角标。不断++。while(start<end&&str.charAt(start)==' ')start++;//一个变量作为从尾开始判断字符串空格的角标。不断--。while(start<end&&str.charAt(end)==' ')end--;return str.substring(start,end+1);}public static void main(String[] args) {String str=" abc ";sop(myTrim(str));}}
练习2
package day05;/*2.将一个字符串反转,将字符串中指定部分进行反转,思路:1.曾经学习过对数组的元素的反转;2.将字符串编程数组;对数组进行反转3.将反转后的数组编程字符串4.只要将反转的部分的开始和结束为止作为参数传递即可**/public class StringTest2 {//反转字符串public static String reverseString(String str,int start,int end){char[] ch=str.toCharArray();reverseArr(ch,start,end);return new String(ch);}//反转字符串中的一部分public static String reverseString(String str){return reverseString(str,0,str.length()-1);}//反转字符数组public static void reverseArr(char[] ch,int x,int y){for(int start =x,end =y-1;start<end;start++,end--)//一般查数包含头不包含尾,所以end=y-1swap(ch,start,end);}//交换两个字符的位置public static void swap(char[] ch,int x,int y){//注意中间变量要用char类型char temp =ch[x];ch[x]=ch[y];ch[y]=temp;}public static void main(String[] args) {String str ="abcdie sl";System.out.println("反转全部字符串:"+reverseString(str));System.out.println("反转部分:"+reverseString(str,0,2));}}
练习3.
package day05;/** * 3.获取一个字符串在另一个字符串中出现的次数 "abkkdeddedkkskk" * 思路: 1.低估一个计数器; * 2.获取kk第一次出现的位置 * 3.从第一次出现位置后剩余的字符串继续获取kk出现的位置, 每获取一次计数器加1 * 4.当获取不到时,计数完成; */public class StringTest3 {public static int getSubCount(String str, String key) {int count=0;int index=0;while((index=str.indexOf(key))!=-1){//从第一次出现位置后剩余的字符串继续获取kk出现的位置, 每获取一次计数器加1str=str.substring(index+key.length());count++;}return count;}//方式二public static int getSubCount_2(String str, String key) {int count=0;int index=0;while((index=str.indexOf(key,index))!=-1){//int indexOf(String str,int fromIndex)从fromIndex指定的位置开始;//每次改变位置即可,不用取子串index=index+key.length();count++;}return count;}public static void main(String[] args) {String str="abkkdeddedkks";int i=getSubCount_2(str, "kk");System.out.println(i);}}
练习4
package day05;/*4.获取两个字符串中最大相同子串,第一个动作,将短的那个串进行长度递减的子串打印“abcwerthelloyuipodef”"cvhellohmn"*/public class StringTest4 {public static String getMaxSubString(String str1,String str2){String max="",min="";//判断两个字符串长度大小max=str1.length()>str2.length()?str1:str2;min=(max==str1)?str2:str1;/*1.将短的字符串按照长度递减的方式获取到2.将每获取的子串去长串中判断是否包含如果包含,就找到了*/for(int x=0;x<min.length();x++){ //长度减1,减1后的子串有多个; for(int y=0,z=str2.length()-x;z!=min.length()+1;y++,z++){String temp=str2.substring(y,z);if(max.contains(temp))return temp;}}return "";}public static void main(String[] arg){String str1="abcwerthelloyuipodef";String str2="cvhellohmn";System.out.println(getMaxSubString(str1, str2));}}
二、 StringBuffer
StringBuffer是字符串缓冲区,用于存储数据的容器。
1.特点:
(1).长度的可变的。
(2).可以存储不同类型数据。
(3).最终要转成字符串进行使用。
(4).可以对字符串进行修改。
2.既然是一个容器对象。应该具备什么功能呢?
(1)添加:
StringBuffer append(data);
StringBuffer insert(index,data);
(2)删除:
StringBuffer delete(start,end):包含头,不包含尾。
StringBuffer deleteCharAt(int index):删除指定位置的元素
(3)查找:
char charAt(index);
int indexOf(string);
int lastIndexOf(string);
(4)修改:
StringBuffer replace(start,end,string);
void setCharAt(index,char);
增删改查 C(create)U(update)R(read)D(delete)
(5)反转
StringBuffer reverse()
(6)将缓冲区中指定数据存储到指定字符数组中;
void getChar(int srcBegin,int srcEnd,char[] dst,int dsBegin)
2.jdk1.5以后出现了功能和StringBuffer一模一样的对象。就是StringBuilder
不同的是:
StringBuffer是线程同步的。通常用于多线程。
StringBuilder是线程不同步的。通常用于单线程。 它的出现提高效率。
jdk升级:
(1)简化书写。
(2)提高效率。
(3)增加安全性。
三、基本数据类型
1.基本数据类型包装类
Int integer
char Character
其他的基本数据类型的包装类只要将首字母大写即可。
2.作用:将基本数据类型封装成对象,可以将基本数据类型和字符串之间做转化。
(1)基本数据类型转化成字符串
方法一:基本数据类型+""
方法二:基本数据类型. toString(基本数据类型);
如:Integer.toString(21)//将21整数变成"34";
(2) 字符串转化成基本数据类型
xxx a = Xxx.parseXxx(string)
如:int a = Integer.parseInt("12");
(3)十进制转成其他进制
toBinaryString()
toHexString()
toOctalString()
(4)其他进制转成十进制
parseInt(String,radix)
如:Int a = Integer.ParseInt("3c",16)
(5) 自动装箱,拆箱
Integer x = new Integer(5);
等价于:Integer x = 5;//自动装箱,new Integer;
x = x+2;//x进行自动拆箱,变成了int类型,和2运算,再将和进行装箱赋给x
练习1.
package day05;/*"11 -5 20 -6 32 95 -3"要求对字符串中的数值进行排序。生成一个数值从小到大新字符串。思路:1、将字符串切割为字符串数组 2、将字符串数组转换为整数类型数组 3、对整数类型数组进行冒泡排序 4、将排序后的整数类型数组转换为字符串*/public class StringSort{public static void main(String[] args) {String s="11 -5 20 -6 32 95 -3";sop(s);sop(stringSort(s));}public static String stringSort(String s){//将字符串切割成字符串数组String[] str=s.split(" ");//将字符串数组转换为整数类型数组int[] arr=stringToInt(str);// 对整数类型数组进行冒泡排序bubbleSort(arr);//将排序后的整数类型数组转换为字符串return intToString(arr).toString();}// 将字符串数组转换为整数类型数组方法private static int[] stringToInt(String[] str){int[] arr=new int[str.length];for(int x=0;x<str.length;x++){arr[x]=Integer.parseInt(str[x]);}return arr;}//对数组进行冒泡排序private static void bubbleSort(int[] arr){for (int x=0;x<arr.length ;x++ ){for (int y=0;y<arr.length-x-1; y++){if(arr[y]>arr[y+1])swap(arr,y,y+1);}}}//交换数组中的两元素private static void swap(int[] arr,int x,int y){int temp=arr[x];arr[x]=arr[y];arr[y]=temp;}//将整数类型数组存放到一个StringBuiler容器中private static StringBuilder intToString(int[] arr){StringBuilder sb=new StringBuilder();for (int x=0;x<arr.length-1; x++){sb.append(arr[x]+" ");}sb.append(arr[arr.length-1]+"");return sb;}//打印字符串private static void sop(Object obj){System.out.println(obj);}//遍历数组private static void sop(int[] arr){for (int x=0; x<arr.length;x++ ){System.out.print(arr[x]+"\t");}System.out.println();}}
思考:、String和stringbuffer的区别?
String是字符串的类类型,用于描述字符串事物。字符串是一个特殊的对象。特殊之处就在于:
Stings= new String();和String s1=””;两种写法都是在创建对象,使用起来一样。
字符串最大的特点就是:一旦被初始化就不可以被改变。
StringBuffer是一个容器,字符串的组成原理就是通过该类实现的。StringBuffer可以对字符串内容进行增删改查等操作,很多方法和String相同。
- String类、StringBuffer缓冲区、基本类型包装类
- String、字符串缓冲区、基本数据类型包装类
- String类、StringBuffer、基本数据类型包装类
- day13(StringBuffer,Arrays,基本类型包装类)
- String&stringBuffer&包装类
- 常用API——String、StringBuffer与基本类型包装类
- String类,StringBuffer类,基本数据类型对象包装类总结
- 黑马程序员 --- String类 StringBuffer 基本数据类型对象包装类
- String,StringBuffer,StringBuilder,基本数据类型包装类,一小部分eclipse快捷键
- 黑马程序员_十 【String】【StringBuffer】【基本数据包装类】
- 黑马程序员--String、StringBuffer、基本数据类型包装类
- Java基础:String、StringBuffer、基本数据类型包装类
- 黑马程序员----String,StringBuffer和基本数据类型的包装类
- 基本类型包装类
- 基本数据类型、包装类、String类型之间的相互转换
- String和StringBuffer、包装类等
- 黑马程序员_字符串、字符串缓冲区和基本类型包装类
- Java学习日记(八)String类、StringBuffer类、基本数据类型对象包装类
- pdf 转换成word,最大10M
- jQuery源码分析系列
- 设计模式之(Strategy)策略模式
- String.split
- 设计模式之(Observer)观察者模式
- String类、StringBuffer缓冲区、基本类型包装类
- Host SMBus controller not enabled的解决方法
- 软工学习——文档总结(二)
- php smtp协议发邮件
- 32位汇编语言学习笔记(3)--leal和算术运算指令
- EL表达式语言
- C和指针(2)语句、操作符和表达式
- 推荐一个可以学习个人网站搭建的网站
- 人生是一个忙碌的舞台,以怎样的心态去演绎,才能收到最好的效果