c01章.s02节.打印HelloWorld

打印HelloWorld

[toc]

一 Maven项目文件结构

上一节我们学习了创建新的Maven项目,或者打开一个已存在的Maven项目。

如下图的标记1,2,3,4.

1.1 Project 的查看项目

标记1,选择Project方式,可以查看整个项目的文件结构。

1.2 项目名称和项目路径

标记2,可以看到顶级目录的项目名称,和项目的文件夹路径。该项目名称也可以称作父项目。

1.3 子项目Module

标记3, 是子项目,一个父项目里可以新建很多子项目,按照业务功能需要。子项目的文件目录结构和标记4一样。仅仅是从属关系上继承了一些父项目的属性配置。

1.4 Maven项目文件结构

标记4,是Maven项目代码编写和资源配置的文件夹结构。都是存放在src文件夹下。

其中有main目录和test目录。main目录下是写实际生产线上运行的代码和资源文件。test目录下是编写测试用例的代码和资源文件。

java代码都是编写在java文件夹下面。

非java代码都是编写在resources文件夹下面。

二 第一个Java程序

基于我们新建的HelloWorld项目,我们开始写第一个Java程序。

2.1 新建Class类文件

左键点击小三角,1,2,3. 右键 java包 -> New -> Java Class

image-20200616235759858

2.2 输入类名字

在下图弹出框中,输入Hello,作为类名,确定.

注意观察,最简单的类,写法,只有如下代码:

(以下备注内容,是代码的注释,用双左斜杠表示,不属于代码,不影响编译和执行)

public class Hello { //备注:不同的类,名字不同。都是由class修饰。加上一对花括号。

}
idea_11_02

2.3 在Hello类文件中写代码

2.3.1 程序主入口main函数

所有的程序入口都是main函数,不管多么复杂的项目,在独立运行作为服务进程的时候,只有一个main入口.

在class类文件Hello的花括号中输入快捷键psvm,回车. 就自动得到main函数的代码.

idea_11_03

你也可以手工编写如下main函数内容。注意观察main函数写法。

public class Hello {

    public static void main(String[] args) {//备注:main函数,是固定写法。
    }
}

2.3.2 编写println打印

在main函数的花括号输入快捷键sout,回车. 再输入如下内容. 注意严格区分大小写的。

public class Hello {

    public static void main(String[] args) {
        System.out.println("hello world. Mr/Ms."); 
        //备注:System.out.println是java自带的函数。用于打印字符串到控制台。字符串由英文字符的双引号括起来。
    }
}
idea_11_04

三 运行第一个Java程序

3.1 尝试运行

如下图,标记1,2,右键Hello类文件 -> Run 'Hello.main()'

你可能会得到如下一张图的错误.

idea_11_05

3.2 Error:java:错误:不支持发行版本5

同时你会看到多了一个目录target. Maven项目默认在target目录下,将我们编写的Java代码,调用JDK编译成可以执行的class文件。

这个错误的意思就是你想用版本14的java,生成编译版本为5的字节码.

因为版本相差太远,JDK 版本14已经不支持版本为5的字节码生成。

修改方法见下一步.

idea_11_06

3.3 编写设置Language level

Project Structures配置Language level,这个的作用是,告诉开发工具,你编写的代码是符合指定版本的开发语法的。

换个说法,如果你这里选择的版本太低,比如版本5,而你在项目中开发时,用到了更高版本的语法,那么就会报错。

如下图标记1,2,3所示。

  1. 点击左上角 File --> Project Structures

  2. Modules默认是继承Project的Language level设置. 也可以单独对Modules设置。点击Modules -->选中 hello-world.

  3. 选择Project default (14-Switch expressions) , 意思就是跟随Project的 Language level设置.也可以单独设置。

  4. 确定/Apply.

  5. 再次运行,你会发现还是不行.还有一处需要设置.

idea_11_07

3.4 编译设置bytecode版本

IDEA Settings中,设置Java编译时生成class文件的bytecode版本。它和Language level作用的地方有区别。

  1. 点击左上角 File --> settings (注意在Mac中不叫settings,叫Preference,位置也不同.如紧随其下的一张图.)

  2. 点击 Build,Execution,Deployment --> Compiler --> Java Compiler

  3. 看到1.5, 因为历史原因. 5就是1.5. Java版本1.8 就是8. 往后直接是9,10,11,12,13,14....
    (如果看不到Hello-world,可能是没有运行过,或者右边一点点可以看到(+-)按钮,添加.

    Mac中如下图则是在左下一点点有(+-)按钮.)
    这里我们可以选择你希望的目标字节码版本.我们设置为空. 就是 Same as language level.

  4. Ok/Apply .

  5. 此时运行代码成功。

