第十二章 JAVA中的字符串及常用方法
2017-04-13 01:37
435 查看
第一节 什么是JAVA中的字符串
在JAVA中,字符串被作为String类型的对象来处理,String类位于java.lang包中,默认情况下该包被自动导入左右的程序。创建String对象的方法:
String s1="imooc";//创建一个字符串对象“imooc”为s1引用 String s2=new String();//创建一个空字符串对象为s2引用 String s3=new String("imooc");//创建一个字符串对象“imooc”为s3引用
每次new即代表是一个新的对象。
第二节 JAVA中字符串的不变性
String对象创建后不能被修改,是不可变的。所谓的修改其实是创建了新的对象,所指向的内存空间不同。String s1="爱慕课"; String s2="爱慕课";//多次出现的字符常量,JAVA编译程序只创建一个。 String s3=new String("爱慕课"); String s4=new String("爱慕课"); s1==s2;true,两者的引用指向同一个对象。 s1==s3;false,两者是不同的对象。 s3==s4;false,两者是不同的对象。 s1="欢迎来到"+s1;字符串s1修改,指向新的内存空间。
需要了解的是:
1.在创建s1字符串时,声明了一个字符串对象, s1存放了到字符串对象的引用,然后通过s1=”欢迎来到”+s1;改变了字符串s1,其实质是创建了新的字符串对象,变量s1指向了新创建的字符串对象。
2.一旦一个字符串在内存中创建,则这个字符串将不可改变,如果需要一个可以改变的字符串,我们可以使用StringBuffer或者StringBuilder。
3.每次new一个字符串就是产生一个新的对象,即便两个字符串的内容相同,使用“==”比较时也为false,如果只需比较内容是否相同,应该使用equals()方法。
第三节 JAVA中String类的常用方法 I
String类提供了很多用来处理字符串的方法,如获取字符串长度,或者对字符串进行截取、将字符串转换为大写或者小写、字符串分割等,下面的方法中的类型一般代表数据类型,使用时是 方法.length() 这样使用方法 | 说明 |
---|---|
int length() | 返回当前字符串的长度 |
int indexOf(ch) | 查找ch字符在该字符串中第一次出现的位置 |
int indexOf(String str) | 查找str字符串在该字符串中第一次出现的位置 |
int lastIndexOf(int ch) | 查找ch字符在该字符串中最后一次出现的位置 |
int lastIndexOf(String str) | 查找str字符串在该字符串中最后一次出现的位置 |
String substring(int beginIndex) | 获取从beginIndex位置开始到结束的子字符串 |
String substring(int beginIndex,int endIndex) | 获取从beginIndex位置开始到endIndex的子字符串 |
String trim() | 返回去除了前后空格的字符串 |
boolean equals(Object obj) | 将该字符串与指定对象比较,返回true或false |
String toLowerCase() | 将字符串转换为小写 |
String toUpperCase() | 将字符串转换为大写 |
char charAt(int index) | 获取字符串中指定位置的字符 |
String[] split (String regex,int limit) | 将字符串分割为子字符串,返回字符串数组 |
byte[] getbytes | 将该字符串转换为byte数组 |
//定义一个字符串"学习 JAVA 编程" 注意JAVA前后有空格 String str="学习 JAVA 编程"; //打印出字符串长度 System.out.println("字符串的长度为:"+str.length()); //查找字符‘编’字的位置 char c='编'; System.out.println("编字在字符串中的位置是"+str.indexOf(c)); //查找子字符串 ‘JAVA’的位置 System.out.println("子字符串JAVA的位置"+str.indexOf("JAVA")); //查询子字符串‘imooc’的位置,如果找不到返回-1 System.out.println("子字符串JAVA的位置"+str.indexOf("imooc")); //按空格把字符串拆分成一个数组,并输出元素 String[] arr=str.split(" "); System.out.print("按空格拆分成数组:"+Arrays.toString(arr)); System.out.println(); //获取索引位置[3,7)之间的字符串 System.out.print("获取索引位置[3,7)之间的字符串"+str.substring(3,7));
查找字符位置和拆分需要多练习。
JAVA中char是可以储存汉字的,一个汉字代表两个字节,char型字符是用来存储Unicode编码的字符的,使用单引号嵌入字符。不过,如果某个特殊的汉字没有被包含在unicode编码字符集中,那么,这个char型变量中就不能存储这个特殊汉字。String是一个final类可以使用+号直接连接生成新的字符串对象,将String设置成不可变的,可以让String的行为最优化,因为String在多数应用中都被大量使用,它的优化非常关键。
提示:
1.字符串的索引位置是从0开始的,范围从0-str.length()-1;
2.使用indexOf进行字符或字符串查找时,如果匹配则返回位置索引,如果没有匹配结果,返回-1;
3.使用substring(beginIndex,endIndex)进行字符串截取时,包括beginIndex位置的字符,但不包括endIndex位置的字符。
第三节 String类的常用方法 II 及equals方法
//定义一个字符串学习 JAVA 编程 String str="学习 JAVA 编程"; //将字符串转换为小写 System.out.println("转换成小写是:"+str.toLowerCase()); //获取索引位置为1的字符 System.out.println("索引位置为1的字符是:"+str.charAt(1)); //将字符串转换为byte[],并打印输出 byte[] b=str.getBytes(); System.out.println("转换为byte字节数组:") for(int i=0;i<b.length();i++){ System.out.print(b[i]+" "); } System.out.println(); //和另外一个字符串“学习 JAVA 编程”比较 String st1=new String("学习 JAVA 编程"); System.out.println("用==号比较是否相等"+(st==st1));//false System.out.println("用equals比较是否相等"+st.equals(st1));//true
注意,equals和==有什么区别呢?
==:引用类型,判断引用是否指向同一个地址,两个字符串在内存中首地址是否相同,即判断是否是同一个字符串对象;char或者其他基本类型时是比较值。
equals:比较存储在两个字符串对象中的内容是否一致。
equals在object类,包含在jdk里,不适合绝大多数场景,一般需要重写。equals的作用,用于判断两个变量是否是对同一个对象的引用,即堆中的内容是否相同,返回布尔类型的值。equals方法的基本使用:boolean b=obj1.equals(obj2);String类型比较不同的对象内容是否相同,应用equals而不是==,因为==用于比较基础数据类型和引用数据类型时具有不同的功能。举例来说:
//String作为对象来使用 //1.对象不同,内容相同;==为false equals为true String s1=new String("JAVA"); String s2=new String("JAVA"); (s1==s2) false s1.equals(s2) true //2.同一对象,==和equals结果相同 String s1=new String("JAVA"); String s2=s1; //指向了同一个引用,==和equals比较结果都为true
字节是计算机存储信息的基本单位,1 个字节等于 8 位, gbk 编码中 1 个汉字字符存储需要 2 个字节,1 个英文字符存储需要 1 个字节。所以我们看到上面的程序运行结果中,每个汉字对应两个字节值,如“学”对应 “-47 -89” ,而英文字母 “J” 对应 “74” 。同时,我们还发现汉字对应的字节值为负数,原因在于每个字节是 8 位,最大值不能超过 127,而汉字转换为字节后超过 127,如果超过就会溢出,以负数的形式显示。在试验上面某个转换成byte的程序时,输出的汉字一个是由三个字节组成的,都是负数,这个原因可能是utf-8码,编码方面的内容以后也需要多学习一些。
第四节 认识JAVA中的 StringBuilder 类
在JAVA中,除了可以使用String类来存储字符串,还可以使用StringBuilder类或者StringBuffer类来存储字符串。区别:String类具有不可变性,频繁操作字符串时,比如+,会生成很多临时变量,使用StringBuilder或者StringBuffer类可以避免此类问题,后面两者基本相似,不同之处,StringBuffer是线程安全的,而StringBuilder没有实现线程安全功能,所以性能略高。所以需要创建一个内容可变的字符串对象时,优先考虑 StringBuilder。创建对象方法和String方法一样://创建一个空的StringBuilder对象 StringBuilder st1=new StringBuilder(); //创建一个字符串imooc StringBuilder st2=new StringBuilder("imooc");
第五节 JAVA中的 StringBuilder 类的常用方法
StringBuilder 类提供了很多方法来操作字符串:方法 | 说明 |
---|---|
StringBuilder append(参数) | 追加内容到当前StringBuilder对象的末尾 |
StringBuilder insert(位置,参数) | 将内容插入到对象的指定位置 |
String toString() | 将StringBuilder对象转换成String对象 |
int length() | 获取字符串的长度 |
//创建StringBuilder字符串对象hello StringBuilder str=new StringBuilder("hello"); //在字符串后面追加字符串 imooc 注意有个空格 str.append(" imooc"); //在字符串后面追加整数520 str.append(520); //字符串的长度 str.length(); //指定位置插入内容11! str.insert(11,"!"); //转换成String对象 String st2=str.toString();
相关文章推荐
- java中常用的字符串的截取方法
- java中常用的字符串的截取方法
- java中字符串处理、串联和转换的几个常用方法,以及如果需要自己编程实现的具体实施步骤。
- Java字符串的处理常用方法
- java中常用的字符串的截取方法&&三种去整方法
- java中常用的字符串的截取方法
- [JAVA][StringUtils]字符串工具类的常用方法
- java中常用的字符串的截取方法
- java中常用的字符串的截取方法&&三种去整方法
- java中常用的字符串的截取方法
- java中常用字符串方法
- java中常用的字符串的截取方法
- shell 处理字符串常用方法http://www.blogjava.net/xzclog/archive/2011/03/04/345745.html
- java中常用的字符串的截取方法
- JAVA和C#字符串常用方法的比较
- [JAVA][StringUtils]字符串工具类的常用方法
- java中常用的字符串的截取方法
- Java中常用字符串方法总结
- java经典算法_036字符串常用方法
- java中常用的字符串的截取方法