《Java从小白到大牛精简版》之第3章 第一个Java程序

2024-04-17 14:32

本文主要是介绍《Java从小白到大牛精简版》之第3章 第一个Java程序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《Java从小白到大牛》纸质版已经上架了!!!
Java从小白到大牛书皮

本书第一个Java程序是通过控制台输出HelloWorld,以这个示例为切入点,向大家系统介绍Java程序的编写、Java源代码结构以及一些基础知识。

在Java中,程序都是以类的方式组织的,Java源文件都保存为.java文件当中。每个可运行的程序都是一个类文件,或者称之为字节码文件,保存为.class文件。要实现在控制台中输出HelloWorld示例,则需要编写一个Java类。

3.1 使用Eclipse实现

HelloWorld示例可通过多种工具实现,这一节首先介绍如何通过Eclipse实现。

3.1.1 创建项目

在Eclipse中通过项目(Project)管理Java类,因此需要先创建一个Java项目,然后在项目中创建一个Java类。

Eclipse创建项目步骤是:打开Eclipse,选择菜单“文件”→“新建”→“Java项目”,打开新建Java项目对话框,如图3-1所示。

下面简要说明图3-1所示各个选项:

  • 项目名:是要创建的项目名称。
  • 使用缺省位置:选中该选项,创建的项目会保存到工作空间中。
  • JRE:开发人员可以在这里指定项目运行所需要的JRE,默认是使用系统Path环境变量所指定的JRE。
  • 项目布局:是设置项目中源文件和类文件的存放目录,默认情况下选中“为源文件和类文件创建单独的文件夹”,这个选项选中后,源文件和类文件会在两个不同的文件夹下,即源文件被放置在当前项目的文件夹中,类文件被放置在当前项目的bin文件夹中;如果选中“使用项目文件夹作为源文件和类文件的根目录”,则源文件和类文件都被放置在当前项目根目录下,而且混合在一起。
  • 工作集:可以将多个相关的项目集中在一个工作集中管理。

图3-1所示对话框中看起来有很多项目需要设置,其实除了项目名称必须输入外,其他的完全可以采用默认值。选项设置完成后,单击“下一步”按钮,进入如图3-2所示的Java设置对话框,在这里可以对源文件和类文件的保放文件夹进行进一步设置。确认无误后,单击“完成”按钮创建项目。项目创建完成后,回到如图3-3所示的Eclipse主界面。

图3-1 新建Java项目对话框

图3-2 Java设置对话框

图3-3 项目创建完成

3.1.2 创建类

项目创建完成后,需要创建一个类执行控制台输出操作。选择刚刚创建的项目,然后选择菜单“文件”→“新建”→“类”,打开新建类对话框,在对话框中输入如图3-4所示内容。

下面简要说明图3-4所示各个选项:

  • 源文件夹:由于创建项目时候指定了源文件夹,这里使用默认值即可。
  • 包:是类所在的包,包名一般是公司域名的倒置,可以没有。
  • 名称:是类的名称。
  • 修饰符:是类前面的修饰符,这些修饰符含义,目前先不解释,选择公有就可以了。
  • 超类:即父类,这里可以指定该类的父类。
  • 接口:指定该类实现哪些接口。
  • 创建方法存根:就是在代码创建这些方法,本例中需要选中第一个方法(main方法),这个main方法是程序的入口。
  • 添加注释:这里可以设置代码是否生成注释,也可以修改注释模版。

图3-4 创建类对话框

在图3-4所示对话框中输入完成,单击“完成”按钮就创建了一个Java类,如图3-5所示,在包资源管理器中可以看到刚才创建的源文件。

图3-5 创建类完成

3.1.3 运行程序

修改刚刚生成的HelloWorld.java源文件,在main方法中添加输出语句,修该完成后代码如下:

package com.a51work6;public class HelloWorld {public static void main(String[] args) {    ①System.out.print("Hello World."); ②}
}

代码第①行中的public static void main(String[] args)方法是一个应用程序的入口,也表明了HelloWorld是一个Java应用程序(Java Application),可以独立运行。代码第②行的System.out.print(“Hello World.”)语句是输出Hello World.字符串到控制台。

提示 在Java SE平台有两种可以独立运行的程序:Java Application(Java应用程序)和Java Applet(Java小应用程序)两种。Java应用程序具有public static void main(String[] args),上述HelloWorld就是这种类型。Java小应用程序是主要是嵌入到网页中运行的,Java小应用程序是一种淘汰的技术,不再介绍Java小应用程序。

程序编写完成可以运行了。如果是第一次运行,则需要选择运行方法,具体步骤是:选中文件,选择菜单“运行”→“运行方法”→“Java应用程序”,这样就会运行HelloWorld程序了。如果已经运行过程一次,就不需要这么麻烦了,直接单击工具栏中的“运行”按钮,或选择菜单“运行”→“运行”,或使用快捷键Ctrl+F11,都可以就运行上次的程序了。运行结果如图3-6所示,Hello World.字符串到下面的控制台。

