Java语法 | 第一个Java程序

前言

C: 在上一篇,我们搭建好了 Java 语言的开发环境,这一篇查老师就带着大家愉快的写出我们的第一个程序,不过本篇我们是使用记事本(比较原生态)来写程序,并不使用其他的高级开发工具,所以可能会显得比较低端,请大家见谅。

饭要一口一口的吃,工具也要一点一点的升级,技术也要一点一滴的积累。

开不开心

系列阅读

查老师有话说: 虽然查老师心中你是最棒的,但是如果你上一篇没看,还是建议打开快速串一下,以防止对下方的内容无法保持连贯性。

开挂满分

开发步骤

一个Java程序的开发,需要经过:编写源码,编译源码和运行,这三大阶段。

day01-3-1

和查老师来体验一下吧!源代码/源程序:程序的原始指令,由程序员编写

1.首先使用记事本编写源代码文件( Java 程序的源代码文件扩展名为 .java)。

day01-3-2

2.打开cmd命令窗口,进入源代码所在地,使用 javac 命令编译,生成 .class 文件。

day01-3-3

查老师有话说: 编写完的源代码,计算机是无法直接执行的,因为它只识别二进制,所以我们需要一个 翻译官 帮助我们去翻译下,这样计算机才能够识别。翻译官 就是编译器,编译之后就会出现一个扩展名为 .class 的字节码文件(它并非纯二进制文件,是运行于JVM中的一种伪二进制文件),这时才能够被计算机执行。

3.使用 java 命令运行 .class 文件。

运行 .class 文件时不能加上 .class 后缀名。

day01-3-4

这样我们就实现了第一个 Java 程序,我们借助它给计算机下达了一个在控制台输出 Hello World!!! 的指令。

查老师有话说: 为什么我们开始编写的第一个程序要输出 Hello World 这句话?

实际是因为《The C Programming Language》这本 C 语言书籍中使用它做了第一个演示程序,非常著名,所以后来的程序员在学习编程或进行设备调试时延续了这一习惯。

一个程序员才懂的冷笑话:一位资深程序员到了退休的年纪,为了给自己的晚年生活增加点乐趣,开始学习书法,在开始学习书法的第一天,资深程序员铺开纸张,大笔一挥 Hello World

基本程序结构

刚才我们编写了第一个 Java 程序,尽管背了相关单词,但肯定还是看的云里雾里的。查老师先给你个提醒,现在呢不要求你过多理解它们的含义,只需要知道它的效果和注意事项即可。随着学习的深入,慢慢就会深入认识和理解了,千万别钻牛角尖 ,因为还没给你讲的肯定是因为查老师认为目前还不是太适合你的,欲速则不达

下方是你现在需要记忆的注意事项和规范:

  1. 类名与文件名完全一致,首字母大写(帕斯卡/大驼峰命名法)。

  2. main() 方法是程序的入口,四要素必不可少。

  3. 核心语句:System.out.println(); 从控制台输出信息,S是大写。( Java 严格区分大小写)

  4. { 和 }一 一对应,缺一不可。(注意模仿查老师的编写习惯)

  5. 注意要有层级缩进,一行只写一条语句即可。

day01-3-5

查老师有话说:“好的代码应该是给人看的,而不是给机器看的。” 上面的5条注意事项,其实4条都在强调规范,编码规范非常重要!

一个软件的生命周期中,80%的花费都在于维护。几乎没有任何一个软件,在其整个生命周期中,均由最初的开发人员来维护。编码规范可以改善软件的可读性,可以让程序员尽快而彻底地理解新的代码。更多规范除了模仿查老师文章示例习惯外,还请后续随时与查老师一起解读《阿里巴巴Java开发手册》

输出语句

其实输出功能,不仅仅只有 println() 这一个语法,还有去掉了 ln 之后的 print() 也可以实现。

System.out.print(); // 输出完不换行
System.out.println(); // 输出完换行

如果想让 print() 实现 println() 的效果,可以借助转义符。

转义符 说明
\n 将光标移动到下一行的第一格
\t 将光标移动到下一个水平制表位置
// 下方前两行和第三行代码是等效的。
System.out.println("Hello");
System.out.println("World");
System.out.print("Hello \n World\n");

注释

在 Java 的编写过程中我们需要对一些程序进行注释,这样除了自己更方便阅读,别人也更好理解我们的程序,所以我们一定要适时的加一些注释,可以是编程思路或者是程序的作用。

