常用编程语言语法对比

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

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
看到很多人都分卷打包的,下载很是不方便,还浪费积分,我就整合压缩打包到一个包里面,里面包含全部源码 源码目录如下: 第1部分(2个程序包) HelloWorld.zip 01.Java入门样例HelloWorld demo.zip 03.Eclipse入门样例demo 第2部分(3个程序包) javasyntax.zip 05.Java核心语法详解 javaoop.zip 06.Java面向对象编程(计算器) javaexception.zip 07.Java面向对象编程扩展(计算器异常捕捉实例) 第3部分(5个程序包) javaio.zip 09.Java输入/输出流 javavi.zip 09.Java输入/输出流上机作业参考(文本编辑器) javathread.zip 10.Java多线程编程(线程池、生产者消费者、存取款实例) javautil.zip 11.Java常用实体类 javaxml.zip 14.XML属性文件 第4部分(6个程序包) javagui.zip 15.Java GUI库对比实例 javaawt.zip 16.AWT图形界面开发——Java文本编辑器 javamedia.zip 17.AWT多媒体编程——录音机、MP3播放器、视频拍照、视频播放器 javaswing.zip 18.Swing图形界面开发——Java文本编辑器 javaswt.zip 19.SWT图形界面开发——Java文本编辑器 javajface.zip 20.SWT增强组件库JFace 第5部分(5个程序包) javaapplet.zip 21.Applet网络组件——电子相册 javanet.zip 22.Java网络编程详解(Socket/UDP实例、简单聊天系统) javanio.zip 23.NIO非阻塞通信(Socket/UDP实例、简单聊天系统) javarmi.zip 24.RMI编程(HelloWorld例、计算器实例) javacorba.zip 25.Corba编程(HelloWorld例、计算器实例) 第6部分(4个程序包) javareflection.zip 26.Java反射机制与动态代理 javageneric.zip 27.Java泛型编程 javaannotation.zip 28.Java注释符编程 javafeature.zip 29.Java5.0语言新特性
看到那些要积分的很不酸,发布免费版本。 第1部分(2个程序包) HelloWorld.zip 01.Java入门样例HelloWorld demo.zip 03.Eclipse入门样例demo 第2部分(3个程序包) javasyntax.zip 05.Java核心语法详解 javaoop.zip 06.Java面向对象编程(计算器) javaexception.zip 07.Java面向对象编程扩展(计算器异常捕捉实例) 第3部分(5个程序包) javaio.zip 09.Java输入/输出流 javavi.zip 09.Java输入/输出流上机作业参考(文本编辑器) javathread.zip 10.Java多线程编程(线程池、生产者消费者、存取款实例) javautil.zip 11.Java常用实体类 javaxml.zip 14.XML属性文件 第4部分(6个程序包) javagui.zip 15.Java GUI库对比实例 javaawt.zip 16.AWT图形界面开发——Java文本编辑器 javamedia.zip 17.AWT多媒体编程——录音机、MP3播放器、视频拍照、视频播放器 javaswing.zip 18.Swing图形界面开发——Java文本编辑器 javaswt.zip 19.SWT图形界面开发——Java文本编辑器 javajface.zip 20.SWT增强组件库JFace 第5部分(5个程序包) javaapplet.zip 21.Applet网络组件——电子相册 javanet.zip 22.Java网络编程详解(Socket/UDP实例、简单聊天系统) javanio.zip 23.NIO非阻塞通信(Socket/UDP实例、简单聊天系统) javarmi.zip 24.RMI编程(HelloWorld例、计算器实例) javacorba.zip 25.Corba编程(HelloWorld例、计算器实例) 第6部分(4个程序包) javareflection.zip 26.Java反射机制与动态代理 javageneric.zip 27.Java泛型编程 javaannotation.zip 28.Java注释符编程 javafeature.zip 29.Java5.0语言新特性
Go 语言和 Java 语言在某些方面有相似之处,但也存在一些重要的区别。以下是 Go 语言和 Java 语言的一些对比: 1. 语法和易用性:Go 语言语法相对简洁,更易于学习和上手,而 Java 语言语法相对复杂一些。相比之下,Go 语言更注重简洁和可读性。 2. 并发编程:Go 语言天生支持并发编程,通过 goroutine 和 channel 提供了方便的并发模型。而在 Java 语言中,需要通过线程和锁等手段来进行并发编程。 3. 性能:在某些场景下,Go 语言的性能可能会优于 Java 语言。Go 语言的编译速度快,执行效率高,并且在并发处理方面表现出色。Java 语言则在大型企业级应用开发方面更常用。 4. 生态系统和库支持:Java 语言拥有非常庞大且成熟的生态系统和丰富的第三方库支持,可以满足各种应用场景的需求。而相对而言,Go 语言的生态系统还相对较小,但也在不断发展壮大。 5. 内存管理:Go 语言使用垃圾回收机制来管理内存,开发者无需手动管理内存,简化了代码的编写。Java 语言也有垃圾回收机制,但相对于 Go 语言,可能更加复杂。 6. 静态类型 vs 动态类型:Java 语言是静态类型语言,需要在编译时确定变量的类型。而 Go 语言是静态类型语言,但具有类型推导的特性,可以根据上下文自动推断变量的类型。 总体来说,Go 语言和 Java 语言都是强大的编程语言,各有优势和适用场景。选择使用哪种语言取决于具体的需求和项目要求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值