Python和Java的语法对比,语法简洁上python的确完美胜出
Python是一种广泛使用的解释型、高级编程、通用型编程语言,由吉多·范罗苏姆创造,第一版发布于1991年。可以视之为一种改良(加入一些其他编程语言的优点,如面向对象)的LISP。Python的设计哲学强调代码的可读性和简洁的语法(尤其是使用空格缩进划分代码块,而非使用大括号或者关键词)。相比于C++或Java,Python让开发者能够用更少的代码表达想法。不管是小型还是大型程序,该语言都试图让程序的结构清晰明了。
Java是一种广泛使用的计算机编程语言,拥有跨平台、面向对象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。Java编程语言的风格十分接近C++语言。继承了C++语言面向对象技术的核心,舍弃了容易引起错误的指针,以引用取代;移除了C++中的运算符重载和多重继承特性,用接口取代;增加垃圾回收器功能。在Java SE 1.5版本中引入了泛型编程、类型安全的枚举、不定长参数和自动装/拆箱特性。太阳微系统对Java语言的解释是:“Java编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言”。
那么Python和Java在语法上有什么区别呢,让我们通过几个生动的例子来一探究竟。
目标1:输出hello,world
Python版
print("hello,world")
Java版
public class HelloWorld { //这里的HelloWorld需要与文件名相同
public static void main(String[] args) {
System.out.println("hello,world");
}
}
目标2:获取键盘输入,并输出
Python版
name = input("请输入您的名字:")
print(name)
Java版
import java.util.Scanner;
public class inputstr {
public static void main(String[] args) {
System.out.println("请输入您的名字:");
String name = new Scanner(System.in).next();
System.out.println(name);
}
}
目标3:输出1到10的随机一个数字
Python版
import random
print(random.randint(1,10))
Java版
import java.util.Random;
public class prandom {
public static void main(String[] args) {
System.out.println(new Random().nextInt(10)+1)
}
}
目标4:指定一个列表或数组,[51, 22, 93, 17, 77, 31, 44, 55, 20],请对其快速排序
Python版
def quicksort(lis):
if len(lis) < 2:
return lis
mid = lis[len(lis)//2]
lis.remove(mid)
left, right = [], []
for li in lis:
if li >= mid:
right.append(li)
else:
left.append(li)
return quicksort(left) + [mid] + quicksort(right) if __name__ == "__main__":
li = [51, 22, 93, 17, 77, 31, 44, 55, 20]
newl = quicksort(li)
print(newl)
Java版
import java.util.ArrayList;
public class quickpractise {
public static void main(String[] args) {
int list[] = {51, 22, 93, 17, 77, 31, 44, 55, 20};
ArrayList<Integer> lis = new ArrayList<>();
for (int i=0;i<list.length;i++){
lis.add(list[i]);
}
ArrayList<Integer> newl = quicksort(lis);
System.out.println(newl);
}
public static ArrayList<Integer> quicksort(ArrayList<Integer> lis) {
if (lis.size() < 2) {
return lis;
}
int len = lis.size()/2;
int mid = lis.get(len);
lis.remove(len);
ArrayList<Integer> left = new ArrayList<>();
ArrayList<Integer> right = new ArrayList<>();
for (int i=0;i<lis.size();i++){
int a = lis.get(i);
if (a>=mid){
right.add(a);
}
else{
left.add(a);
}
}
ArrayList<Integer> left1 = quicksort(left);
ArrayList<Integer> right1 = quicksort(right);
left1.add(mid);
for (int i=0;i<right1.size();i++){
left1.add(right1.get(i));
}
return left1;
}
}
最后总结一下,在Java中每使用一个变量都要定义类型,函数定义的时候如果有返回值还要把返回类型也要写上。python中定义列表很简洁不需要通过指定个数和内容来定义,Java中定义了个数以后是不能变的,如果需要可以变需要通过ArrayList<>来定义,类型也需要指定。总体感觉在同样的思路下,去完成一个代码,python的确完美胜出,正应了那句话:"Life is short,I use python"。
Python和Java的语法对比,语法简洁上python的确完美胜出的更多相关文章
- Python3 与 C# 基础语法对比(就当Python和C#基础的普及吧)
文章汇总:https://www.cnblogs.com/dotnetcrazy/p/9160514.html 多图旧排版:https://www.cnblogs.com/dunitian/p/9 ...
- Python3 与 NetCore 基础语法对比(就当Python和C#基础的普及吧)
Jupyter排版:https://www.cnblogs.com/dotnetcrazy/p/9102030.html 汇总系列:https://www.cnblogs.com/dunitian/p ...
- Python基础补充(二) 多核CPU上python多线程并行的一个假象【转】
在python上开启多个线程,由于GIL的存在,每个单独线程都会在竞争到GIL后才运行,这样就干预OS内部的进程(线程)调度,结果在多核CPU上: python的多线程实际是串行执行的,并不会同一时间 ...
- MongoDB的账户与权限管理及在Python与Java中的登陆
本文主要介绍了MongoDB的账户新建,权限管理(简单的),以及在Python,Java和默认客户端中的登陆. 默认的MongoDB是没有账户权限管理的,也就是说,不需要密码即可登陆,即可拥有读写的权 ...
- MongoDB的账户与权限管理及在Python与Java中的登录
本文主要介绍了MongoDB的账户新建,权限管理(简单的),以及在Python,Java和默认客户端中的登陆. 默认的MongoDB是没有账户权限管理的,也就是说,不需要密码即可登陆,即可拥有读写的权 ...
- 【ArcGIS遇上Python】ArcGIS Python批处理入门到精通实用教程目录
目录 1. 专栏简介 2. 专栏地址 3. 专栏目录 1. 专栏简介 Python语言是目前很火热的语言,极大的促进了人工智能发展.你知道在ArcGIS中也会有python的身影吗?事实上,在ArcG ...
- Python学习笔记:与Java 基础语法对比
闲着无聊学习下Python 的语法.由于我目前主要编程语言还是Java ,所以针对Python 的学习我主要是通过与Java 进行对比.我使用的是Python3,因此语法上也会遵循Python3 的规 ...
- Java, C#, Swift语法对比速查表
原文:Java, C#, Swift语法对比速查表 Java 8 C# 6 Swift 变量 类型 变量名; 类型 变量名; var 变量名 : 类型; 变量(类型推断) N/A var 变量名= ...
- Atitit.sql ast 表达式 语法树 语法 解析原理与实现 java php c#.net js python
Atitit.sql ast 表达式 语法树 语法 解析原理与实现 java php c#.net js python 1.1. Sql语法树 ast 如下图锁死1 2. SQL语句解析的思路和过程3 ...
随机推荐
- springboot(十一)SpringBoot任务
github地址: https://github.com/showkawa/springBoot_2017/tree/master/spb-demo/spb-brian-query-service 1 ...
- 【转】Postman 使用方法详解
1.Postman背景介绍 用户在开发或者调试网络程序或者是网页B/S模式的程序的时候是需要一些方法来跟踪网页请求的,用户可以使用一些网络的监视工具比如著名的Firebug等网页调试工具.今天给大家介 ...
- nginx 配置tp3.2
server { listen 80; server_name 域名; #charset koi8-r; #access_log /var/log/nginx/host.access.log main ...
- 暑期训练狂刷系列——Lightoj 1084 - Winter bfs
题目连接: http://www.lightoj.com/volume_showproblem.php?problem=1084 题目大意: 有n个点在一条以零为起点的坐标轴上,每个点最多可以移动k, ...
- Word排版技巧
点击打开链接 # 整体布局 ## 页面布局 如果是新建一个Word文件,这里「页面布局」一般不用设置了: 文字方向:从左到右: 页边距:普通(日常使用建议用适中或窄,节约用纸,提交的论文报告什么才用普 ...
- Kay and Snowflake CodeForces - 686D
Kay and Snowflake CodeForces - 686D 题意:给一棵有根树,有很多查询(100000级别的),查询是求以任意一点为根的子树的任意重心. 方法很多,但是我一个都不会 重心 ...
- 背包DP HDOJ 5410 CRB and His Birthday
题目传送门 题意:有n个商店,有m金钱,一个商店买x件商品需要x*w[i]的金钱,得到a[i] * x + b[i]件商品(x > 0),问最多能买到多少件商品 01背包+完全背包:首先x == ...
- Statistics gathering and SQL Tuning Advisor
1. https://www.pythian.com/blog/statistics-gathering-and-sql-tuning-advisor/ Our monitoring software ...
- AJPFX编写cmd界面下一键编译、执行java代码的bat脚本
此脚本适合刚接触java的同学,在cmd界面下用jc取代 复杂的 javac *.java + java main使用说明:把脚本内容复制到txt文本中,修改后缀名为.bat,运行一次即可完成配置, ...
- AJPFX简述java语言现状和发展
作为一种最流行的网络编程语言之一,java语言在当今信息化社会中发挥了 重要的作用.Java语言具有面向对象.跨平台.安全性.多线程等特点,这使得java成为许多应用系统的理想开发语言.java应用在 ...