黑马程序员:String类和StringBuffer类
2014-01-26 22:04
323 查看
Java语言除了基本类型之外的变量类型都是引用类型。
引用是得到对象的一种方式,是对象的地址,可以理解为简化的指针,但引用屏蔽了一些指针的基本操作,例如++ -- * ,防止程序员直接对地址进行操作。
Java中对象就是通过引用操作的。
java.lang.String类代表不可变的字符序列(使用lang包里的东西,不需要引用lang包)
StringBuffer与String
StringBuffer和String类似,但StringBuffer可以对字符串对象进行修改
当修改时,不用另在堆里开内存,而是在原来的内存里添加修改的东西,StringBuffer是线程安全的。
引用是得到对象的一种方式,是对象的地址,可以理解为简化的指针,但引用屏蔽了一些指针的基本操作,例如++ -- * ,防止程序员直接对地址进行操作。
Java中对象就是通过引用操作的。
java.lang.String类代表不可变的字符序列(使用lang包里的东西,不需要引用lang包)
class StringDemo { 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); System.out.println(s1.equals(s2));//String类复写了Object类中的equals方法,该方法用于判断字符串是否相同 } }
/* String类适用于描述字符串事物,那么它提供了多个方法对字符串进行操作 常见的有:“abcd” 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指定位置开始,获取ch在字符串中出现的位置。 int indexOf(int str);返回的是str在字符串中第一次出现的位置。 int indexOf(int str,int fromIndex):从fromIndex指定位置开始,获取str在字符串中出现的位置。 int lastIndexOf(int ch); 2、判断 2.1字符串是否包含某一个子串 boolean contains(str); 特殊之处:indexOf(str):可以索引str第一次出现位置,如果返回-1,表示该str步骤字符串中存在, 所以,也可以用于对指定判断是否包含。 if(str.indexOf("aaaa")!=-1) 该方法既可以判断又可以判断获取出现的位置。 2.2字符中是否有内容 boolean isEmpty();原来是判断字符串长度是否为0 2.3字符串是否是以指定内容开头 boolean startswith(str); 2.4字符串是否是以指定内容结尾 boolean endswith(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[] getBytes(); 3.5将基本数据类型转成字符串 static String valueOf(int) static String valueOf(double) //3+"";//String.valueOf(3); 特殊:字符串和字节数组在转换过程中,是可以指定编码表的。 4.替换 String replace(oldchar,newchar); 5.切割 String[].split(regex); 6.子串,获取字符串中的一部分 String substring(begin); String substring(begin,end); 7.转换、去除空格、比较 7.1将字符串转成大写或小写 String toUpperCase(); String toLowerCase(); 7.2将字符串两端的多个空格去除 String trim(); 7.3对两个字符串进行自然顺序的比较 int compareTo(string); */ class StringMethodDemo { public static void method_7() { String s=" jfkjd jdkfj fjd "; sop(s.toLowerCase()); sop(s.toUpperCase()); sop(s.trim()); String s1="abc"; String s2="aaa"; sop(s.compareTo(s2)); } public static void method_sub() { String s="abcdefgh"; sop(s.substring(2));//从指定位置到结尾.如果角标不存在,会出现字符串角标越界异常 sop(s.substring(2,5));//包含头,不包含尾 //获取整个字符串s.substring(0,s.length()); } public static void method_split() { String s="jdfa,fjkads,irj"; String[] arr=s.split(","); for(int x=0;x<arr.length;x++) { sop(arr[x]); } } public static void method_replace() { String s="hello world"; // String s1=s.replace('e','g');//如果要替换的字符不存在,返回的还是原字符串 String s1=s.replace("world","java"); sop("s="+s); sop("s="+s1); } public static void method_trans() { char[] arr={'a','b','c','d','e'}; String s=new String(arr); sop("s="+s); String s1="afagags"; char[] chs=s1.toCharArray(); for(int x=0;x<chs.length;x++) { sop("ch="+chs[x]); } } public static void method_is() { String str="ArratDemo.java"; sop(str.startswith("Array"));//判断文件名称是否是Array单词开头 sop(str.endswith(".java"));//判断文件名称是否是.java的文件 sop(str.contains("Demo"));//判断文件名中是否包含Demo public static void method_get() { String str="afgdfgff"; //长度 sop(str.length()); //根据索引获取字符 sop(str.charAt(4));//当访问到字符串中不存在的角标时会发生SrringIndexOutOfBoundsException。 //根据字符获取索引 sop(str.indexOf('f',2));//如果没有找到,返回值为-1 //反向索引一个字符出现位置 sop(str.lastIndexOf("a")); // System.out.println(str.length()); } public static void main(String[] args) { method_7(); // method_sub(); // method_split(); // method_replace(); // method_trans(); // method_is(); // method_get(); // String s1="abc"; // String s2=new String("abc"); // String s3="abc"; // System.out.println(s1==s2); // System.out.println(s2==s3); } public static void sop(Object obj) { System.out.println(obj); } }
StringBuffer与String
StringBuffer和String类似,但StringBuffer可以对字符串对象进行修改
当修改时,不用另在堆里开内存,而是在原来的内存里添加修改的东西,StringBuffer是线程安全的。
/* StringBuffer是字符串缓冲区,是一个容器, 特点:1.而且长度是可变化的2.可以字节操作多个数据类型3.最终会通过toString方法变成字符串 C create U update R read D delete 1.存储 StringBuffer append():将指定数据作为参数添加到已有数据结尾处 StringBuffer insert(index,数据);可以将数据插入到指定位置 2.删除 StringBuffer delete(start,end);删除缓冲区中的数据,包含start,不包含end StringBuffer deleteCharAt(index);删除指定位置的字符 3.获取 char charAt(int index) int indexOf(String str) int lastIndexOf(String str) int length() String substring(int start,int end) 4.修改 StringBuffer re 9354 place(start,end,string); void setCharAt(int index,char ch); 5.反转 StringBuffer reverse(); 6.void getChars(int srcBegin,int srcEnd,char[] dst,int dstBegin) JDK1.5版本之后出现了StringBuilder StringBuffer是线程同步的(多线程),StringBuilder是线程不同步的(单线程)。 建议使用StringBuilder 升级三个因素 1.提高效率 2.简化书写 3.提高安全性 */ class StringBufferDemo { public static void main(String[] args) { // method_delete(); // method_update(); StringBuffer sb=new StringBuffer("fafafdfgd"); char[] chs=new char[9]; sb.getChars(2,4,chs,1); for(int i=0;i<chs.length;i++) { sop("chs["+i+"]="+chs[i]+";"); } public static void method_update() { StringBuffer sb=new StringBuffer("jgfdgsdfm"); // sb.replace(1,4,"java");//将角标1-4替换成java sb.setCharAt(2,'k');//将角标为2的字母替换成k sop(sb.toString()); } public static void method_delete() { StringBuffer sb=new StringBuffer("affgfg"); // sb.delete(1,3); //清空缓冲区 // sb.delete(0,sb.length());//删除所有 // sb.delete(2,4);//删除某一个2-4 sb.deleteCharAt(2); sop(sb.toString()); } public static void method_add() { StringBuffer sb=new StringBuffer(); sb.append("abc").append(true).append(34);//方法调用链 // StringBuffer sb1=sb.append(34); sb.insert(1,"qq"); sop(sb.toString());//abctrue34 // sop(sb1.toString()); } public static void sop(String str) { System.out.println(str); } }
相关文章推荐
- 黑马程序员:String类和StringBuffer类的总结
- 黑马程序员-----String类和StringBuffer类总结
- 黑马程序员_Java面对对象——String类和StringBuffer类
- 黑马程序员————Java基础之String类与StringBuffer类
- 黑马程序员_学习日记五_String类、StringBuffer类、基本数据包装类
- 黑马程序员 Java面向对象——String类 StringBuffer类 StringBuiler类
- 黑马程序员——Java常用类笔记(上)【Object类/Scanner类、String类/StringBuffer类、包装类】
- 黑马程序员—JAVA基础—String类、StringBuffer类
- 黑马程序员--String类和StringBuffer类
- 黑马程序员——String类和StringBuffer类
- 黑马程序员--- 字符串的重要性, String类的定义方法, StringBuffer类的构造方法
- 黑马程序员_面向对象3_(异常Exception、包package、String类、StringBuffer类)
- 黑马程序员——Java基础---常用类--Object类,Scanner类,String类,StringBuffer类,StringBuilder类
- 黑马程序员_String类 StringBuffer类
- 黑马程序员_day016_String类和StringBuffer类
- 黑马程序员------毕老师视频笔记第13-17天------JavaAPI(String类、StringBuffer类)(1)
- 黑马程序员------毕老师视频笔记第13-17天------JavaAPI(String类、StringBuffer类)(2)
- 黑马程序员——Java基础——String类、StringBuffer类、StringBuilder类、基本数据类型对象包装类操作、正则表达式应用
- JAVA中String类和StringBuffer类的…
- 比较String类和StringBuffer类