图3-6 运行结果

3.2 文本编辑工具+JDK实现

如果不想使用IDE工具(笔者建议出学者通过这种方式学习Java),那么文本编辑工具+JDK对于初学者而言是一个不错的选择,这种方式可以使初学者了解到Java程序的编译和运行过程,通过自己在编辑器中敲入所有代码,可以帮助熟悉常用类和方法。

注意 在2.3.3节介绍过EditPlus与JDK集成过程,2.3.3节集成方式有一个弊端是:不能执行带有包的Java应用程序。

3.2.1 编写源代码文件

首先使用任何文本编辑工具创建一个文件,然后将文件保存为HelloWorld.java。接着在HelloWorld.java文件中编写如下代码:

package com.a51work6;public class HelloWorld {public static void main(String[] args) {    System.out.print("Hello World."); }}

在Java中一个源程序文件中可以定义多个类,如下代码定义了三个类HelloWorld、A和B。

//HelloWorld.java源文件
package com.a51work6;public class HelloWorld {public static void main(String[] args) {System.out.println("Hello World!");}
}class A {}class B {}

**注意 一个源程序文件包含多个类时,需要注意如下问题:
1. 只能有一个类声明为公有(public)的。
2. 文件命名必须与公有类名完全一致,包括字母大小写。
3. public static void main(String[] args)只能定义在公有类中。**

3.2.2 编译程序

编译程序需要在命令行中使用JDK的javac指令编写,参考2.1.2节打开命令行,如图3-7所示,通过cd命令进入到源文件所在的目录,然后执行javac指令。如果没有错误提示,说明编译成功,编译成功则在当前目录下面生成类文件,如图3-8所示生成了三个类文件,这是因为HelloWorld.java源文件中定义了三个类。

图3-7 编译源文件

图3-8 编译成功

上述编译过程虽然成功了,但是运行时会有以下问题,这是由于HelloWorld.java源文件中定义了包com.a51work6,编译应该使用-d参数,编译指令如图3-9所示。

图3-9 编译有包的源文件

编译指令javac中的-d参数是指定类文件生成位置,-d后面跟的是一个目录的路径,本例中使用“.”点表示当前目录,编译成功之后的目录结果如下:

当前目录
│ HelloWorld.java
└─com└─a51work6A.classB.classHelloWorld.class

其中的com是目录,它在当前目录的子目录,a51work6也是目录,它是com的子目录,可以包com.a51work6会生成com\a51work6的目录结构。

3.2.3 运行程序

编译成功之后就可以运行了。执行类文件需要在命令行中使用JDK的java指令,参考2.1.2节打开命令行,如图3-10所示,通过cd命令进入到源文件所在的目录,然后执行java -classpath .;c:\com.a51work6.HelloWorld指令,执行成功在命令行窗口输出Hello World!字符串。

图3-10 运行类文件

注意 java和javac指令都可以带有-classpath(缩写-cp),它用来指定类路径,即搜索类的路径,类似于操作系统中的path,路径之间用分号分隔,其中点(.)表示当前路径。就本例而言运行java程序HelloWorld所需要的全部类都在当前路径下,因此只需要设置-classpath .就可以了,或者省略(当前路径不用指定)。

3.3 代码解释

经过前文的介绍,读者应该能够照猫画虎,自己动手做一个Java应用程序了。但还是对其中的一些代码不甚了解,下面来详细解释一下HelloWorld示例中的代码。

//包定义
package com.a51work6; ①//类定义
public class HelloWorld {//定义静态main方法public static void main(String[] args) { ③System.out.print("Hello World.");  ④    }}

代码第①行是定义类所在的包,package是关键字,com.a51work6是包名,包是一个命名空间,可以防止命名冲突问题,关于包的概念将在后面章节详细介绍。

代码第②行是定义类,public修饰符是声明类是公有的,class是定义类关键字,HelloWorld是自定义的类名了,后面跟有“{…}”是类体,类体中会有成员变量和方法,也会有一些静态变量和方法。

代码第③行是定义静态main方法,而作为一个Java应用程序,类中必须包含静态main方法,程序执行是从main方法开始的。main方法中除参数名args可以自定义外,其他必须严格遵守如下来两种格式:

public static void main(String args[])
public static void main(String[] args)

这两种格式本质上就是一种,String args[]和String[] args都是声明String数组。另外,args参数是程序运行时,通过控制台向应用程序传递字符串参数。

代码第④行System.out.print(“Hello World.”);语句是通过Java输出流(PrintStream)对象System.out打印Hello World.字符串,System.out是标准输出流对象,它默认输出到控制台。输出流(PrintStream)中常用打印方法:

