String 与StringBuffer类
1.String类是不可变字符类,一个对象初始化并且赋值以后,存的值就是固定的了,所以不能直接对里面的字符串进行增删改查,只能将值从内存中取出来。
2.StringBuffer类是可变字符,可以对对象内存的字符串直接进行增删插查等操作,但是声明时候要以标准类的初始化方法构造。
String 常用方法实例.
1.常用方法实例
//1.String是不可变字符 //2.String常用构造方法 //3.String常用方法 package me.string; public class TestString{ public static void main(String[] args){ String s1="Java"; String s2="Java"; String s3="new"; System.out.println(s1==s2);//输出true //因为“Java”分配在常量值,而s1直接指向常量值的Java,JVM做了优化,如果常量池有Java直接s2也指向它 String s4=new String("Java"); String s5=new String("Java"); System.out.println(s4==s5);//输入false,没有指向同一个内存地址 System.out.println(s4.equals(s5));//true //equal()是Object方法,当时String类已经复写,判断依据是存储的字符串是否一样 String s6="Hello Java ,I am a Coder"; //探测是否为空的方法 System.out.println(s6.isEmpty());//输出false //查找有Java这个字符的第一个位置 System.out.println(s6.indexOf("Java"));//输出6 //返回长度的方法 System.out.println(s6.length()); //替换字符方法 String s7=s6.replace(" ","_");//返回替换操作后的字符串 System.out.println(s6);//Hello Java ,I am a Coder System.out.println(s7);//Hello_Java_,I_am_a_Coder //替换字符串中的所有某个字符 String s8=s6.replace("a","*"); System.out.println(s8);// Hello J*v* ,I *m * Coder String s9=s6.replaceAll("a","X"); System.out.println(s9);// Hello JXvX ,I Xm X Coder //判断是否十一某个单词开头的字符串 System.out.println(s6.startsWith("Hello"));// true //静态方法,直接以字符串形式返回输入的 System.out.println(String.valueOf("value"));// value System.out.println(String.valueOf(999));//999 }
package me.string; public class TestString{ public static void main(String[] args){ //求数字长度的方法 int i1 =14565454; String s1=String.valueOf(i1); System.out.println(i1); System.out.println("i1的长度为 "+s1.length()); //以空格为条件 拆分子串 String s2="i am super Man"; //按照空格分割,返回字符串数组 String[] ss=s2.split(" "); for(int i=0;i<ss.length;i++){ System.out.println(ss[i]); } /*输出: 14565454 i1的长度为 8 i am super Man */// } }
2.编写一个程序,输出字符串中大写英文字母个数,小写英文字母个数,非英文字母个数
//1.2.编写一个程序,输出字符串中大写英文字母个数,小写英文字母个数,非英文字母个数 package me.string; public class TestString{ public static void main(String[] args){ //法一:用toCharArray()转成字符数组 String s1="Az1df a d adjf ladDJL FAK jdd33uo o DJd"; char[] coco=s1.toCharArray(); int lowercase=0; int uppercase=0; int others=0; for(int i =0;i<coco.length;i++){ //System.out.println(coco[i]); if(( 'A'<=coco[i]) &&(coco[i]<='Z')){ uppercase++; } else if(('a'<=coco[i]) &&(coco[i]<='z')){ lowercase++; } else{ others++; } } System.out.println("uppercase "+uppercase); System.out.println("lowercase "+lowercase); System.out.println("others "+others); /*输出 uppercase 9 lowercase 19 others 11 */ //法二: 用charAt()拿出字符比较 lowercase=0; uppercase=0; others=0; char temp; for(int i =0;i<s1.length();i++){ temp=s1.charAt(i); if(( 'A'<=temp) &&(temp<='Z')){ uppercase++; } else if(('a'<=temp) &&(temp<='z')){ lowercase++; } else{ others++; } } System.out.println("uppercase "+uppercase); System.out.println("lowercase "+lowercase); System.out.println("others "+others); /*输出 uppercase 9 lowercase 19 others 11 *///这个方法效率比较高 //方法三:用indexOf()查找 lowercase=0; uppercase=0; others=0; char the; String sU="ABCDEFGHIJKLMNOPQRSTUVWXYZ"; String sL=sU.toLowerCase(); //查需每个提出来的额字符再不在大小写表里面,在的话就计数 for(int i = 0;i < s1.length();i++){ the =s1.charAt(i); //indexOf(参数)默认返回第一个字符位置,找不倒返回 -1 if(sU.indexOf(the) != -1){ uppercase++; } else if (sL.indexOf(the) != -1){ lowercase++; } else{ others++; } } System.out.println("uppercase "+uppercase); System.out.println("lowercase "+lowercase); System.out.println("others "+others); /*输出 uppercase 9 lowercase 19 others 11 *///用法三结合了 charAt(位置参数) indexOf(查找字符参数) //方法四:用Character.isLowerCase()方法!!! lowercase=0; uppercase=0; others=0; for(int i = 0;i < s1.length();i++){ //Character.isLowerCase()可以判断是否为大或小写 if(Character.isLowerCase( s1.charAt(i) ) ){ lowercase++; } else if (Character.isUpperCase( s1.charAt(i) )){ uppercase++; } else{ others++; } } System.out.println("uppercase "+uppercase); System.out.println("lowercase "+lowercase); System.out.println("others "+others); /*输出 uppercase 9 lowercase 19 others 11 */// } }
2.编写一个程序,输出一个字符串中,某个字符串出现的次数
//2.编写一个程序,输出一个字符串中,某个字符串出现的次数 package me.string; public class TestString{ public static void main(String[] args){ //方法一:用Split()拆分 String s1="javadkfjkaldjfoejekajfavjavaajfavajavajldkfjaojfava45df4 a4f"; // 创建数组记录按java拆分好的 String[] s2=s1.split("java"); //如果有1个java 就拆成2个,2个就拆成3个数组..依次~~ int number=s2.length-1; System.out.println("有 "+ number +" 个 java"); //用indexOf()找到第一个位置,然后在用用split } }
StringBuffer 方法实例.
//1.StringBuffer类为可变字符 //2.StringBuffer可以对字符串进行修改 //3.String对象和 StringBuffer类 实现 s1=s1+s2;内存实现不同 //4.StringBuffer 的增加 删除 插入功能 package me.stringbuffer; public class TestStringBuffer{ public static void main(String[] args){ //1.String StringBuffer实现字符串拼接 String s1="Hello"; String s2=" Java"; s1=s1+s2; System.out.println(s1); /*输出: Hello Java *///因为String是不可变字符串,所以这个操作先取出 s1,s2原内存中的值,然后放入新内存区域实现拼接 //StringBuffer ss1="Hello ";//编译错误,不能这样初始化 StringBuffer ss1=new StringBuffer("Hello "); //StringBuffer ss2="Java"; StringBuffer ss2=new StringBuffer("Java"); //ss1=ss1+ss2;编译错误,不能这样操作 System.out.println(ss1);//输出Hello //这个方法实现在ss1后面拼接如ss2 ss1.append(ss2); ss2.append("/").append("me").append("/").append("code"); /*由于append方法返回对象,所以可以进一步又调用方法*/ System.out.println(ss1);//Hello Java System.out.println(ss2);//Java/me/code //2.用StringBuffer删除 StringBuffer ss3=new StringBuffer("abcdefg"); ss3.delete(0,3); System.out.println(ss3);//defg //3.插入功能 ss3.insert(0,"xxxx"); System.out.println(ss3);//xxxxdefg //4.字符串反转功能 ss3.reverse(); System.out.println(ss3);//gfedxxxx } }
作者:YangGan
出处:http://blog.csdn.net/incyanggan
本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名Yanggan(包含链接).