跳至主要內容

Different

LincZero大约 2 分钟

Different

目录

结构化编程

块作用域

嵌套块重定义变量

  • C/C++、js:可以在嵌套的块中重定义一个变量。在内层定义的变量会覆盖在外层定义的变量。
  • Java:认为这样有可能会导致程序设计错误,因此在Java中不允许这样做。

流程控制(for、switch、elif)

for循环语句

  • C语言、Java、js
    • for(exg1;exg2;exg3){ },分号分割不同操作,逗号可分割多个表达式
  • Python
    • for i in list:for i in range(start,end[,step]):

switch条件判断语句

  • Python
    • 没有switch语句,其他语言几乎都有

if-else条件判断语句

  • C语言、Java、js
    • if - else if - else
  • python
    • if - elif - else

高级循环

  • Java(Java SE 5.0新增)

    for (int i=1; i<=10; i++) statement;			// for
    for (variable:collection) statement;			// foreach
    for (int element : a)
        System.out.println(element);
    
  • C++11 foreach

    for (int i=1; i<=10; i++) statement;			// for
    for (double x : prices) cout << x << std::endl;	// 只能输出
    for (double &x : prices) x = x*0.8;				// 可以改变数组的内容
    
  • C++ QT

    foreach (int, QList<int>) { /*process*/ }
    
  • Python

    for i in range(start,end[,step]):				# 基于次数循环
    for i in list:									# 基于迭代器循环
    sum(i*i for i in range(10)						# exp-for-in 生成器表达式(和列表初始化)
    [x^2 for x in range(10)]						# exp-for-in 列表解析
    
  • JavaScript

    for (int i=1; i<=10; i++) statement;			// for
    array.forEach(function(element){/**/});			// foreach,回调匿名函数
    array.forEach((element) => {/**/});				// foreach,回调箭头函数
    var array = [1,2,3]
    array.filter((e) => {e=>e>2})					// filter	[3]		返回布尔,可简写return
    array.map((e,i) => {return e*e})				// map		[1,4,9]	映射
    array.reduce((pre,next) => {return pre+next})	// reduce	6		将返回值重新赋值给pre
    
  • JavaScript Query

三目运算符

  • C、Java、Js:
    • 条件 ? true_exp : false_exp
  • Python:
    • true_exp if 条件 else false_exp

遍历对象数据类型

  • Js遍历对象
    • 方法上分类
      • forEach遍历Object.keys(obj).forEach((key)=>{})
      • for..in..遍历for(var k in obj) { }(遍历键)
      • 其他Object.getOwnPropertyNames(obj),高级循环函数等方法
    • 键值对上分类
      • 遍历对象键值对:遍历键,再循环中引用obj[key]为值
      • 遍历对象键Object.keys(obj)for(var k in obj) { }
      • 遍历对象值Object.values(obj)
  • Python遍历字典
    • 键值对上分类
      • 遍历字典键值对for k,v in dict.items():
      • 遍历字典键for k in dict.keys():for k in dict:
      • 遍历字典值for v in dict.values():

跳出多重嵌套

与C/C++不同:跳出多重嵌套

  • Java还提供了一种带标签的break语句,用于跳出多重嵌套的循环语句。有时候,在嵌套很深的循环语句中会发生一些不可预料的事情。

    标签必须放在希望跳出的最外层循环之前,并且必须紧跟一个冒号

    事实上,可以将标签应用到任何语句中,甚至可以应用到if语句或者块语句中。(可能可以用来模拟goto语句,但不建议那样做)