[Java基础教程]第八章-Java字符串
Java的字符串类(java.lang.String)也被称为第九种基础数据类型,它是jdk中最常用的类,没有之一。在第四章我们为了向控制台输出"Hello World"创建的类HelloWorldObject有一个String hello的属性,这个就是字符串的应用。我们可以使用
String hello = "hello world";
String hello = new String("hello world");
两种方式为初始化字符串,比较常用的是第一种。
前面学习数学运算符的时候在控制台输出了所有运算的结果值,我们输出结果值的时候同时也输出了方程式结果会更清晰,比如"3 + 7 = 10"。字符串之间使用"+"就是拼接,比如'System.out.println(variable1 + " + " + variable2 + " = " + sum);'语句中的"variable1 + " + " + variable2 + " = " + sum"。这个语句中variable1、variable2 、sum是int类型,系统仍然按照字符串处理了,因为存在字符串"+"和"=",当语句中“+”并且存在字符串时,所有的变量做字符串处理。字符串的拼接还有另外一种方式,使用StringBuilder工具类。
//定义变量 intvariable1 = 3; intvariable2 = 7; //加法 intsum = variable1 + variable2; StringBuilder stringBuilder = newStringBuilder(); stringBuilder.append(variable1).append(" + ").append(variable2).append(" = ").append(sum); System.out.println(stringBuilder.toString());
这两种的方式都比较常用,StringBuilder性能要高一些,但是操作比较麻烦。建议链接的字符串个数超过5个以上使用StringBuilder的方式。
前面我们一起学习过几次数据类型,那么基础数据类型和String之间是怎么转换的呢?
String intString = "10"; intnum = 11; System.out.println(String.valueOf(num)); System.out.println(Integer.valueOf(intString)); System.out.println(Integer.parseInt(intString));
int类型转换为String除了前面提到的使用+字符串,还可以使用String.valueIf(int)的方法。String向int转换可以使用int的包装类Integer.valueOf(String)和Integer.parseInt(String)两种方法。其他的几种基础数据类型与String的转换和int类似,都是调用String.valueOf和包装类的valueOf和parseXXX的方法,大家可以试试其他的转换。
"=="比较运算符是判断符号两侧的变量是否相等,如果两个字符串直接比较会是什么结果呢。
//字符串的比较 String abc = "abc"; String abc2 = "abc"; String abc3 = newString("abc"); System.out.println("abc == abc2:"+ (abc == abc2)); System.out.println("abc == abc3:"+ (abc == abc3));
输出结果为:
abc == abc2:true
abc == abc3:false
只所以出现这样的结果,和String再java虚拟机的存储有很大的关系,这部分涉及的知识太比较深,这里就不在叙述了。我们期待的结果都是true,因为都是字符串"abc",所以字符串的比较不能使用"==",需要使用String的equals方法,代码如下:
System.out.println("abc.equals(abc2):"+ abc.equals(abc2)); System.out.println("abc.equals(abc3):"+ abc.equals(abc3));
输出结果为:
abc.equals(abc2):true
abc.equals(abc3):true
字符串其他常用的方法还包括:
获取字符串长度length(),字符串截取substring(begin,end),index位置上的字符charAt(index),这里的begin,end和Index都是字符在字符串中的位置,起始inex为0,这点需要注意,具体的代码如下:
System.out.println("abc.length():"+ abc.length()); System.out.println("abc.substring(1, 2):"+ abc.substring(1, 2)); System.out.println("abc.charAt(1):"+ abc.charAt(2));
小练习:作业 打印以下文字中英文字母a-z(不区分大小写)分别的出现次数
* The class <code>String</code> includes methods for examining
* individual characters of the sequence, for comparing strings, for
* searching strings, for extracting substrings, and for creating a
* copy of a string with all characters translated to uppercase or to
* lowercase. Case mapping is based on the Unicode Standard version
* specified by the {@link java.lang.Character Character} class.
课程中的代码如下:
packagecom.sunhaojie.learntest.eighth; /** * @ClassName StringTest * @Description 字符串的测试类 * * @author sunhaojie 3113751575@qq.com * @date 2016年2月1日 上午10:44:40 */ publicclassStringTest { /** * @Title main * @Description 字符串测试 * @param args * @return void * * @author sunhaojie 3113751575@qq.com * @date 2016年2月1日 上午10:44:40 */ publicstaticvoidmain(String[] args) { //定义变量 intvariable1 = 3; intvariable2 = 7; //加法 intsum = variable1 + variable2; StringBuilder stringBuilder = newStringBuilder(); stringBuilder.append(variable1).append(" + ").append(variable2).append(" = ").append(sum); System.out.println(stringBuilder.toString()); //类型转换 String intString = "10"; intnum = 11; System.out.println(String.valueOf(num)); System.out.println(Integer.valueOf(intString)); System.out.println(Integer.parseInt(intString)); //字符串的比较 String abc = "abc"; String abc2 = "abc"; String abc3 = newString("abc"); System.out.println("abc == abc2:"+ (abc == abc2)); System.out.println("abc == abc3:"+ (abc == abc3)); System.out.println("abc.equals(abc2):"+ abc.equals(abc2)); System.out.println("abc.equals(abc3):"+ abc.equals(abc3)); //其他常用字符串的方法 System.out.println("abc.length():"+ abc.length()); System.out.println("abc.substring(1, 2):"+ abc.substring(1, 2)); System.out.println("abc.charAt(1):"+ abc.charAt(2)); } }
建议继续学习:
- 字符串匹配那些事(一) (阅读:5737)
- 一个十分有趣的字符串算法题目 (阅读:4355)
- JSON对象和字符串之间的相互转换 (阅读:2940)
- JS中如何判断字符串类型的数字 (阅读:2497)
- php中数组与字符串 (阅读:2353)
- 谈谈Go语言的字符串设计 (阅读:1492)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:sunhaojie 来源: 孙豪杰的博客
- 标签: 字符串
- 发布时间:2016-02-21 11:32:24
- [65] Oracle MTS模式下 进程地址与会话信
- [64] Go Reflect 性能
- [64] 如何拿下简短的域名
- [59] IOS安全–浅谈关于IOS加固的几种方法
- [58] 【社会化设计】自我(self)部分――欢迎区
- [58] 图书馆的世界纪录
- [56] android 开发入门
- [53] 视觉调整-设计师 vs. 逻辑
- [46] 读书笔记-壹百度:百度十年千倍的29条法则
- [45] 界面设计速成