乱斗一:变量及helloworld

零零碎碎学了一段时间的语言,一直想对比总结记忆一下。
我接触这几门语言的先后顺序,Python2.7 > Node > Golang> Python3.6 > Java.如果不特意说明的话,我所指的Python都是version 3.6.

变量声明及赋值

Java Node Go Python
int a=1; let a=1 a int = 1 a=1
  • Java和Go类型声明的位置不同
  • let是es6的关键字,表示声明一个变量
  • Node和Go声明一个常量都用关键词const,Java用final
  • Python最牛,根本不用声明变量。

那么问题来了,Python为什么不用声明变量?
因为声明变量的本质是在内存堆里开辟一块内存空间,并且在栈中的变量指向这个内存空间。
而python,首先会创建一块连续的内存来保存1,然后把变量名a贴在上面,这个变量名没有保存关于1的任何类型信息。
另外举个例子,比如:b = a
对于b=a,Java和Go都会在内存中开辟一块新的空间,进行了值拷贝。而python只是把变量b贴上1上面,而不会开辟新的内存空间。Node的话,我不了解。

hello world

Python

第一种:
print("hello world")
第二种:
if __name__ == "__main__":
  print("hello world")  

我的启蒙语言就是Python,所以我很长时间都不理解if __name__ == "__main__"到底是啥意思,后来接触了Go、C、Java之后,我理解了,这句话就是程序的入口,具体而言,就是当py文件自身被调用时,py文件的名字(___name____)是"___main____"。


Java

public class HelloWorld{
  public static void main(String[] args){
  System.out.println("hello world");
}
}

本来我是想先学Java的,可是看到Java显示个“hello world”都这么麻烦,我骂了一声“死变态”便转身投入了Python的怀抱。可是当我经历了上述的学习顺序后,我逐渐觉得Java写这么冗长,不是没道理的:

  • 被public修饰的类需要独享一个文件,文件名需和类名相同。
  • static表明,main是类的方法,python中要用@staticmethod来表示类方法
  • void表示该方法没有返回值
  • 在Java中函数不是一等公民,必须写类。所以有人评价,Java是最彻底的面向对象的语言。

Node

console.log("hello world")

打开浏览器打开“开发者工具”,即可输入该句。


Go

import "fmt"
func main(){
  fmt.Println("hello world")
}
  • Go的“fmt”包不是内建的,需要先引入。
  • 函数在Go中是一等公民,并且都没有,并且这点和C语言很像。

你可能感兴趣的:(乱斗一:变量及helloworld)