柒-关于Java变量类型定义及初始化的事情

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、大小写问题以及数据类型的问题

在定义数据类型时,首先必须关键字注意Stringstring是不同的,相对int以及IntChar以及char也是不同的东西,这是被微软害苦了的人的苦苦相告。
其余像Integerint这种东西可以参考 java面试题之int和Integer的区别这种文章,实在让人太疯狂了我觉得。

6、无奖竞猜

我是否会在本系列写到“拾”之前完全没有Java的内容呢?

你可能感兴趣的:(柒-关于Java变量类型定义及初始化的事情)