代码改变世界

[Java] 初识java

2010-03-19 13:39  bdictator  阅读(223)  评论(0编辑  收藏  举报

数据类型

  • 在C和C++中,int表示的整型与目标机器相关。在8086这样的16位处理器上整型数值占2字节;在Sun SPARC这样的32位处理器上,整型数值占4字节;而在Intel Pentium处理器上,C和C++整型依赖于具体的操作系统,也就是说,对于DOS和Windows3.1,整型数值占2字节。当Windows程序使用32位模式时,整型数据占4字节。在java中,所有的数值类型所占据的字节数量与平台无关。
  • 注意:Java没有任何unsigned 类型
  • 注意:常量Double.POSITIVE_INFINITY、Double.NEGATIVE_INFINITY和Double.NaN分别表示三个特殊的值,但在实际应用中很少遇到。特别要说明的是,不能这样测试:
  if(x==Double.NaN)//is never true

 用于检测一个特定值是否等于Double.NaN。所有“非数值”的值都被认为是不相同的。然而可以使用Double.isNaN方法 

  if(Double.isNaN(x))//check whether x is "not a number"

 字符串
  由于不能修改Java字符串中的字符,所以在Java文档中将String类对象称为不可变字符串,如同数字3永远是数字3一样,字符串"Hello"永远包含H、e、l、l和o的代码单元序列,不能修改其中的任何一个字符。当然,可以修改字符串变量的内容,让它引用一个不同的字符串,如同可以将一个存放3的数值变量改成存放4的一样。这样做是否会降低运行效率(对Java谈效率:D),看起来好像修改一个代码单元要比创建一个新的字符串更加简洁。答案是:也对,也不对。的确,通过拼接"Hel"和"p!"来创建一个新的字符串效率不高,但是不可变字符串却有一个优点:编译器可以将字符串共享。

   注意:一定不能使用==运算符检测两个字符串是否相等!这个运算符只能够确定两个字符串是否被放置在同一个位置。如果虚拟机总是将相同的字符串共享,就可以使用==运算符检测是否相等。但实际上只有字符串常量是共享的,而+或substring等操作产生的结果都不是共享的。

 


C++注意:

 在Java应用程序的main方法中,程序名没有存储在args数组中,例如当使用下列命令行运行程序时:

  java Message -h world //args[0]是"-h",而不是"Message"或者"java"