常用编程语言语法对比

特性JavaJavaScriptPython
基本数据类型

字符串

Stringstringstr
整形byteshortintlongnumberint
浮点型floatdoublenumberfloat
布尔型booleanbooleanbool(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.pop();(移除最后一个元素)

numbers.splice(index, 1);(移除特定位置)数组切片

del numbers[-1](移除最后一个元素)

numbers.pop(index)(移除特定位置

numbers[0] = 10;numbers[0] = 10;numbers[0] = 10
int i = numbers[0];let i = numbers[0];i = numbers[0]
长度判断numbers.lengthnumbers.lengthlen(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);

1. let contains = set.has(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.NaN是一个特殊的数字值(typeof NaN的结果为number),是not a number的缩写,表示不是一个合法的数字。

3.undefined是一个特殊的值,它表示变量已经声明但还没有被赋值

None

布尔值为false

1、undefined(未定义,找不到值时出现)

2、null(代表空值)

3、false(布尔值的false,字符串"false"布尔值为true)

4、0(数字0,字符串"0"布尔值为true)

5、NaN(无法计算结果时出现,表示"非数值";但是typeof NaN==="number")

6、""(双引号)或''(单引号) (空字符串,中间有空格时也是true

  • 布尔值:False
  • 数值:0或0.0
  • 字符串:空字符串,如’'或""
  • 容器:空的容器,如[],(),{},set()
  • None:None
常用操作类型判断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 (const key in obj) {
    console.log(key, obj[key]);
}

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 {
    // 构造方法
    public MyClass(int value) {
        this.value = value;
    }
}
    
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();

let obj = new Object(); 或 let obj = {};

const myInstance = new MyClass();

obj = MyClass()
继承使用extends关键字使用extends关键字使用class MyClass(ParentClass):
要求先实例化父对象要求先实例化父对象要求先实例化父对象
接口定义使用interface关键字定义TypeScript支持接口,原生JS不支持无接口
抽象类abstract 生命抽象类abstract 生命抽象类

@abstractmethod

def hobby(self): pass

其他特点
静态类型是,需要显式声明变量类型否,动态类型否,动态类型
访问修饰符支持publicprivateprotected无直接支持,但可通过命名约定实现支持publicprivate_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'):

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/757371.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里云服务器ECS u1实例199元一年性能如何?一测吓一跳

阿里云服务器u1是通用算力型云服务器&#xff0c;CPU采用2.5 GHz主频的Intel(R) Xeon(R) Platinum处理器&#xff0c;通用算力型u1云服务器不适用于游戏和高频交易等需要极致性能的应用场景及对业务性能一致性有强诉求的应用场景(比如业务HA场景主备机需要性能一致)&#xff0c…

室友打团太吵?一条命令断掉它的WiFi

「作者主页」&#xff1a;士别三日wyx 「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」&#xff1a;更多干货&#xff0c;请关注专栏《网络安全自学教程》 ARP欺骗原理 1、arpspoof实现ARP欺骗1.1、主机探测1.2、欺骗…

数据之谜:解读Facebook的用户行为

在当今数字化时代&#xff0c;社交媒体平台已经成为人们生活中不可或缺的一部分&#xff0c;而Facebook作为全球最大的社交网络之一&#xff0c;其背后隐藏着许多数据之谜。本文将深入探讨Facebook的用户行为&#xff0c;并试图解读其中的奥秘。 用户行为数据的收集 Facebook作…

MapReduce框架原理

目录 前言一、InputFormat数据输入1.1 切片与MapTask并行度决定机制1.1.1 问题引出1.1.2 MapTask并行度决定机制1.1.3 数据切片与MapTask并行度决定机制 1.2 FileInputFormat切片机制1.2.1 切片大小参数配置1.2.2 切片机制 1.3 TextInputFormat1.3.1 FileInputFormat实现类1.3.…

[ C++ ] STL---list的使用指南

目录 list简介 list的常用接口 构造函数 赋值运算符重载 迭代器 容量相关接口 元素访问接口 修改相关接口 头插push_front() 头删pop_front() 尾插push_back() 尾删pop_back() insert() erase() list的迭代器失效 list简介 1. list是可以以O(1)的时间复杂度在任意…

浅谈游戏地图中位置实时更新的技术方案

地图如今在游戏中发挥的作用越来越重要&#xff0c;随着电子竞技的兴起&#xff0c;地图逐渐成为了为玩家创造体验的直接舞台。希望本文能对有兴趣了解游戏地图背后实现原理的同学一些帮助。 什么是游戏地图 在游戏中可以通过3D场景虚拟一个完整的世界&#xff0c;当3D场景较为…

Chrome不支持正则搜索?那我们自己写一个

说在前面 &#x1f388;Ctrl F 大家都用过了吧&#xff0c;最近在Chrome中使用搜索功能的时候&#xff0c;突然想要使用正则来进行搜索&#xff0c;发现Chrome浏览器自带的搜索功能并不支持正则搜索&#xff0c;于是便想着自己做了一个支持正则搜索的Chrome插件。 效果展示 实…

python3入门机器学习,知识点全面总结与代码实操示例

目录 写在前面的话 一、机器学习的基本任务与方法分类 机器学习的概念和定义 基本任务 二分类任务&#xff08;Binary Classification&#xff09;&#xff1a; 多分类任务&#xff08;Multi-class Classification&#xff09;&#xff1a; 多标签分类任务&#xff08;Mu…

unity 学习笔记 4.坐标系

下载源码 UnityPackage 目录 1.基础知识 1.1.世界坐标和局部坐标 1.2.屏幕坐标 2.坐标系转换 3.练习&#xff1a;判断鼠标单击的位置 1.基础知识 1.1.世界坐标和局部坐标 1.2.屏幕坐标 2.坐标系转换 3.练习&#xff1a;判断鼠标单击的位置 步骤&#xff1a; 将脚本挂载到小…

JVM 垃圾回收机制:探秘对象生死判定与高效回收算法

目录 一、JVM 对象生死判定 1.1 引用技术算法 1.2 可达性分型算法 二、引用 三、 回收方法区 四、垃圾回收算法 4.1 标记-清楚算法 4.2 标记-复制算法 4.3 标记-整理算法 JVM 程序计数器、虚拟机栈、本地方法栈随着线程而生&#xff0c;随着线程而灭。栈中的栈帧随着方法的…

选数异或 (AcWing 4645)

题目链接: https://www.acwing.com/problem/content/description/4648/ 题目描述: 评价: 这道题感觉还是蛮有意思的&#xff0c;难度适中&#xff0c;而且有一定的思维含量&#xff0c;值得反复品味。 思路: 首先我们定义一个数组g[N], 其中的每个元素g[i] 表示在所有 i<j…

Java中的JVM加载机制。

在Java中&#xff0c;JVM&#xff08;Java虚拟机&#xff09;的类加载机制是Java平台的核心组件之一。它负责在运行时动态地将类的.class文件加载到内存中&#xff0c;并为这些类创建对应的java.lang.Class对象。这个机制确保了类的正确性和安全性&#xff0c;并为Java的“一次…

flink重温笔记(十八): flinkSQL 顶层 API ——实时数据Table化(涵盖全面实用的 API )

Flink学习笔记 前言&#xff1a;今天是学习 flink 的第 18 天啦&#xff01;很多小伙伴私信说&#xff0c;自己只会SQL语法来编写flinkSQL&#xff0c;如何使用代码来操作呢&#xff1f;因为工作中都是要用到代码编写的。还有小伙伴说&#xff0c;想要实现表是动态变化的&#…

STM32通信协议

STM32通信协议 STM32通信协议 STM32通信协议一、通信相关概念二、通信协议引脚作用三、通信方式四、采样方式五、电平信号六、通信对象 一、通信相关概念 通信接口 通信的目的&#xff1a;将一个设备的数据传送到另一个设备&#xff0c;扩展硬件系统 通信协议&#xff1a;制定…

Python 全栈体系【四阶】(十六)

第五章 深度学习 一、基本理论 2. 深度神经网络结构 2.1 感知机 2.1.1 生物神经元 感知机&#xff08;Perceptron&#xff09;&#xff0c;又称人工神经元&#xff08;Artificial neuron&#xff09;&#xff0c;它是生物神经元在计算机中的模拟。下图是一个生物神经元示意…

JavaScript高级(十六)---Iterator迭代器/Generator生成器

什么是迭代器&#xff1f; 迭代器是一种特殊的对象&#xff0c;这个对象需要符合迭代协议&#xff08;iterator protocol&#xff09;&#xff0c;这个对象具有以下特点。 该对象有一个特定的next方法 const obj { next() { } } const obj { …

FFmpeg-- c++实现:音频流aac和视频流h264封装

文章目录 流程api核心代码muxer.hmuxer.cpp aac 和 h264 封装为视频流&#xff0c;封装为c的Muxter类 流程 分配视频文件上下文 int Init(const char *url); 创建流&#xff0c;赋值给视频的音频流和视频流 int AddStream(AVCodecContext *codec_ctx); 写视频流的head int Se…

wayland(xdg_wm_base) + egl + opengles 使用 Assimp 加载带光照信息的材质文件Mtl 实现光照贴图的最简实例(十七)

文章目录 前言一、3d 立方体 model 属性相关文件1. cube1.obj2. cube1.Mtl3. 纹理图片 cordeBouee4.jpg二、实现光照贴图的效果1. 依赖库和头文件1.1 assimp1.2 stb_image.h2. egl_wayland_obj_cube1.cpp3. Matrix.h 和 Matrix.cpp4. xdg-shell-client-protocol.h 和 xdg-shell…

推免保研夏令营/预推免面试记录—北航网安

目录 0x00简述 0x01 面试经历 0x02 相关资料下载 0x00简述 没有夏令营,直接就是预推免,门槛基本等同于华五,或者说略弱于华五。招生规模较小,而且感觉导师方向一半是密码学,一半是那种类似于电信工的偏硬件方面。该校导师教授可以带两个学生,而副教授可以带一个。考…

小程序跨端组件库 Mpx-cube-ui 开源:助力高效业务开发与主题定制

Mpx-cube-ui 是一款基于 Mpx 小程序框架的移动端基础组件库&#xff0c;一份源码可以跨端输出所有小程序平台及 Web&#xff0c;同时具备良好的拓展能力和可定制化的能力来帮助你快速构建 Mpx 应用项目。 Mpx-cube-ui 提供了灵活配置的主题定制能力&#xff0c;在组件设计开发阶…