像C++,C#啊,java啊这些高级语言的语法都差不多了。命名规范,基本类型,引用类型,一元二元三元运算符,表达式和流程控制。大概都是这么多内容吧。
这里就一些细节的容易忽略的地方进行记录。
- java命名规范
- 以Unicode字母、下划线、美元符号开头,包含其他字符的,不是关键字key words保留字的组合,大小写敏感。
- 是基于16bit的unitcode字符的。 java本身的字符集就是Unitcode的,这样在写代码时就会有可能出现乱码的情况,比如在url中出现的字符会自动改为gbk编码,还有在socket传输时也会有编码问题,具体的问题等到写到了网络传输的时候再讨论。
- 但是类名是ASCII字符的,因为有些操作系统不支持16bit。
- 关键字中没有C++的sizeof,因为java中的类型大小事不会变的,跟操作系统无关。
- goto和const是保留字。在汇编语言中是有goto的,被认为很容易出错,还增加复杂性,降低可读性。const是常量的意思,java中已经能够使用static final来表达这个意思了,因此这两个是没有必要的,呵呵,反正我是这么认为的。
- 基本类型
共八种
- 逻辑类型logical boolean。 与C++不同,不能够跟1,0对应。
- 字符型Textual char 16bit 单引号的字符或者是用ascii码表示的字符'/xxxx'。通过下面的代码可以得到一个字符转化为16进制码之后的值:
- 整数 byte 8bit,short 16bit,int 32bit, long 64bit。范围是-2(e-1) 到2(e-1) -1.
这个范围是因为计算的计算方式都是使用补码进行计算的,因此一个比如说8位的数实际上是其二进制数所代表的补码的范围。
比如一个8bit的二进制数能够表达的整数最小为00000000,最大为01111111。范围就是0到2(e-1) -1。
其能够表示的负数为最大为11111111,最小为10000000,范围就是-1到-2(e-1) (正数的补码是他本身,负数的补码为反码加1。太不容易了,大学学的知识终于用上一次。)
- 浮点型 float 32bit, double 64bit 使用float a = 1.1的时候会有错误,因为1.1默认是double类型的。
- 基本类型如果使用New来创建会有效率问题,因此放在了栈上。这也是java的非面向对象特征之一。
- 可以通过装包转化为对应的类。并且java还提供了任意精度的类BigInteger和BigDecimal。在财务等对数字要求极为敏感的应用系统中,通常使用这种类型进行计算,来代替基本类型。
- 在基本类型参加计算的时候会有自动提升类型的现象发生,char 可以直接提升为int 或者网上,其他类型的提升顺序为:byte,short,int,long,float,double.如下面的例子:
- 引用类型
- 就是指向一块内存地址的引用。
- java中不管是基本类型还是引用类型作为参数的时候都是值传递的。不过基本类型的值就是其字面的值,而引用的值指的是其所指向的内存地址,但是内存地址中的内容是可以改变的。
- 变量
- 方法之外的变量被称为类变量或者是实例变量,能够作为类型信息的一部分载入文本段,然后通过内存清空就行初始化。
- 方法之内的变量为本地变量或者临时变量,使用前必须初始化,不使用可以不进行初始化。
- 表达式
- %这个运算符是带符号的,即负数的余数也是负的。
- 浮点数参与运算的时候,会先转化为二进制,因而会有除不尽的情况,这时候就会转为最贴切其的二进制数进行计算,因此会有精度的问题,比如计算2 - 1.1的时候,就会得到结果0.89999999.可以使用bigdecimal来解决这个问题。