第十二章 JAVA中的字符串及常用方法
来源:互联网 发布:电动汽车环保贡献数据 编辑:程序博客网 时间:2024/06/01 19:07
第一节 什么是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() 这样使用
//定义一个字符串"学习 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’的位置,如果找不到返回-1System.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));//falseSystem.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为trueString s1=new String("JAVA");String s2=new String("JAVA");(s1==s2) falses1.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();//创建一个字符串imoocStringBuilder st2=new StringBuilder("imooc");
第五节 JAVA中的 StringBuilder 类的常用方法
StringBuilder 类提供了很多方法来操作字符串:
//创建StringBuilder字符串对象helloStringBuilder str=new StringBuilder("hello");//在字符串后面追加字符串 imooc 注意有个空格str.append(" imooc");//在字符串后面追加整数520str.append(520);//字符串的长度str.length();//指定位置插入内容11!str.insert(11,"!");//转换成String对象String st2=str.toString();
- 第十二章 JAVA中的字符串及常用方法
- JAVA中的字符串及常用方法
- 第十二天 eclipse基本使用及字符串的常用方法
- java中的常用类及常用方法
- java中的字符串以及java中常用的系统方法
- Java字符串常用方法
- java字符串常用方法
- java字符串常用方法
- Java字符串常用方法
- OC中的字符串常用方法
- Java中的常用方法
- Java中的常用方法
- Java中的常用方法
- Java中的常用方法
- java中的常用方法
- Java中的math类的常用方法及用法说明
- Java的常用方法--字符串
- java中常用字符串方法
- maven 学习笔记(一)安装
- OpenStack Swift发展历程
- 第十一章 JAVA异常与异常处理
- Linux Netcat 命令——网络工具中的瑞士军刀
- RCNN学习笔记(00)简介
- 第十二章 JAVA中的字符串及常用方法
- hibernate:many to one
- POJ 1003 hangover
- 第十三章 JAVA中必须了解的常用类
- HDUoj 1754 I Hate It ( 线段树
- 第十四章 JAVA中的集合框架(上)List
- POJ 1004 Financial Management
- 目标决定人生——没有目标就失去一切 (转载)
- POJ 1005 I Think I Need a Houseboat