  • print(String s) :打印字符串不换行,有多个重载方法,可以打印任何类型数据。
  • println(String x) :打印字符串换行,有多个重载方法,可以打印任何类型数据。
  • printf(String format, Object… args) :使用指定输出格式,打印任何长度的数据,但不换行。

修改HelloWorld.java示例代码如下:

public class HelloWorld {public static void main(String[] args) {//通过print打印第一个控制台参数System.out.print(args[0]);  ①//通过println打印第二个控制台参数System.out.println(args[1]);  ②//通过printf打印第三个控制台参数,%s表示格式化字符串System.out.printf("%s", args[2]);  ③System.out.println();int i = 123;//%d表示格式化整数System.out.printf("%d\n", i);  ④double d = 123.456;//%f表示格式化浮点数System.out.printf("%f%n", d);  ⑤System.out.printf("%5.2f", d);  ⑥}
}

编译HelloWorld.java源代码后,通过如图3-11所示,其中的java命令行后面的HelloWorld是要运行的类文件,Tony Hello World.是参数,多个参数用空格分割。

图3-11 在命令行中运行程序

上述代码第①行使用print方法打印第一个参数args[0],注意该方法是打印完成后面不换行,从输出结果中可见第一个参数Tony和第二个参数Hello连在一起了。代码第②行使用println方法打印第二个参数args[1],从输出结果中可见第二个参数Hello后面是有换行的。

代码第③、④、⑤、⑥行都是使用printf方法打印,注意printf方法后面是没有换行的,想在后面换行可以通过System.out.println()语句实现,或在打印第字符串后面添加换行符号(\n或%n),见代码第④行和第⑤行。代码第%5.2f也表示格式化浮点数,5表示总输出的长度,2表示保留的小数位。

本章小结

本章通过一个HelloWorld示例入手,介绍使用Eclipse和使用文本工具+JDK实现该示例具体过程。掌握Eclipse使用非常重要,但是使用文本工具+JDK对于初学者也很有帮助。最后详细解释了HelloWorld示例。

配套视频

http://www.zhijieketang.com/classroom/6/courses

《Java从小白大牛》纸质版:

京东地址

《Java从小白大牛》电子版:

百度阅读地址

这篇关于《Java从小白到大牛精简版》之第3章 第一个Java程序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/912059

相关文章

Java实现检查多个时间段是否有重合

《Java实现检查多个时间段是否有重合》这篇文章主要为大家详细介绍了如何使用Java实现检查多个时间段是否有重合,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录流程概述步骤详解China编程步骤1:定义时间段类步骤2:添加时间段步骤3:检查时间段是否有重合步骤4:输出结果示例代码结语作

Java中String字符串使用避坑指南

《Java中String字符串使用避坑指南》Java中的String字符串是我们日常编程中用得最多的类之一,看似简单的String使用,却隐藏着不少“坑”,如果不注意,可能会导致性能问题、意外的错误容... 目录8个避坑点如下:1. 字符串的不可变性:每次修改都创建新对象2. 使用 == 比较字符串,陷阱满

Java判断多个时间段是否重合的方法小结

《Java判断多个时间段是否重合的方法小结》这篇文章主要为大家详细介绍了Java中判断多个时间段是否重合的方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录判断多个时间段是否有间隔判断时间段集合是否与某时间段重合判断多个时间段是否有间隔实体类内容public class D

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui

Java覆盖第三方jar包中的某一个类的实现方法

《Java覆盖第三方jar包中的某一个类的实现方法》在我们日常的开发中,经常需要使用第三方的jar包,有时候我们会发现第三方的jar包中的某一个类有问题,或者我们需要定制化修改其中的逻辑,那么应该如何... 目录一、需求描述二、示例描述三、操作步骤四、验证结果五、实现原理一、需求描述需求描述如下:需要在

Java中ArrayList和LinkedList有什么区别举例详解

《Java中ArrayList和LinkedList有什么区别举例详解》:本文主要介绍Java中ArrayList和LinkedList区别的相关资料,包括数据结构特性、核心操作性能、内存与GC影... 目录一、底层数据结构二、核心操作性能对比三、内存与 GC 影响四、扩容机制五、线程安全与并发方案六、工程

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程

如何使用Java实现请求deepseek

《如何使用Java实现请求deepseek》这篇文章主要为大家详细介绍了如何使用Java实现请求deepseek功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.deepseek的api创建2.Java实现请求deepseek2.1 pom文件2.2 json转化文件2.2

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

Spring AI集成DeepSeek的详细步骤

《SpringAI集成DeepSeek的详细步骤》DeepSeek作为一款卓越的国产AI模型,越来越多的公司考虑在自己的应用中集成,对于Java应用来说,我们可以借助SpringAI集成DeepSe... 目录DeepSeek 介绍Spring AI 是什么?1、环境准备2、构建项目2.1、pom依赖2.2