idea_12
mac_idea.png

3.5 打印HelloWorld

再次运行,如下图标记1,2,3

你会看到Maven调用了JDK将标记1的Hello.java文件,在标记2的target目录下,编译生成了 Hello.class文件.

标记3,就是Java虚拟机执行该(.class)文件,在控制台打印出代码里的那段字符串.

idea_13

3.6 Java程序的执行过程

JDK(Java Development Kid,Java 开发开源工具包),是针对 Java 开发人员的产品,是整个 Java 的核心,包括了 Java 运行环境 JRE、Java 工具和 Java 基础类库。
JRE(Java Runtime Environment,Java 运行环境)是运行 JAVA 程序所必须的环境的集合,包含 JVM 标准实现及 Java 核心类库。
JVM(Java Virtual Machine,Java 虚拟机)是整个 Java 实现跨平台的最核心的部分。

Java 程序的运行必须经过编写、编译和运行 3 个步骤

  1. 编写:是指在 Java 开发环境中进行程序代码的输入,最终形成后缀名为 .java 的 Java 源文件。
  2. 编译:是指使用 Java 编译器对源文件进行错误排査的过程,编译后将生成后缀名为 .class 的字节码文件,不像C语言那样生成可执行文件。
  3. 运行:是指使用 Java 解释器将字节码文件翻译成机器代码,执行并显示结果。

Java 程序运行流程如图 1 所示。

01.png

字节码文件是一种和任何具体机器环境及操作系统环境无关的中间代码。它是一种二进制文件,是 Java 源文件由 Java 编译器编译后生成的目标代码文件。编程人员和计算机都无法直接读懂字节码文件,它必须由专用的 Java 解释器来解释执行,因此 Java 是一种在编译基础上进行解释运行的语言。

Java 解释器负责将字节码文件翻译成具体硬件环境和操作系统平台下的机器代码,以便执行。因此 Java 程序不能直接运行在现有的操作系统平台上,它必须运行在被称为 Java 虚拟机的软件平台之上。

Java 虚拟机(JVM)是运行 Java 程序的软件环境,Java 解释器是 Java 虚拟机的一部分。在运行 Java 程序时,首先会启动 JVM,然后由它来负责解释执行 Java 的字节码程序,并且 Java 字节码程序只能运行于 JVM 之上。这样利用 JVM 就可以把 Java 字节码程序和具体的硬件平台以及操作系统环境分隔开来,只要在不同的计算机上安装了针对特定平台的 JVM,Java 程序就可以运行,而不用考虑当前具体的硬件平台及操作系统环境,也不用考虑字节码文件是在何种平台上生成的。

JVM 把这种不同软、硬件平台的具体差别隐藏起来,从而实现了真正的二进制代码级的跨平台移植。JVM 是 Java 平台架构的基础,Java 的跨平台特性正是通过在 JVM 中运行 Java 程序实现的。Java 的这种运行机制可以通过图 2 来说明。

02.png

Java 语言这种“一次编写,到处运行”的方式,有效地解决了目前大多数高级程序设计语言需要针对不同系统来编译产生不同机器代码的问题,即硬件环境和操作平台的异构问题,大大降低了程序开发、维护和管理的开销。

提示:Java 程序通过 JVM 可以实现跨平台特性,但 JVM 是不跨平台的。也就是说,不同操作系统之上的 JVM 是不同的,Windows 平台之上的 JVM 不能用在 Linux 平台,反之亦然。

3.7 新建package

在easy-java项目中,你可能会看到如下的目录,它们在Java项目中,被称为package,中文叫“包”。在系统里,其实就是文件夹。

在Java项目中,它的作用是对不同功能作用的Java文件进行分类,便于管理。

创建package的方式如下图标记1,2.

标记3,在生成class文件的时候,它们也会生成对应的package。

package创建

文章和项目开源地址

一起学习,Java最简单易懂的零基础入门,答疑解惑,关注点赞github开源:https://github.com/BradYan/easy-java

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

推荐阅读更多精彩内容