由于是从头开始学习,所以写的比较基础,仅适合自己看一下,基本就是自己的理解加上书中的知识。
有几条细小的规则:
变量
1.Java中的声明可以放在任何地方,所以尽量将变量放在第一次使用的地方前
2.final可以指示常量,表示某变量只能被赋值一次,一旦赋值以后,就再也不能更改。还有就是在定义变量前,变量名全部大写。
例如: final double CM_HEDLGH = 3.33;
3.通常需要该常量在一个类的多个方法中使用,那就需要将其定义为类常量。关键字此时变为static final
运算符
1.和python3不同的是,在py3中,两个数相除都会得到一个浮点类型的结果,但是在java中有严格的要求。比如
15/2 = 7 ;15.0 / 2 = 7.5 ,表明与等式左边的数有关,左边是什么类型,最后返回的是什么类型
2.在计算中,如浮点计算 xyz/w,计算过程中会产生截断,要想每一步都得到精确的结果,可以在类名前面加strictfp
强制类型转换
1.不同类型之间的转换可以采取(int)x,则表明将x转换为整型
2.四舍五入法,Math库中有一个函数round,可以实现四舍五入的功能。Math.round(x)即表示对x进行四舍五入,但需要注意的是四舍五入后的结果返回的是long型。
3.在使用+=时候需要注意,如果结合的数的类型和变量的类型不一致的话,将会在实现+的操作之后,进行强制类型转换,转到与变量的类型一致。
例如:int x; x =2; x+=3.5; 最后x=5,并不是想象的5.5.+=实现的操作是(int)(x+3.5)
关系运算符
1.与python不同的是,and对应于&&,or 对应于||
2.关系运算符遵循短路规则,如:expression1 && expression2 ,如果左边为假,就返回假,不会管右边的结果,同理,如果是||运算符,则表示如果左边为真,则不计算右边的结果,直接返回true。
3.三目运算符。condition ?exprssion1 : expression2 表示如果条件为真,执行expression1,为假的时候执行expression2.
4.单个的&,|,^(xor,异或),~(非),表示数字位之间的操作。<<左移,>>右移
杂七杂八
1.字符串的拼接,python中字符串只能和字符串拼接,在java中,字符串可以和数字拼接,java会把和字符串拼接的东西自动转换为字符
2.==和 .equals()不一样,前者不仅值相同,还要存储在相同的位置,后者只需要值相同即可
3.java中除了goto,有一种跳出多重循环的方法。类似与一种做标记的方法,如在想要跳出的外层循环做一个标记,前面加上一个label:,之后在break那里可以写上break label;
4. 在python中,没有数组,只有列表,且不用声明。在Java中,数组需要声明,声明方法即数组类型加上数组变量名。其中数组类型也就是数组是整形数组还是字符形数组等等(int[],double[],char[]),int[] a = new int[100],即声明长度为100的整形数组。new int 之后,相当于给数组进行了初始化,字符数组初始化是null,整数数组初始化是0
5. 功能很强的循环结构,for each语句,有一点类似于python中的for循环的使用
例如:for (variable:collection)
statement
定义一个变量来暂存collection集合中的元素,然后执行statement,特别适合遍历collections
6.数组的拷贝问题,和python中是相同的问题。如果采用这种方式,如 int[] luckyNum = smallPrimes;
luckyNum[5] = 12,//这一步将会导致smallPrimes[5]同样发生变化,是因为当复制之后,java并没有给它开辟新的内存,而是两个指针指向了同一个内存,所以一改都改,如果要想不影响原来的结果,需要新开辟内存进行存放,可以使用专门的拷贝函数Array.copyOf(A,B),其中A表示被拷贝的函数,B表示需要拷贝的长度。
7.与python类似,同样java种不存在多维数组,与python中利用列表构造多维数组一样。