最近在学习《算法》Sedegewick版,里面的示例代码是Java的。为了方面学习,现列出区别如下

1.运行方式的区别

JS文件直接执行而Java需要编译后执行

1
node BinarySearch.js
1
2
javac BinarySearch.java  #编译
java BinarySearch #运行

2.数据类型的区别

Java内具备更为丰富的数字类型

Java JS
int / double / float / long / short / byte Number

下面介绍Java各数据类型的含义

类型 含义 位数
int 整数及其算数运算符 32
double 双精度实数及其算数运算符 64
long 整数及其算数运算符 64
short 整数及其算数运算符 16
byte 整数及其算数运算符 8
float 单精度实数及其算数运算符 32

3.数组的区别

####数组创建的区别

Java数组初始化需要3步:

  1. 声明数组的名字和类型
  2. 创建数组
  3. 初始化数组元素(非必要)

而JS中数组的每一项可以保存任何类型的数据,因此不用声明类型

在Java中创建数组时,要指定数组元素的个数

1
2
3
4
5
6
7
8
9
10
11
//创建数组的完整模式
double[] a;
a = new double[N]; //N为数组元素个数
for (int i=0; i<N; i++){
a[i] = 0.0
}

//创建数组的简便模式
double[] a = new double[N];

int a = {1,1,2,3,5,8};

####二维数组

Java中存在在类似于矩阵的二维数组,创建方法如下

1
double[][] a = new double[M][N];

4.函数的区别

类似于JS中函数的概念,Java中的函数称为静态方法,它的声明如下

1
2
3
4
public static int abs (int x){
if (x > 0) return x;
else return -x;
}

首先,函数开头为public static而不是function。其次,紧跟之后的便是输出的类型。然后就是方法名。最后,传入的参数也要声明类型。

还应该要注意到的是,如果不输出数据,只产生副作用(如打印字符串),那么输出类型为void

5.模块化的区别

传统的JS模块基于单个的.js文件,而Java的模块则基于静态方法库。Java通过静态方法库实现了模块化编程。静态方法库要点如下

  • 静态方法库定义一个Java类中的一组静态方法
  • 存放类的文件名与类名相同
  • 一个.java即为一个静态方法库
  • Java开发的基本模式是编写一个静态方法库来完成一个任务
1
2
3
4
5
public class Array {
public static int sort(int a) {
...
}
}