20175311 2018-2019-2 《Java程序设计》第7周学习总结
教材学习内容总结
这一周我主要学习了第八章的内容-常用实用类String类
- 构造String对象
- 字符串的并置
- String类的常用方法
- 字符串与基本数据的互相转化
- 对象的字符串表示
- 字符串与字符、字节数组
- 正则表达式及字符串的替换和分解
教材学习中的问题和解决过程
字符串常量概述
String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。
字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为 String 对象是不可变的,所以可以共享。
创建字符串对象两种方式的区别
其中两种方式分别为直接赋值方式创建对象、通过构造方法创建字符串对象。
直接赋值(String str = "hello"):只开辟一块堆内存空间,并且会自动入池,不会产生垃圾。
构造方法(String str= new String("hello");):会开辟两块堆内存空间,其中一块堆内存会变成垃圾被系统回收,而且不能够自动入池,需要通过public String intern();方法进行手工入池。
在开发的过程中不会采用构造方法进行字符串的实例化。
代码调试中的问题和解决过程
- 问题1:根据书本上Example8_2.java的例子,开始时并不理解为什么有时候字符串相互比较得到的结果为true,而有时候又是false。
- 问题1解决方案:课本中介绍了调用equals(String s)方法比较当前的字符串对象是否与参数s的字符序列相同。简单来说,就是比较两者内容是否相同,若相同返回true,不相同则返回false。 而如果直接利用“==”来比较的话,比较的是字符串的地址。
- 问题2:对于public int indexOf (String s)的作用不理解。
- 问题2解决方案:课本上详细提及,序列的索引位置从0开始,如果设置了具体的索引位置则从设置处开始。依次遍历之后的元素直到找到对应的字符串。
[代码托管]
https://gitee.com/H2742/HelloWorld
一些心得:
这周我们学习了字符串的定义、常用方法等内容,这周的学习主要是以看书和看代码为主。不过更多的时间还是花在了结对作业上面,因为在清明之前我们的结对作业还有很大一部分没有完成,加上这一章的内容不是特别艰涩难懂,不像之前几个章节。在看书时,例子Example8_8中,示例将密码学的加解密过程利用java的程序实现,刚刚好上周也有密码学的实验课,要求也是让我们编写代替密码体制的加解密,当时因为还没有看到这一章,所以我用的是c语言进行编写。而在看到这道例题时,我仔细的研究了一下,原来java也同样可以用来编写加解密的程序。可以说是很神奇了,而且受益匪浅哈哈哈。