| 特性 | Java | JavaScript | Python | |
| 基本数据类型 | 字符串 | String | string | str | 
| 整形 | byte,short,int,long | number | int | |
| 浮点型 | float,double | number | float | |
| 布尔型 | boolean | boolean | bool(True or False) | |
| 对象类型 | 数组/列表定义 | int[] numbers = {1, 2, 3, 4, 5};(长度不可变) | let numbers = [1, 2, 3, 4, 5]; | numbers = [1, 2, 3, 4, 5] | 
| 增 | Arrays.add(numbers, 6);(需使用工具类) | numbers.push(6); | numbers.append(6);或numbers += [6] | |
| 删 | 较复杂 | 
 
 | 
 
 | |
| 改 | numbers[0] = 10; | numbers[0] = 10; | numbers[0] = 10 | |
| 查 | int i = numbers[0]; | let i = numbers[0]; | i = numbers[0] | |
| 长度判断 | numbers.length | numbers.length | len(numbers) | |
| 集合定义 | Set<Integer> set = new HashSet<>(Arrays.asList(1, 2, 3, 4, 5)); | let set = new Set([1, 2, 3, 4, 5]); | set = {1, 2, 3, 4, 5} | |
| 增 | set.add(6); | set.add(6); | set.add(6) | |
| 删 | set.remove(1); | set.delete(1); | set.discard(1)或del set[1](如果是有序集合) | |
| 改 | ||||
| 查 | boolean contains = set.contains(1); | 
 2. 对象类型也支持 in | contains = 1 in set | |
| map定义 | Map<String, Integer> map = new HashMap<>(); | let map = new Map(); | map = {} | |
| 增 | map.put("key", 1); | map.set("key", 1); | map["key"] = 1 | |
| 删 | map.remove("key"); | map.delete("key"); | del map["key"] | |
| 改 | map.put("key", 2); | map.set("key", 2); | map["key"] = 2 | |
| 查 | Integer value = map.get("key"); | let value = map.get("key"); | value = map.get("key")或value = map["key"] | |
| 空对象 | null | 1. null 2. 3. | None | |
| 布尔值为false | 1、undefined(未定义,找不到值时出现) 2、null(代表空值) 3、false(布尔值的false,字符串"false"布尔值为true) 4、0(数字0,字符串"0"布尔值为true) 5、NaN(无法计算结果时出现,表示"非数值";但是typeof NaN==="number") 6、""(双引号)或''(单引号) (空字符串,中间有空格时也是true) | 
 | ||
| 常用操作 | 类型判断 | if (obj instanceof String) | 1. typeof myVar === 'undefined') 3if (obj instanceof String) | type(obj) if isinstance(list_var, list): | 
| 判断等于 | equals: 判断值相等 == 判断对象相同 | == 判断值相等 === 判断值&类型相等 | == 判断值相等 a is b 判断对象相同 | |
| 变量声明 | int myInt = 10; | let myInt = 10; | my_int = 10 | |
| 注释 | 
 
 | 同Java | 单行: 
 | |
| 控制流语句 | if/else | if (condition) { ... } else if { ... } else{ ... } | 同 java | if condition : ... elif condition : ... else: ... | 
| for循环 | 基本的for循环: for (int i = 0; i < 10; i++){...} 增强的for循环: for (int x : 数组等) {...} 使用范围的for循环(Java 8及以上) IntStream.range(0, 10) .forEach(i -> System.out.println(i)); | 基本for循环: for (let i = 0; i < 10; i++) {...} forEach循环: const array = [1, 2, 3, 4, 5]; array.forEach(element => { console.log(element); }); for...in循环(通常用于对象属性的遍历): const obj = { a: 1, b: 2, c: 3 }; for...of循环(用于遍历可迭代的数据,如字符串、数组、Map、Set等): const array = [1, 2, 3, 4, 5]; for (const element of array) { console.log(element); } | 基本的for循环: for item in iterable: # do something with item | |
| 对象 | 类定义 | public class MyClass { | class MyClass { constructor() { // 构造函数内的代码会在创建新对象时执行 this.myProperty = 'Hello, World!'; } } // 使用类创建一个新的实例 const myInstance = new MyClass(); | class MyClass: def __init__(self, value): # 构造函数 self.my_attribute = value # 实例属性 | 
| 属性定义 | 对象属性必须定义在构造函数外 | 对象属性必须定义在构造函数外 | 1. 对象属性定义在构造函数内 2. 构造函数外属性为类属性 | |
| 对象实例化 | MyClass obj = new MyClass(); | 
 const myInstance = new MyClass(); | obj = MyClass() | |
| 继承 | 使用 extends关键字 | 使用 extends关键字 | 使用 class MyClass(ParentClass): | |
| 要求先实例化父对象 | 要求先实例化父对象 | 不要求先实例化父对象 | ||
| 接口定义 | 使用 interface关键字定义 | TypeScript支持接口,原生JS不支持 | 无接口 | |
| 抽象类 | abstract 生命抽象类 | abstract 生命抽象类 | @abstractmethod def hobby(self): pass | |
| 其他特点 | ||||
| 静态类型 | 是,需要显式声明变量类型 | 否,动态类型 | 否,动态类型 | |
| 访问修饰符 | 支持 public,private,protected | 无直接支持,但可通过命名约定实现 | 支持 public,private,_protected(约定) | |
| 泛型 | 支持泛型编程 | TypeScript支持泛型,原生JS不支持 | 支持泛型编程 | |
| 函数 | 返回值类型 | function greet(name: string): string { return `Hello`; } | def greet(name: str) -> str: return f"Hello, {name}!" | |
| 变长参数 | public void print(String... args){} | function myFunction(...args) { console.log(args); // 输出一个数组,包含所有传入的参数.基本同java } | def print_args(*args): print(args) # 元组 def print_kwargs(**kwargs): print(kwargs) # 字典 | |
| 可选参数 | 不支持 | function greet(name, age = null) {} | def greet(name, greeting='Hello'): |