知识屋:更实用的电脑技术知识网站
所在位置:首页 > 科技  > 软件

Java程序设计:学习笔记(1

发表时间:2022-03-25来源:网络

声明:

本文内容基于“吉首大学软件学院-Java程序设计(Java面向对象程序设计)”网课与个人实践经验修改编写而成。本文属于Arcadia项目组成部分。若有错误或不足之处存在请联系专栏作者指出,谢谢。本文禁止转载。

更新:

2020.03.12:更新演示案例

2020.03.27:更新文章专栏归属,更新文章封面

1.1 Java的发展

Java发展的四个阶段 1.第一阶段——萌芽期
时间:1990年-1994年
主要产品:Oak语言
发布者:Sun MicroSystems公司 2.第二阶段——完善期
时间:1995年-1998年
产品:Java语言(1995),JDK1.0(1996),JDK1.2(1998)
发布者:Sun MicroSystems公司
备注:1998年12月8日,企业平台J2EE发布,标志着里程碑式产品的诞生。在提高性能的基础上集成了完整的API。 3.第三阶段——平稳期
时间:1999年-2004年
产品:J2SE/J2EE和J2ME(1999)、JDK1.3(2000)、JDK1.4(2000)
发布者:Sun MicroSystems公司
备注:Java已经成为最为流行的网络编程语言,并且在移动计算和智能制造等领域得到了广泛应用。 4.第四阶段——发展期
时间:2005年-至今
产品:JDK1.5(2005)、Java SE 8.0(JDK1.8)(2014年)
发布者:ORACLE公司
备注:2009年4月20日甲骨文(Oracle)公司以74亿美元收购Sun MicroSystems公司,获得Java版权。 Java技术分支: Java SE(Java Standard Edition,标准版)
前身是Java J2SE,2005年后更名为Java SE。是EE企业版和ME微型版的基础。包含构成Java语言核心的类。比如:数据库连接、接口定义、数据结构、输入/输出、网络编程等。 Java EE(Java Enterprise Edition,企业版)
前身是J2EE,2005年后更名为Java EE。包含Java SE中的所有类,并且还包含了用于开发企业级应用的类。比如:EJB、Servlet、JSP、XML、事务控制,也就是现在Java应用的主要方向,像一些银行或电信的系统大多基于此架构。 Java ME(Java Micro Edition,微型版)
前身是J2ME,2005年后更名为Java ME。用于消费类电子产品的软件开发。比如:传呼机、智能卡、手机、PDA、机顶盒。现在已经被Android开发所取代。

1.2 Java简介

Java的特点 1.面向对象性
相比传统的“面向过程”的设计语言能更真实地模拟现实世界。 2.简洁性
1.Java的语法与C++很接近
2.Java省略了C++中很难理解的诸如操作符重载、多继承、自动强制类型转换等特性。
3.Java丢弃了C++中的“指针”,从而彻底消除了安全隐患。
4.Java提供了自动垃圾收集功能,使得程序员不必为内存管理而担忧。 3.可移植性(平台无关性)
指程序不经修改就能在不同的硬件或软件平台上运行的特性,即“一次编写、处处运行”。利用Java编写的程序,只需做少量修改或者不经过修改,就能够在Windows、MacOS、UNIX、Linux和Android等软件平台上运行。而C/C++针对当前源程序所在的特定平台对其源文件进行编译、链接、生成机器指令,即根据当前平台的机器指令生成可执行文件。不能保证C/C++源程序所产生的可执行文件在所有的平台上都能正确地被运行,其原因是不同平台可能具有不同的机器指令。 4.解释型
Java源程序被编译为字节码格式,在运行时,Java平台中的Java解释器对这些字节码进行解释执行。虽然这种解释性特征降低了程序的执行效率,但达到了平台无关性的目标,并且随着处理器运行速度的不断提高,其对表现在用户交互层面的运行效率的影响也逐渐减小。 5.适合分布式计算
Java支持Internet应用开发,它的网络应用编程接口(Java.net)提供了丰富的类库来支持TCP和UDP编程。 6.较好的运行效率
Java的运行效率与C/C++等编译型语言相比会相对较低,但高于JavaScript、VBScript、Perl、Python、Ruby、MATLAB等解释型语言。Java伪编译器将Java源程序转换为中间代码(字节码)后再解释执行。当对执行性能有更高的要求时,利用JIT(Just-In-Time)编译器技术可将字节码转换成机器码,然后将其缓冲下来,需要时可直接执行。随着JIT编译器技术的发展,Java的运行速度越来越接近于C++。 7.较高的应用安全性
Java通常被用在网络环境中。为了确保复杂网络环境下的应用安全,Java提供了安全防范机制,并提供安全管理机制让Java应用可以设置安全哨兵确保应用程序的安全。 8.稳固性
Java采用强类型机制、异常处理、垃圾自动收集、丢弃指针和安全检查机制等措施来保障Java程序的稳固性。 9.多线程处理
线程是一种轻量级的进程,是现代程序设计中非常重要的一种特性。Java提供了简洁的多线程处理机制,利用同步机制来确保同步线程的安全。 10.动态语言
Java程序需要的类(API)能够动态地被载入到运行环境,也可以通过网络来载入所需要的类,该特性使Java能适应环境的动态变化,并且便于软件升级;另外,通过反射机制可以简单、直观地查询Java程序运行时的状态信息。 11.中性体系结构
Java源程序(后缀为Java的文件)在Java平台上被编译为体系结构中里的字节码格式(后缀为class的文件),然后可以在拥有JVM的平台上运行,这种方法适合于异构网络环境和软件分发。 Java程序的三种基本类型: 1.Application
即“Java应用程序”,是可以独立运行的Java程序,由Java解释器控制执行,也是最常见的类型。 2.Applet
即“Java小程序”,主要应用于网页编程。不能独立运行(嵌入到Web页中)。由与Java兼容的浏览器控制执行。 3.Serverlets
即将Java技术用于CGI编程的解决方案。是运行于网络服务器上的、作为来自于网络浏览器或其他HTTP客户端的请求和在服务器上的数据库及其他应用程序之间的中间层程序。

1.3 Java程序运行机制

Java虚拟机(Java Virtual Machine,JVM) 在一台计算机上由软件或硬件模拟的通过Java语言运行虚拟计算机。 Java程序运行的主要环节: 1.Java源程序(.java)经过编译,生成与平台无关的字节码(.class)。 2.随后字节码被加载到不同平台中的JVM被解释执行。 3.确认安全后,JVM会把字节码转换成具体平台的机器指令,由该平台执行这些指令。

1.4 搭建Java开发环境

Java基础环境 1.SDK(Softwore Development Kit) SDK(Softwore Development Kit,软件开发工具包)是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等创建应用软件的开发工具的集合。用于Java的一系列开发工具与环境组合都属于SDK。 2.JDK(Java Development Kit) JDK(Java Development Kit,Java开发工具包)是目前的主流Java开发环境。为了提高Java程序的开发效率,目前有很多集成开发环境(Integrated Development Environment,IDE),诸如Eclipse(主流)、MyEclipse、JBuilder、JDeveloper、JCreator等。使用这些集成开发环境能帮助开发者快速地开发应用系统。 3.JRE(Java Runtime Environment) JRE(Java Runtime Environment,Java运行环境)是运行Java程序所必需的运行环境。JRE包括Java虚拟机(Java Virtual Machine,JVM),以及Java平台核心类和基础Java平台库。用户需要通过JVM才能在操作系统上执行Java应用程序(Java Application)。所以电脑上没有安装JVM,那么这些Java程序将不能够执行。 4.JVM(Java Virtual Machine) JVM(Java Virtual Machine,Java虚拟机)是一种能够运行用Java语言编写的程序的编程语言虚拟机。是Java平台的一个重要环节。 包含关系由大到小为:SDK、JDK、JRE、JVM 安装配置JDK的一般步骤(以Windows平台JDK1.8为例) 1.登录甲骨文官网(http://www.oracle.com)找到JDK1.8下载页面 进行下载(注意:暂时不建议自行下载安装Java软件(即JRE)后再安装JDK,可能会出现兼容性问题。) 2.根据JDK安装程序提示进行安装 3.配置环境变量
Windows 10系统可通过右键“此电脑”——“属性”——“高级系统设置”——“高级”——“环境变量”设置以下环境变量: Java环境变量(例如:C:Program FilesJavajdk1.8.0_05):为JDK安装目录路径。

此处以JDK版本8u241环境变量设置路径为例 Path环境变量(例如:%JAVA_HOME%bin):JDK安装完成之后,还需要对一些操作命令进行配置,对于Java程序开发而言,主要会使用JDK的两个操作命令:“javac.exe”和“java.exe”。这两个程序所在的路径为:“C:Program FilesJavajdk1.8.0_65bin”。由于这些命令不属于Windows操作系统,所以要想使用它们的话就需要配置Path环境变量。

此处以Windows 10环境变量设置示例 CLASSPATH环境变量(例如:.;%JAVAHOME%libdt.jar;%JAVA_HOME%libtools.jar)为操作系统指定Java类库的路径。在执行Java命令时,本地操作系统将启动一个JVM虚拟机,而JVM在运行时需要通过CLASSPATH路径加载所需要的类(.class文件),如果没有找到则在CLASSPATH目录下查找。默认情况下CLASSPATH是指当前目录(当前命令窗口所在的目录)。

此处以JDK版本8u241环境变量设置路径为例 4.测试JDK环境配置情况
“Win+R”组合键调用“运行”窗口后输入“cmd”并回车启动Windows命令行(Powershell与CMD皆可),在命令行中分别输入“javac”与“java”后回车,若系统返回如下图所示的命令提示即为配置成功。

javac命令测试环境变量配置成功

java命令测试环境变量配置成功 JDK目录(JDK目录根据安装包版本的不同内容会有所删减)

JDK13.0.2安装目录图例 1.bin
JDK包中命令及工具所在目录 2.jre
运行环境目录 3.lib
类库所在目录 4.db
附带数据库目录 5.include
包含本地代码的C头文件的目标 6.src.zip
源代码压缩头文件 JDK常用工具(例如:C:Program FilesJavajdk-13.0.2bin) 1.javac.exe
Java语言编译器(将“.java”源文件编译成“.class”字节码文件) 2.java.exe
Java字节码解释器(运行字节码文件后由java虚拟机对字节码进行解释和运行。) 3.javadoc.exe
文档生成器 4.javap.exe
Java字节码分解程序 5.javah.exe
JNI(Java Native Interface,JNI)编程工具(JNI是Java平台的一部分,它允许Java代码和使用其他语言的代码进行交互,以确保代码在不同的平台上方便移植。) 6.appletviewer.exe
小程序(不是微信小程序)浏览工具 7.jar.exe
打包程序

1.5 第一个Java应用程序

编写案例程序 1.建立Java源程序文件
利用记事本在桌面建立Java源程序文件,并命名为“ Hello.java”。切记在键入代码时一定要遵守Java平台的严苛语法规则并区分大小写。 /** * @Java Test Program * @Version 1.0 */ public class Hello { public static void main(String[] args) { System.out.println("Powered By JDK8u241"); System.out.println("Programmed for Windows 10"); } }

Hello.java代码示例 2.编译Hello.java
“Win+R”组合键调出“运行”窗口后输入“cmd”并回车启动Windows命令行,输入“cd desktop”后回车挂载桌面目录,再输入“javac Hello.java”并回车以进行编译。编译完成后会在桌面(或同一目录)下生成“Hello.class”文件。

Hello.class文件 3.执行字节码文件

执行字节码文件成功

因JDK与JRE版本兼容问题导致字节码文件执行失败

1.6 Eclipse入门

Eclipse简介 Eclipse是著名的跨平台的自由集成开发环境(IDE)。是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。Eclipse最初是由IBM公司开发的替代商业软件Visual Age For Java的下一代IDE开发环境,2001年11月贡献给开源社区。现在它由非营利软件供应商联盟Eclipse基金会(Eclipse Foundation)管理。微软已经加入了Eclipse基金会。 Eclipse操作界面简介

Eclipse操作界面的4大功能区 透视图(Window/Perspective/Open Perspective):
Eclipse工作台提供的附加组织层,它实现多个视图的布局和可用操作的集合,并为这个集合定义一个名称。例如,Eclipse提供的Java透视图组织了与Java程序设计有关的视图和操作的集合,而“调试”透视图负责组织与程序调试有关的视图和操作集。在Eclipse的Java开发环境中提供了几种常用的透视图,如“Java”透视图、“资源”透视图、“调试”透视图、“小组同步”透视图等。不同的透视图之间可以进行切换,但是同一时间内只能使用一种透视图。 视图(Window/Show View): 多用于浏览信息的层次结构和显示活动编辑器的属性。例如,“控制台”视图用于显示程序运行时的输出信息和异常错误,而“包资源管理器”视图可以浏览项目的文件组织结构。视图可以单独出现,也可以与其他视图以选项卡样式叠加在一起,它们可以有自己独立的菜单和工具栏,并且可以通过拖动随意改变布局位置。 Eclipse常用快捷键 Ctrl+C:复制; Ctrl+V:粘贴; Ctrl+Z:撤销; Ctrl+X:剪切; Ctrl+D:删除当前行; Alt+上/下方向键:移动当前行; Ctrl+/:完成或取消单行或多个单行的注释; Ctrl+Shift+/:完成多行注释; Ctrl+Shift+:取消多行注释; Ctrl+Shift+F:格式化代码。 利用Eclipse开发一个简单Java项目(使程序输出特定文字) 1.启动Eclipse

Eclipse主界面 2.通过File/new/Java Project新建一个名为JSU的项目

新建项目JSU 3.通过File/New/Class新建一个类Hello

新建类Hello 4.写入程序代码
注意:入口方法的语法不止一种,比如: 1."public static void main (String [] args)"(案例所用) 2."static public void main (String [] args)"(“public”与“static”调换位置) 3."public static void main (String args [])"(“[]”与“args”调换位置)

写入程序代码 5.通过Run/Run(或者快捷键Ctrl+F11)运行程序

运行菜单

运行结果 利用Eclipse开发一个简单Java项目(程序利用用户输入值计算圆的周长与面积) 1.打开Eclipse

Eclipse主界面 2.通过File/new/Java Project新建一个名为JSU的项目

新建项目JSU 3.通过File/New/Class新建一个类Circle

新建类Circle 4.写入代码
注意:第十行代码中引入了一行声明“@SuppressWarnings("resource")”,此声明用于使编译器在编译过程中忽略Java源文件编程过程中因语法不严谨而导致以黄色高亮出现的“resource leak”资源溢出警告(此信息类型为警告而不是异常,不会影响代码的整体运行效果,但是不建议在实际应用中启用声明,因为这会使编译器忽略此警告,会给代码的后期维护与迭代更新留下隐患。)由于第十二行中名为“sc”的Scanner(扫描器)通过“new Scanner(System.ini)”创建后并未关闭input stream(输入流)(关于“@SupressWarnings”注解,可参考访问此博客以获取更多详细信息)。对于此警告,可使用更严谨正统的表述方法。很幸运的是,Eclipse提供了本身就提供了校正建议功能,可以得到用于解决此问题的一些预案与建议。点击行标处的黄色警告标识可以看到系统给出了预案之一“Surround with try-with-resources”,这个语句用法是JDK7中开始提供的一个新的异常处理机制,它能够使开发者很容易地关闭在 try-catch 语句块中使用的资源(在JDK7以前可能需要“finally”语句模块来关闭资源)。点击或回车后可以自动应用此语句并消除对应的警告提示。而当鼠标移至以黄色高亮形式标识的“sc”处后则会出现另一个包含了“@SupressWarnings”解决方案的提示窗,点击其列出的解决方案后也可以自动应用(关于“try-with-resources”语句,可以访问此博客以获取更多详细信息)。

第十二行行标处出现了一个“resource leak”警告标识,以及“sc”会以黄色高亮形式标注(上图不明显)

点击行标处弹出的解决方案框,第一序位为“try-new-resources”解决方案

将鼠标指针移至以黄色高亮表示的“sc”处出现另一解决方案框,第一、二序位为对不同的对象应用“@SupressWarning”声明

包含了“@SupressWarnings”声明的源代码

包含了“try-new-resources”语句的源代码 5.通过Run/Run(或者快捷键Ctrl+F11)运行程序

运行结果

2.1 Java符号集

Java符号规范 Java采取了国际化的Unicode字符集,2个字节存储1个字符,可以标识65536个字符,包括拉丁字母、汉字、日文和其他许多语言中的字符。 常见字符编码 1.ASCII编码
采用了一个字节编码,主要针对英文编码。用于显示现代英语和其它西欧语言。 2.ISO-8859-1 又称Latin-1,是国际化标准指定的,主要为了西欧语言中的字符编码,与ASCII兼容。 3.GB2312/GBK/GB18030 主要用于汉字编码,三种编码是包含关系。 4.Unicode 统一了全世界上所有文字的编码,Unicode有几种实现,例如UTF-8,UTF-16,UTF-32。 标识符简介 在Java程序中,包、常量、变量、方法、类和参数等成分都有一个唯一的名字以标识它的存在和唯一性,这个名字就是标识符。Java语言中的标识符由字母(英文字母,希腊字母,汉字等Unicode字符)、下划线、美元符号和数字组成,长度不受限制,但区分字母大小写。 标识符的格式要求 1.标识符的第一个字符不能是数字。 2.标识符不能是关键字。 3.标识符不能是“true”、“false”和“null”(尽管它们不是关键字)。 4.自定义标识符要“见名如意”。 标识符范例 1.good_luck 2.HelloWorld 3.dog$ 4.¥中国 5._abc 6.list#score(非法) 7.computer1 8.123computer(非法) 9.abcdef 10. 123 标识符注意事项 在Java中,基本输入元素(分隔符,关键字等)都是采用ASCII编码,而自定义标识符、字符、字符串和注解则采用Unicode编码。 1.在Java中,基本输入元素(分隔符,关键字等)都是采用ASCII,而自定义标识符、字符、字符串和注解则采用Unicode编码。 2.Unicode只能用在Java内部,当设计打印、屏幕显示、键盘输入等外部操作时,仍由计算机的具体操作系统决定其表示方法。例如,简体中文Windows 10的默认字符集GBK。 关键字 也称为保留字,是Java语言中被赋予特定用途或被赋予特定意义的一些标识符,它们在程序中有着不同的预定作用,这些标识符不能当作自定义标识符使用。 关键字范例 1.abstract http:// 2.int
3.break
4.byte
5.goto
6.switch

2.2 Java程序结构

解构示例 public class Hello { public static void main(String[] args){ System.out.println("Hello!Java!") System.out.println("Structure") System.out.println("Demostration") public:访问权限控制符,用public class修饰的类名必须与程序源文件名相同。 class:类标识符 Hello:类名 public static void main(String[] args){:主方法,Java程序以main方法(主方法)作为运行起点,相当于C程序从main方法开始运行。 System.out.println...:方法体

2.3 编程规范与注释

编程风格 规定了代码的格式规范,优秀的编程风格易于阅读,并且易于后期维护。 部分编程风格类别 1.Allmans风格
又称为“独行”风格,特点是左、右大括号各自独占一行,。当代码量较小时适合使用“独行”风格,代码布局清晰,可读性强。如以下代码: public class Allmans { public static void main(String args[]) { int sum = 0; for (int i = 1; i =1949时,输出n的值。 public

e1ce7eb69b005cfed21f931c23f83c32.png 运行结果 另一种break语句会跳转至标签位置,从而跳出多层循环结构。 break 下面给出一个案例程序演示。 public 下面给出另一个案例程序演示。计算sum=1+(1+2)+(1+2+3+...+i),当sum>=2000时,输出i的值。 /*

640c94e4a9667bdcc8ff9e33dfcfa959.png 运行结果 2.continue语句
只能用在循环语句中。当程序执行continue语句时,程序流程跳转到循环的开始处继续下一轮循环。 continue; 下面给出一个案例程序演示。输出1-100之间不能被3整除的数,每行输出10个数。 /*

efa1259d8cc65e1a345d647e08e0cb13.png 3.return语句
用在方法中。是一种关键字。功能是结束一个方法,而不是改变循环语句的执行流程。当程序执行到一个return语句后,不论该return语句处于多少层循环之内,都会结束该方法。 return 下面给出一个案例程序演示。此程序暂无可用运行结果。 public

18bfab41e54965659e07e7b0d41119e4.png 运行结果
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