之前小白过来找学委学习了很多编程知识。然后他也推荐了一些朋友看学委的文章。
可是那些朋友编程都没有玩过,只想入门看看。
好吧,这个也不难的。
还记得我们是怎么学会语文的吗?下面围绕这个展开。
Java 是什么?
我们小时候学习语文的时候,也没有一下子懂几千个字,都是跟着学几个,写写字,造造句,模仿就会了。
Java跟我们学的汉语言一样,是一门语言。
汉语主要是中国人,华人能懂,当然外国朋友稍微花时间也能用汉语沟通。
Java语言或者其他语言像C语言,就是需要翻译之后,电脑才能懂,然后运行Java语言写的程序。
这里出现了一个新词‘程序’
什么是程序?
简单的程序,就像我们写好的一个句子,有几个词组合而成。
复杂的程序,就像一篇文章一样,由多个句子,图片组合而成。比如下面学委的一篇文章一样。
(PS:上文来自专栏=>雷学委趣味编程故事汇编)
启示:这就是程序
一个文章就是一些汉字词句组合而成的,经过思考整合,表达出整体的意思,传达作者的想法。
他们得到的解读会有一个共同点“这是一篇趣味故事讲编程的文章”。
**程序跟文章类似,有很多的语法,结构性的“句子”,编排而成。**然后运行在一个个电脑上,程序被执行。每台电脑,就像一个个读者,解读同一篇文章。
说的细致一点就是,电脑上的程序解释器,就像读者理解文章一样,解读程序的代码。
对于不懂中文的读者,他们就一头雾水了。相对应的,那Java解析器去编译解析Python语言代码,程序识别不了。
程序如何被执行?
文章可以被解读出不同层次,但是中心思想是确定的。不过对于程序,只要解释执行器是一样版本的,那么电脑会根据程序的要求办事情。
快速安装
下载安装,建议直接解压。 然后进去bin目录,继续下面代码的学习。
MacBook直接下载Dmg文件进行安装:
从代码直接学习
还记得我们初学语文的时候吗?或者初学古文古诗的时候。
通常都是记住一两个词,然后整篇背诵,随着记住的词汇阅读,突然有一天发现豁然开朗,整首诗,整首词,居然一下子贯通了!
学委想说编程也是如此般神奇!
把下面代码复制保存为Hello.java,并敲到会默写!
public class Hello{ public static void main(String[] args){ System.out.println("[雷学委初级Java教程]Hello Java"); } }
运行Java代码:
#编译Java代码 javac Hello.java #运行Java代码 java Hello
稍微补充一下:
javac 这是调用java 编译器进行代码编译
java 这个调用Java虚拟机解析编译好的字节码
如果不能运行请记得及时评论留言
这个很重要!
最终效果如下:
看看效果
好了,本次暂时讲解到这里。
打算学习的同学,请把上面的程序,每个词敲对,那么程序执行一致。
再来解释程序
//定义一个公开的类Hello //一对{}内为类的实现代码 public class Hello{ //定义main静态方法: 每一个Java程序都需要一个main方法 //方法也由于一对{}括起来,内部为一行一行代码。 public static void main(String[] args){ //一行代码,调用System.out对象的println方法,传入一个参数 System.out.println("[雷学委初级Java教程]Hello Java"); } }
上面的代码解释比较官方啊,我们直接观察代码:
我们看到这里***public***出现了好几次,它的作用是定义一个公共访问的***方法/类***。
类又是什么? 类就是对事物的抽象,对应得可以把它理解为一种句子,不同词语组成的通用句子。
主要类比的是(主语+动词+其他状态)的完整句子,比如下面:
我是雷学委
我是小白
我是某某某
这样的句子,我们人类理解为自我介绍的语句。像上面的Hello这个类做的事情就很简单,内部定义了一个方法,打印了自我介绍“[雷学委初级Java教程]Hello Java"。
这里又带出了一个问题:什么是方法,如何理解它?
可以这样理解方法为句子里面的动词,能够执行的,而且动词就是被不同句子使用的。
这里是为了带你理解程序,能把被执行的Java类是需要一个动词的,那就就是main方法,而且它还必须是static(静态的)。
(朋友别杠还有其他没有动词的句子,比如,“早上好”,“学委好”, 你说的没错,这种特例的句子就像没有静态方法的类,不方便你理解程序)
总结
上面学习的基础和代码操作经历的过程如下图:
我们一起编写了一个public的Hello类//写一个语法通的句子(比如说粤语)
终端输入:java Hello.java 编译了Hello类为字节码//把句子再转成统一语言,普通话
终端输入:java Hello 运行Hello类的main方法// 合格的句子读者看到了
Java虚拟机解释字节码为机器码,调用操作系统按需进行显示/播放。
(Java虚拟机,这里不多说,仅理解为Java字节码运行机器就可以了)
句子还分了方言?换言之,Java为啥需要翻译为字节码,直接解释执行不方便吗?
汉语系内很多方言,需要翻译为官方标准普通话,这样消息才能全国流通啊。十几亿人口发行多个方言多不方便还带了很多中间转换的成本。
Java设计者考量了这点,对每个平台(操作系统)都发行特定的Java安装包(包含Java运行环境,编译器),把Java源代码翻译为统一标准的字节码,然后一套字节码通用的执行在所有平台上,保存一致行为。
所以实际上整个流程如下,Java虚拟机解放了Java开发人员,不用每个操作系统写一套代码,只要编译一次,随处执行了,很棒吧。
思考一个问题:没有编写main方法代码能运行吗?
//定义一个公开的类Hello public class Hello{ }
这个代码能运行吗?我只想写一个类!丢给Java运行:
javac Hello.java java Hello
从上面可以看到我们的Java程序报错了,提示类没有main方法!