特性 | 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'): |