这一系列的笔记都是针对像我一样从C#转到Java的同学准备的,由于Java与C#关联性较高,很多代码都有重合,所以主要写一些两者的不同,以便日后翻阅。算是站在C#基础上的提升吧。
与C#依赖于.Net框架一样,Java依赖于JVM(Java Runtime Environment,Java运行环境),但是这个环境不在Windows里预装,所以在编程之前,需要先下好JDK(Java Development Kit,Java开发套件)。使用的IDE是JetBrain公司开发的IntelliJ IDEA,现在也在更新其教程,有兴趣的同学可以去看看。
①注释
注释一行和注释一段与C#相同,都是//与/_….._/ Java中注释文档的书写格式为
/**
*
这里写方法的用途
*@param args 形参args的含义
*@return 返回值的含义
*/
这个写了倒是不会在编译时给出提醒,但是编译后可以选择同时生成一个HTML文件,打开后即是界面非常人性化的注释文档了。不过在开发过程中用途并不大,没有C#的文档注释实用,就暂时不展开讲了。
②常量与变量
常量
常量的定义方法与C#不同:
C#:
const int TEXT_NUM;
Java:
final int TEXT_NUM;
变量
常用变量中大部分与C#相同,只是bool变量改名为boolean,声明string类型首字母必须大写String 还有需要注意的就是Java中不存在C#中var那样的模糊定义类型
转义字符
转义字符还是用 /
类型转换
隐式转换规则与C#相同。 显式转换写法也与C#相同,但是Java没有Convert类,所以对于某些只用括号不能转换的类型时(String→int)需要调用要转换为的类型所在的类进行转换,如
新类型.parse新类型(变量名);
Int.parseInt(x);
Double.parseDouble(x);
注意这里类型首字母要大写
③运算符
运算符和C#都一样,但是需要特别注意的是,不管是Java、C、C#、Python还是C++,浮点类型都不可判断相等! 像这样:
float a=1.5;
float b=0.7+0.8;
if(b==a)
{
System.out.println(“A and B is Equal”);
}
else
{
System.out.println(“A and B is Different”);
}
这可万万使不得! 因为转换丢失,精度会有误差,相等的俩数也会显式不相等! 要想比较两个浮点数可以让它们相减求精度。 逻辑运算符相同不讲。
位运算符:
位运算符虽然和C#相同,但是在学C#的时候就没怎么认真学过,在这里再复习一下吧: 位运算符是对位(bit)进行运算的符号,就是二进制数。在使用位运算符之后程序会先将两边的值转换为二进制,然后进行运算。
运算符
含义
示例
~
按位非(NOT)
~a
&
按位与(AND)
a&b
¦
按位或(OR)
a¦b
^
按位异或(XOR)
a^b
¦
按位或(OR)
a¦b
>>
右移x位(位数不变,整体右移,低位丢弃,最高位用原最高位补充)
a>>x
>>>
无符号右移x位(位数不变,整体右移,最高位用0补充)
a>>>x
<<
左移x位(位数不变,整体左移,高位丢弃,最低位用0补充)
a<
④数组
数组的定义
数组的定义都是一样的,就是注意定义二维数组的时候还可以利用分别实例化定义不规则的二维数组,如下
1 | float [][]x; |
图例如下:
1.1
1.2
2.1
2.2
2.3
2.4
3.1
3.2
3.3
这里x.length=3,x[0].length=2。
数组的复制
我们先定义一种说法,即虚复制和实复制,虚复制是指仅复制引用变量的内存地址,当一个发生改变另一个也会改变,实复制是指复制了引用变量其中的值,一个发生改变后另一个不变。 目前有四种方法可以对数组进行复制:
1.直接相等
也就是array2=array1,这是一种虚复制。
2.使用循环语句依次赋值
就是for(int i=0;i<array1.length;i++)array2[i]=array1[i]; 这是一种实复制。
3.使用clone()方法
即int array2=array1.clone(); 这是一种实复制。
4.使用System.arraycopy()方法
其用法为 System.arraycopy(<数据类型> 被复制的数组名,复制起始索引,<数据类型> 复制到的数组名,复制元素的数量); 如,从整型一维数组array1中的第3个元素开始复制5个元素到整型一维数组array2中,可写为:
1 | System.arraycopy(int array1,2,int array2,5); |