Java 中有三种注释:

  1. 单行注释以 // 开始;
  2. 多行注释以 /* 开头,以 */ 结尾;
  3. JavaDoc(文档注释)注释以/**开头,以*/结尾(文档注释前期了解,后期再掌握)
/**
 * HelloWorld.java           
 * 第一个Java程序
 */
public class HelloWorld{
    public static void main(String[ ] args){
        // 输出消息到控制台(单行注释后注意添加一个空格,这是一个小规范)
        System.out.println("Hello  World!!!");      
    }
}
注释

跨平台原理

《Java语法 | Java概述》中,查老师讲 Java 的能力时就埋了一个伏笔,Java 程序是跨平台的,何谓跨平台?查老师给你举个非跨平台的程序例子,下图是百度网盘客户端程序的下载页面,它为了能够运行在不同的平台(系统)上,开发了6套系统(其实是7套,还有一套网页版)。看到这其实你就应该能明白为什么跨平台是一个非常优秀的能力了。

day01-3-x1
day01-3-8

而经过刚才编写完第一个 Java 程序之后,我们思考一下 Java 为什么能跨平台?其实在开发步骤中就能找到原因。编译!编译会将源代码转变为字节码文件(伪二进制),而这伪二进制内容未来运行时是运行在 JVM(Java Virtual Machine)上的,换而言之,其是因为 JVM 能跨平台安装,所以 Java 才能实现跨平台

由此,Java 程序员就可以不用考虑所写的程序要在哪里运行了,反正都是在 JVM 虚拟机上运行的,JVM 会负责将其变成相应平台的机器语言,而这个转变并不是程序员应该关心的。后续的很多优秀程序设计都采用了该思想。

day01-3-9

Java虚拟机有自己完善的硬件架构,如处理器、堆栈等,还具有相应的指令系统。

Java虚拟机本质上就是一个程序,当它在命令行上启动的时候,就开始执行保存在某字节码文件中的指令。Java语言的可移植性正是建立在Java虚拟机的基础上。任何平台只要装有针对于该平台的Java虚拟机,字节码文件(.class)就可以在该平台上运行。这就是“一次编译,多次运行”。

Java虚拟机不仅是一种跨平台的软件,而且是一种新的网络计算平台。该平台包括许多相关的技术,如符合开放接口标准的各种API、优化技术等。Java技术使同一种应用可以运行在不同的平台上。Java平台可分为两部分,即Java虚拟机(Java virtual machine,JVM)和Java API类库。[1]

目前先了解到这种程度即可,JVM 深入学习是未来提升 "Java 内功" 的重要一步,但它不太适合刚学习的你。

编译和反编译

从刚才的学习中,我们清楚了编译是将源代码文件转换为了字节码文件,这字节码文件也是以后我们运行所需的。如果有一天,你的老板给你了一堆字节码文件,让你去借鉴一下内容(源代码),你当然知道字节码文件里是一堆乱码了,所以随着而来的,我们需要它再转换为源代码文件,这就是反编译,我们可以借助工具来更快,更好的批量处理。

编译: 将源文件(.java)转换成字节码文件(.class)的过程称为编译。

反编译: 将字节码文件(.class)转换回源文件(.java)的过程称为反编译。(常用有Jad、FrontEnd、jd-gui)

此处仅仅演示利用 Jad 来将 HelloWorld.class 进行反编译,类似的工具还有 jd-gui 等。

day01-4-1
day01-4-2
day01-4-3

参考文献

[1]顾玮. Java虚拟机的分析与研究[J]. 办公自动化,2017,22(9):35-36,11

后记

好了,第一个 Java 程序的介绍也就到这儿结束了,本篇的作业请微信搜索关注: 查老师的讲义 ,然后回复 第一个Java程序作业 即可。

今天这篇感觉怎么样?概念是否清楚了?语法是否记住了?万事开头难,加油啊同学!

查老师有话说: 对于技术的学习,查老师一贯遵循的步骤是:先用最最简单的 demo 让它跑起来,然后学学它的最最常用 API 和 配置让自己能用起来,最后熟练使用的基础上,在空闲时尝试阅读它的源码让自己能够洞彻它的运行机制,部分问题出现的原因,同时借鉴这些技术实现来提升自己的代码高度。

所以在查老师的文章中,前期基本都是小白文,仅仅穿插很少量的源码研究。当然等小白文更新多了,你们还依然喜欢,后期会不定时专门对部分技术的源码进行解析。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343