黑马程序员 java学习笔记——String类(包含StringBuffer和StringBuilder)
来源:互联网 发布:工业软件具体是什么 编辑:程序博客网 时间:2024/05/16 12:07
---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ----------------------
String类的概述
在java程序开发当中,有一些常用的对象被java封装成了对象,比如字符串。
字符串是一个特殊的对象。
字符串一旦初始化就不可以被改变。示例代码如下:public class String1 {public static void main(String[] args){String s1="abc";//s1是一个类类型变量,"abc"是一个对象//字符串最大特点:一旦被初始化就不可以被改变。String s2=new String("abc");//s1和s2的区别在于:s1在内存中有一个对象,而s2在内存中有两个对象System.out.println(s1==s2);//falseSystem.out.println(s1.equals(s2));//true//String类复写了Object类的equals方法//该方法判断两个字符串是否相同。String s3="abc";System.out.println(s1==s3);//true}}
String类的常见功能
为了方便展示,说明文字在代码之内。一、获取
/* * String类的常见操作 * 1、获取 * 1.1 字符串中包含的字符数,也就是字符串的长度 * int length() * 1.2 根据位置获取该位置上的字符 * char charAt(int index) * 1.2 根据字符获取该字符在字符串中位置。 * int indexOf(int ch) * int indexOf(int ch,int fromIndex) * int indexOf(String str) * int indexOf(String str,int fromIndex) * int lastIndexOf(int ch) * int lastIndexOf(int ch,int fromIndex) * int lastIndexOf(String str) * int lastIndexOf(String str,int fromIndex) * * */public class String2 {public static void main(String[] args){method_1();}public static void method_1(){String str="abcdefabcdef";//获取字符串的长度sop(str.length());//12//根据索引获取字符sop(str.charAt(3));//d//根据字符获取索引sop(str.indexOf('d'));//3sop(str.indexOf('d',6));//9sop(str.indexOf('m'));//-1//反向索引一个字符串出现的位置sop(str.lastIndexOf("b"));//7}public static void sop(Object obj){System.out.println(obj);}}二、判断
/* * String类的常见操作 * 2、判断 * 2.1 字符串中是否包含某一个子串 * boolean contains(CharSequence s) * 2.2 字符串中是否有内容 * boolean isEmpty():原理就是判断长度是否为0 * 2.3 字符串是否以指定内容开头 * boolean startsWith(String prefix) * 2.3 字符串是否以指定内容结尾 * boolean endsWith(String siffix) * 2.4 判断字符串内容是否相同,复写了Object类中的equals方法 * boolean equals(String str) * 2.5 判断内容是否相同,并忽略大小写 * boolean equalsIgnoreCase(String str) * */public class String3 {public static void main(String[] args){method_1();}public static void method_1(){String str="StringDemo.java";//判断文件名称中是否是以String单词开始sop(str.startsWith("String"));//true//判断文件名称是否以.java结尾sop(str.endsWith(".java"));//true//判断文件是否包含Demosop(str.contains("Demo"));//true//判断两个字符串是否相同sop(str.equals("String.java"));//false//判断两个字符串是否相同,并忽略大小写。sop(str.equals("stringdemo.java"));//true}public static void sop(Object obj){System.out.println(obj);}}三、转换
/* * String类的常用操作 * 3、转换 * 3.1 将字符数组转成字符串。 * 构造函数:String(char[]) * 构造函数:String(char[] ,offset,count) * 静态方法:static String copyValueOf(char[] data); * static String copyValueOf(char[] data,int offset,int count) * static String valueOf(char[]) * static String valueOf(char[] data,int offset,int count) * 3.2 将字符串转成字符数组。 * char[] toCharArray() * 3.3 将字节数组转成字符串 * 构造方法:String(byte[] bytes) * String(byte[] byges,int offset,int length) * …… * 3.4 将字符串专程字节数组 *byte[] getBytes() *3.5 将基本数据类型转换成字符串 *static String valueOf(int i) *static String valueOf(double d) *…… * */public class String4 {public static void main(String[] args){method_1();}public static void method_1(){char[] arr={'a','b','c','d','e','f','g','h'};//将字符数组转换成字符串String s=new String(arr,1,3);//bcdsop("s="+s);String str="hellojava";//将字符串转换成字符数组char[] chs=str.toCharArray();for(char ch:chs){sop(ch);}}public static void sop(Object obj){System.out.println(obj);}}四、切割,替换,子串
/* * String类的常见操作 * 4、替换 * String replace(char oldchar,char newchar) * String replaceAll(String regex,String replacement) * String replaceFirst(String regex,String replacement) * 5、切割 * String[] split(regex) * 6、子串 * String substring(int beginIndex) * String substring(int beginIndex,int endIndex) * */public class String5 {public static void main(String[] args){method_1();method_2();method_3();}public static void method_1(){String str="abcb";String st=str.replace('b','o');sop(str);//abcd//从这个输出也可看出字符串的一个特点,一旦创建就不可改变。sop(st);//aobo}public static void method_2(){String str="zhangsan,lisi,wangwu";String[] arr=str.split(",");for(int i=0;i<arr.length;i++){sop(arr[i]);}}public static void method_3(){String str="abcdef";//获取子串,包含头不包含尾String st=str.substring(0,3);sop(st);//abc}public static void sop(Object obj){System.out.println(obj);}}五、转换,去除空格,比较
/* * String类的常见操作 * 7、转换,去除空格,比较 * 7.1 将字符串专程大写或小写 * String toUpperCase() * String toLowerCase() * 7.2 将字符串两端的多个空格去除 * String trim() * 7.3 对两个字符串进行自然顺序的比较。 * int compareTo(String str); * */public class String6 {public static void main(String[] args){method_1();method_2();}public static void method_1(){String str="Hello Java";//将字符串转换成大写格式sop(str.toUpperCase());//HELLO JAVA//将字符串转换成小写格式sop(str.toLowerCase());//hello java}public static void method_2(){String str=" ab cd ";sop(str.trim());//ab cd}public static void sop(Object obj){System.out.println(obj);}}
String类的练习
一、实现去除字符串两端空格的功能,也就是trim方法的功能/* * 需求:自定义一个去除字符串前后端空格的方法。 * * 思路: * 1、判断字符串第一个位置是否是空格,如果是,继续向下判断,直到不是空格为止,结尾处也是如此。 * 2、当开始和结尾都判断到不是空格时,就是要获取的字符串。 * */public class String7 {public static void main(String[] args){String str=" abcd ";String st=myTrim(str);sop(st);//abcd}/* * 去除字符串前后端的空格 * @param str 接收一个字符串 * @return 返回值类型为String * */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);}public static void sop(Object obj){System.out.println(obj);}}
二、将字符串翻转,将字符串的部分进行反转/* * 需求:①将一个字符串进行翻转 * ②将字符串中指定部分进行反转 * 思路: * 1、将字符串变成数组,对数组反转 * 2、将反转后的数组变成字符串。 * 3、只要将需要反转的部分的开始和结束为止作为参数传递即可。 * */public class String8 {public static void main(String[] args){String str="123456";String st=reverseString(str);System.out.println(st);}//反转字符串的重载形式。public static String reverseString(String s){return reverseString(s,0,s.length());}public static String reverseString(String s,int start,int end){//字符串变成数组char[] chs=s.toCharArray();//反转数组reverse(chs,start,end);//将数组变成字符串return new String(chs);}public static void reverse(char[] arr,int start,int end){for(int i=start,j=end-1;i<j;i++,j--){swap(arr,i,j);}}public static void swap(char[] arr,int start,int end){char temp=arr[start];arr[start]=arr[end];arr[end]=temp;}}
三、获取一个字符串在另一个字符串中出现的次数/* * 需求:获取一个字符串在另一个字符串中出现的次数 * “abkkcdkkefkkskk” * 思路: * 1、定义一个计数器 * 2、获取kk第一次出现的位置 * 3、从第一次出现位置后剩余的字符串中积蓄获取key出现的位置 * 每获取一次就计数一次。 * 4、当获取不到时,计数完成。 * */public class String9 {public static void main(String[] args){String str="abkkcdkkefkkskk";System.out.println(method_1(str,"kk"));//4}/* * 获取子串出现的次数 * @param str,key 接受两个字符串 * @return 返回一个int型值。 * */public static int method_1(String str,String key){int count=0;int index=0;while((index=str.indexOf(key,index))!=-1){index=index+key.length();count++;}return count;}}
四、获取两个子串的最大相同子串/* * 需求:获取两个字符串最大相同子串。 * 思路: * 1、将短的字符串按照长度递减的方式获取到。 * 2、将每次获取到的子串到长串中判断是否包含,如果包含返回。 * */public class String10 {public static void main(String[] args){String s1="abcwerthelloyuiodef";String s2="cvhellobonm";String str=method_1(s1,s2);System.out.println(str);//hello}public static String method_1(String s1,String s2){String max="",min="";max=(s1.length()>s2.length())?s1:s2;min=(max==s1)?s2:s1;for(int i=0;i<min.length();i++){for(int j=0,k=min.length()-i;k!=min.length();j++,k++){String temp=min.substring(j,k);if(max.contains(temp))return temp;}}return null;}}
StringBuffer类
概述
StringBuffer是字符串缓冲区,是一个容器特点
① 长度可变
② 可操作多种数据类型
③ 最终会通过toString方法变成字符串。StringBuffer的方法
增添
1、将基本数据类型添加到已有数据结尾处
StringBuffer append()
2、在指定位置插入数据
StringBuffer insert(index,数据)示例代码如下:
class StringBufferDemo{public static void main(String[] args){StringBuffer sb=new StringBuffer();sb.append(true).append(92625).append("adjflakjild");sop(sb);sb.insert(5,"ppppp").insert(10,"zz");sop(sb);}public static void sop(Object obj){System.out.println(obj);}}删除
1.删除缓冲区中的数据,包含头不包含尾
StringBuffer delete(int start,int end)
2.删除指定位置上的字符
StringBuffer deleteCharAt(int index)示例代码如下:
class StringBufferDemo{public static void main(String[] args){StringBuffer sb=new StringBuffer("0123456789");sb.delete(5,9);sop(sb);sb.deleteCharAt(1);sop(sb);}public static void sop(Object obj){System.out.println(obj);}}获取
1、获取指定位置上的字符
char charAt(int index)
2、根据字符串获取位置
int indexOf(String str)
int indexOf(String str,int fromIndex)
int lastIndexOf(String str)
int lastIndexOf(String str,int fromIndex)修改
1、替换字符串
StringBuffer replace(int start,int end,String str)
2、替换指定位置上的字符
void setCharAt(int index,char ch)示例代码如下:
class StringBufferDemo{public static void main(String[] args){StringBuilder sb=new StringBuilder();sb.append("abcdefg");sb.replace(1,3,"zzzzzzz");sop(sb);sb.setCharAt(0,'o');sop(sb);}public static void sop(Object obj){System.out.println(obj);}}获取数组
void getChars(int srcBegin,int srcEnd,char[] dst,int dstBegin)示例代码如下:class StringBufferDemo{public static void main(String[] args){StringBuilder sb=new StringBuilder();sb.append("abcdefghijkl");char chs[]=new char[5];sb.getChars(0,4,chs,0);//如果sreEnd大于数组chs的长度,会报ArrayIndexOutOfBoundsException异常for(int i=0;i<chs.length;i++){sop("chs["+i+"]="+chs[i]+";");}}public static void sop(Object obj){System.out.println(obj);}}
StringBuilder类
JDK1.5之后出现StringBuilder
StringBuffer是线程同步的,由于加锁,效率较低。
StringBuilder是线程不同步的,适用单线程,用于多线程不安全。
单线程情况下,建议使用StringBuilder可以提高效率,若果需要同步的话可以自己加锁。
java升级三要素
1、提高效率。
2、简化书写。
3、提高安全性。
基本数据类型与其包装类
基本数据类型与其对应的包装类如下:byte————Byte
short————Short
long————Long
int—————Integer
boolean——Boolean
float————Float
double———Double
char————CharacterPS:有一点需要格外注意,String类并不是基本数据类型,也不是包装类。基本数据类型对象包装类的最常见作用,就是用于基本数据类型和字符串类型做转换。下面以Integer类作为例子,进行学习。
① 基本数据类型转换成字符串
toString()
② 字符串转换成基本数据类型
static int parseInt(String s)
static int parseInt(String s,int radix):按照指定进制,将字符串转换成int基本数据类型
③进制转换
十进制转成其他进制
static String toBinaryString(int i)
static String toOctalString(int i)
static String toHexString(int i)
其他进制转成十进制
static int parseInt(String s,int radix)示例代码如下:
class StringDemo{public static void main(String[] args){sop(Integer.toBinaryString(60));//十进制转换成二进制//111100sop(Integer.toHexString(60));//十进制转换成16进制//3csop(Integer.toOctalString(60));//十进制转换成8进制//74sop(Integer.parseInt("110",2));//二进制转换成十进制//6sop(Integer.parseInt("110",8));//八进制转换成十进制//72sop(Integer.parseInt("110",16));//十六进制转换成十进制//272}public static void sop(Object obj){System.out.println(obj);}}
---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ----------------------
0 0
- 黑马程序员 java学习笔记——String类(包含StringBuffer和StringBuilder)
- 黑马程序员—Java基础学习笔记之String&&StringBuffer&&StringBuilder
- 黑马程序员-String、StringBuffer、StringBuilder类-笔记
- 黑马程序员——Java基础——String类、StringBuffer和StringBuilder
- (五)黑马程序员——Java中的字符串操作类(String、StringBuilder、StringBuffer)
- 黑马程序员——java-几个常用的类(Object,Scanner,String,StringBuffer/StringBuilder)
- 黑马程序员—String、StringBuffer、StringBuilder
- (黑马程序员)学习笔记,StringBuffer和StringBuilder
- 【Java学习笔记】String、StringBuffer和StringBuilder
- 黑马程序员——java中String、StringBuffer、StringBuilder学习总结
- 黑马程序员——JAVA练习——String、StringBuffer和StringBuilder
- 黑马程序员-Java中只读类String和StringBuffer、StringBuilder类)
- 黑马程序员java基础String、StringBuffer、StringBuilder笔记
- 黑马程序员-Java基础-String和StringBuffer学习笔记
- 黑马程序员——基础学习(九)String的实际案例及StringBuffer/StringBuilder
- 黑马程序员——Java String、StringBuffer、StringBuilder、基本数据类型对象包装类
- 黑马程序员--------java String、StringBuffer、StringBuilder
- 黑马程序员-String、StringBuffer和StringBuilder
- C++11(及现代C++风格)和快速迭代式开发
- cmd.exe简单指令
- 英数字输入规则等
- (字母二叉树) B - Falling Leaves(10.1.2))
- hdu1515
- 黑马程序员 java学习笔记——String类(包含StringBuffer和StringBuilder)
- python c/s 聊天
- 费用报销过程中可能出现的问题
- iOS开发控件之UISegmentedControl:基本属性与自定义
- 使用libcurl下载网络数据存储到数据库(使用libcurl和sqlite数据库)
- 原型设计工具的对比评测记录(一)
- istringstream用法
- CSDN 排名第2,3,6的 大神
- c++中void应用