PDF 课件和源代码下载地址:
https://gitee.com/geektime-geekbang/LetsJava
作者回复: 嗯呐,例子里面静态非静态都可以。 实际编程时候,非静态方法有两个原因:使用自引用;多态,比如方法可能被子类覆盖
作者回复: 看着javadoc学习新的方法是软件开发工程师的日常。建议你可以说自己试调用这些方法看看,结果和javadoc对比一下。 有一些方法超出了本课程的内容,比如正则表达式(regular expression)匹配,正则表达式好难的...... 字符串常用的方法我都提到了,学习新的方法有问题欢迎随时提问
作者回复: 30万=300k,里外里毛估占1m内存。如果真的要放,对于现在的服务器来说也不是啥负担。 如果要放,就把bytes接受完毕,按照发送端发送的编码方式解码就好了。 但是在放之前应该要弄清楚有没有必要转成string,还是可以一边接收一边处理。 或者有没有必要搞个300k的字符串。可以不可以优化。
作者回复: 如果字符串是:abcdefg 如果要知道它是不是以efg结尾,那么怎么办呢。Java的做法是用startwith,但是用它的另一个有俩参数的方式。一个参数是offset,一个是要检查的结尾。 换言之,它的思路是,endWith其实就是从某个offset开始,检查它是不是startwith 回到我们的例子,abcdefg是不是endsWith efg,那么其实就是检查它从索引为4(length() - suffix.length() = 7-3 =4)开始,是不是startsWith efg 目前看不懂,后续学习没太大影响。
作者回复: 没想那么多哈,主要是展示String类的用法
作者回复: 感觉没什么问题,你代码贴出来看看?
作者回复: 有前途啊同学,上来就挑战这么有难度的算法。其实字符串查找匹配是一个可以很难的算法,比如算法大神的KMP算法。当然这个算法是用来查找的,startWith相对会简单很多。 coder 这个方法应该是考虑了编码等情况,因为这里是用的byte数组而非char数组表示的字符串。后面的while循环就是把两个字符串一个个的比较,算法本身的思想不难。如果对这个有兴趣,建议学习一下KMP算法,回头再看startWith就是降维打击了。 KMP算法可以详细参考: http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm.html