1、这个世界让我觉得讨厌
其实我只是讨厌这个极端的世界,以及需要提前设定的很多痛苦的事情。
没了啦,只是我之前用的VB.Net以及JS都是对数据类型定义比较宽大的语言,突然来到Java我真的很难习惯,而且是极端不习惯。
2、关于String及char数据类型
在JS里面,我是从来没考虑过char类型的,但当我来到了Java的世界我才发现是原来String其实不是天生的东西,详情可以看qauchangqingwei博客里面说的:
char是基本数据类型,而String是个类,属于引用数据类型。String类可以调用方法,具有面向对象的特征。
因为对于char[]以及String的长期混淆,当我看到一个函数的传入参数为(String userName, String database, char[] password)时,我很自然的输入了("San","Shi","Shu")。
当然,毫无悬念地,错误了。
错误不要紧,知道char[]跟String不一样,并且转换就行了对吧?
("San","Shi","Shu".toCharArray())
反正对于这种真的很烦躁。
3、关于String数组定义
前期使用一个导出CSV的包,我看那个包的例程是需要调用ArrayList的,那没问题,但接下来我想定义一个String[]的变量,接下来是我的定义方式:
ArrayList csvData = new ArrayList();
String[] csvHeader=new String()[];
哎呀!错了!?
错了!?!?!?
没错,是错了。
正确方式可以有:
String[] straHeader = new String[csvHeader.length + 2];
String[] straHeader = new String[2];
String[] csvHeader;
光定义就让我焦头烂额了,这种情况下就别纠结是否在定义时就必须确定数组大小等情况了。
我就是觉得为什么这么麻烦的语言居然使用率这么高,JS不好么?
4、关于String的相等判定
我在做分词后的词性判定是,发现一个很神奇的事情,代码如下:
for (org.ansj.domain.Term termEle : ToAnalysis.parse(str)) {
if (termEle.getNatureStr() != "w" && termEle.getNatureStr() != "null") {
System.out.println(termEle.getRealName() + "---|" + termEle.getNatureStr() + "|---"
+ ((Boolean) (termEle.getNatureStr().toString() == "w")));
}
}
反正就是当词性是w的时候就判断为true,结果!!!结果如下:
欢迎---|v|---false
使用---|v|---false
ansj---|en|---false
seg---|en|---false
,---|w|---false
(---|w|---false
ansj---|en|---false
中文---|nz|---false
分词---|v|---false
)---|w|---false
......
各位看官能发现有问题么!?
当然在我之前说的那个文章是有介绍这种情况以及原因的,反正String的相等就不要用==了,用termEle.getNatureStr().equals("w"),就是equals()函数。
这东西耗了我2个小时,我还以为分词的包有问题呢....
5、大小写问题以及数据类型的问题
在定义数据类型时,首先必须关键字注意String和string是不同的,相对int以及Int、Char以及char也是不同的东西,这是被微软害苦了的人的苦苦相告。
其余像Integer和int这种东西可以参考 java面试题之int和Integer的区别这种文章,实在让人太疯狂了我觉得。
6、无奖竞猜
我是否会在本系列写到“拾”之前完全没有Java的内容呢?