从零学Java - 概述与环境搭建

Java概述与环境搭建

一、什么是程序

程序(Program):是为了模拟现实世界解决现实问题而使用计算机语言编写的一系列有序的指令集合。

二、Java 简介

详细见 : 菜鸟教程

Java 是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 面向对象程序设计语言和 Java 平台的总称。由 James Gosling和同事们共同研发,并在 1995 年正式推出。

后来 Sun 公司被 Oracle (甲骨文)公司收购,Java 也随之成为 Oracle 公司的产品。

Java分为三个体系:

  • JavaSE(J2SE)(Java2 Platform Standard Edition,java平台标准版)
    • 开发和部署在桌面中使用的 Java 应用程序 控制台 GUI编程
  • JavaEE(J2EE)(Java 2 Platform,Enterprise Edition,java平台企业版)
    • 开发企业级的应用,运行在服务器端的程序
  • JavaME(J2ME)(Java 2 Platform Micro Edition,java平台微型版)。
    • 开发运行在移动设备和嵌入式设备(比如非智能手机、PDA、电视机顶盒和打印机)上运行的应用程序 (过时) 。

2005 年 6 月,JavaOne 大会召开,SUN 公司公开 Java SE 6。此时,Java 的各种版本已经更名,以取消其中的数字 “2”:J2EE 更名为 Java EE,J2SE 更名为Java SE,J2ME 更名为 Java ME。

主要特性

  • Java 语言是简单的:(自动内存管理机制, 不易造成内存溢出; 简化流程处理, 语义更清晰)

    Java 语言的语法与 C 语言和 C++ 语言很接近,使得大多数程序员很容易学习和使用。另一方面,Java 丢弃了 C++ 中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java 语言不使用指针,而是引用。并提供了自动分配和回收内存空间,使得程序员不必为内存管理而担忧。

  • Java 语言是面向对象的:(贴近人类的思维模式, 模拟现实世界, 解决现实问题)

    Java 语言提供类、接口和继承等面向对象的特性,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为 implements)。Java 语言全面支持动态绑定,而 C++语言只对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。

  • Java语言是分布式的:

    Java 语言支持 Internet 应用的开发,在基本的 Java 应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括 URL、URLConnection、Socket、ServerSocket 等。Java 的 RMI(远程方法激活)机制也是开发分布式应用的重要手段。

  • Java 语言是健壮的:

    Java 的强类型机制、异常处理、垃圾的自动收集等是 Java 程序健壮性的重要保证。对指针的丢弃是 Java 的明智选择。Java 的安全检查机制使得 Java 更具健壮性。

  • Java语言是安全的:

    Java通常被用在网络环境中,为此,Java 提供了一个安全机制以防恶意代码的攻击。除了Java 语言具有的许多安全特性以外,Java 对通过网络下载的类具有一个安全防范机制(类 ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类 SecurityManager)让 Java 应用设置安全哨兵。

  • Java 语言是体系结构中立的:

    Java 程序(后缀为 java 的文件)在 Java 平台上被编译为体系结构中立的字节码格式(后缀为 class 的文件),然后可以在实现这个 Java 平台的任何系统中运行。这种途径适合于异构的网络环境和软件的分发。

  • Java 语言是可移植的:

    这种可移植性来源于体系结构中立性,另外,Java 还严格规定了各个基本数据类型的长度。Java 系统本身也具有很强的可移植性,Java 编译器是用 Java 实现的,Java 的运行环境是用 ANSI C 实现的。

  • Java 语言是解释型的:

    如前所述,Java 程序在 Java 平台上被编译为字节码格式,然后可以在实现这个 Java 平台的任何系统中运行。在运行时,Java 平台中的 Java 解释器对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。

  • Java 是高性能的:

    与那些解释型的高级脚本语言相比,Java 的确是高性能的。事实上,Java 的运行速度随着 JIT(Just-In-Time)编译器技术的发展越来越接近于 C++。

  • Java 语言是多线程的:

    在 Java 语言中,线程是一种特殊的对象,它必须由 Thread 类或其子(孙)类来创建。通常有两种方法来创建线程:其一,使用型构为 Thread(Runnable) 的构造子类将一个实现了 Runnable 接口的对象包装成一个线程,其二,从 Thread 类派生出子类并重写 run 方法,使用该子类创建的对象即为线程。值得注意的是 Thread 类已经实现了 Runnable 接口,因此,任何一个线程均有它的 run 方法,而 run 方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。Java 语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为 synchronized)。

  • Java 语言是动态的:

    Java 语言的设计目标之一是适应于动态变化的环境。Java 程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类。这也有利于软件的升级。另外,Java 中的类有一个运行时刻的表示,能进行运行时刻的类型检查。

  • **Java 语言是开源的,可跨平台的 **

在正式学习java并安装配置开发环境之前,有必要了解一些有关Java的专业术语:

  • JDK(Java Development Kit )Java 开发工具包 :编写 Java 程序的程序员使用的软件
    • 包含 JRE + 开发类库 + 开发工具包 (编译器 + 调试工具)
  • JRE(Java Runtime Environment)Java 运行环境 :运行 Java 程序的用户使用的软件
    • 包含 JVM、解释器和运行类库
  • JVM (Java Virtual Machine) Java 虚拟机JVM 是 Java 程序运行必须的组件,负责程序的执行。
  • Server JRE (Java SE Runtime Environment):服务端使用的 Java 运行环境
  • SDK(Software Development Kit):软件开发工具包,在Java中用于描述1998年~2006年之间的JDK
  • DAO(Data Access Object):数据访问接口,数据访问,顾名思义就是与数据库打交道
  • MVC(Model View Controller):模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用于组织代码用一种业务逻辑和数据显示分离的方法

补充下面向对象程序设计的 3 个主要特征:封装性、继承性、多态性

**封装性(encapsulation):**封装是一种信息隐蔽技术,它体现于类的说明,是对象的重要特性。封装使数据和加工该数据的方法(函数)封装为一个整体,以实现独立性很强的模块,使得用户只能见到对象的外特性(对象能接受哪些消息,具有哪些处理能力),而对象的内特性(保存内部状态的私有数据和实现加工能力的算法)对用户是隐蔽的。封装的目的在于把对象的设计者和对象的使用者分开,使用者不必知晓其行为实现的细节,只须用设计者提供的消息来访问该对象。

**继承性:**继承性是子类共享其父类数据和方法的机制。它由类的派生功能体现。一个类直接继承其他类的全部描述,同时可修改和扩充。继承具有传递性。继承分为单继承(一个子类有一父类)和多重继承(一个类有多个父类)。类的对象是各自封闭的,如果没继承性机制,则类的对象中的数据、方法就会出现大量重复。继承不仅支持系统的可重用性,而且还促进系统的可扩充性。

**多态性:**对象根据所接收的消息而做出动作。同一消息被不同的对象接受时可产生完全不同的行动,这种现象称为多态性。利用多态性用户可发送一个通用的信息,而将所有的实现细节都留给接受消息的对象自行决定,如是,同一消息即可调用不同的方法。例如:同样是 run 方法,飞鸟调用时是飞,野兽调用时是奔跑。多态性的实现受到继承性的支持,利用类继承的层次关系,把具有通用功能的协议存放在类层次中尽可能高的地方,而将实现这一功能的不同方法置于较低层次,这样,在这些低层次上生成的对象就能给通用消息以不同的响应。在 OOPL 中可通过在派生类中重定义基类函数(定义为重载函数或虚函数)来实现多态性。

三、Java 执行机制

1、编译的过程和解释的过程

编译(Compile)的过程是把整个源程序代码翻译成另外一种代码,翻译后的代码等待被执行或者被优化等等,发生在运行之前,产物是另一份代码

把源文件编译成平台相关的机器码文件

特点:一次编译,多次执行,执行效率高,但不能跨平台执行;

解释(Interpret)的过程是把源程序代码一行一行的读懂,然后一行一行的执行,发生在运行时,产物是运行结果

把源文件交给不同的平台独有的解释器解释执行

特点:执行效率低,但可以跨平台执行;

2、编译器和解释器

编译器和解释器都是计算机程序,只不过他们运行不同过程。

编译器(Compiler)是一种计算机程序,它会将某种编程语言编写的源代码(原始语言)转换成另一种编程语言(目标语言),其实就是完成上文中所说的编译的过程。主要目的是将便于人编写、阅读维护的高级计算机语言所编写的源代码程序,翻译为计算机能运行的机器语言程序。

解释器(interpreter),是一种计算机程序,能够把解释型语言解释执行。其实就是执行解释的过程。

3、编译型语言和解释型语言

语言一般只会定义其抽象语义,而不会强制性要求采用某种实现方式。理论上,任何编程语言都可以是编译型或解释型的。但是,会根据其主流实现方式来把语言分为“编译型语言”和“解释型语言”。

C/C++/C#等都是编译型语言。以C语言为例,源代码被编译之后生成中间文件(.o和.obj),然后用链接器和汇编器生成机器码,也就是一系列基本操作的序列,机器码最后被执行生成最终动作。

Lisp/R/Python等都是解释型语言。

其实许多编程语言同时采用编译器与解释器来实现,这就包括Python,Java等,先将代码编译为字节码,在运行时再进行解释。所谓“解释型语言”并不是不用编译,而只是不需要用户显式去使用编译器得到可执行代码而已 。

四、Java 环境搭建

参考链接

1.安装 JDK

1、下载完JDK到本地后,找到该文件,双击运行JDK安装程序

在这里插入图片描述

2、等待一会,进入JDK安装界面,点击下一步

在这里插入图片描述

3、可以直接默认目录,点击下一步。也可以自定义路径,先创建一个文件夹名为 Java,再在该文件夹下创建一个文件夹为 JDK 安装目录,同时创建一个文件夹为 JRE 安装目录
在这里插入图片描述

在这里插入图片描述

4、然后回到JDK安装界面,更改安装路径,为上述所创建的 JDK 路径,点击下一步(这里由于第一项开发工具中已经自带了 JRE,则第三项的公共 JRE 可以取消独立安装,上述创建的 JRE 文件夹也不需要了)。无其他需求,取消安装 JRE 即可
在这里插入图片描述
在这里插入图片描述

5、等待一会,会进入 JRE 的安装界面,同样的更改路径,为上述所创建的 JRE 路径,更改完之后点击下一步(在上一步取消公共 JRE 安装的则不会出现下面的界面,直接到 2.6 安装完成
在这里插入图片描述
在这里插入图片描述

6、至此JDK已经安装完毕,点击关闭
在这里插入图片描述

7、若想验证是否安装成功,可按 Win+R,输入 cmd 进入命令提示符(可参照前面的查看电脑配置信息操作),在命令提示符界面输入 java,出现如下界面即表示安装成功(未选择上面公共 JRE 独立安装的则不会有下面的显示,而为 java 不是内部或外部命令,也不是可运行的程序或批处理文件需配置环境变量即可有下面的界面)

在这里插入图片描述

2.环境配置

1、右键开始菜单,点击系统
在这里插入图片描述

2、进入系统信息界面,点击高级系统设置
在这里插入图片描述

3、点击环境变量

在这里插入图片描述

4、点击新建,变量名为 JAVA_HOME,变量值为刚刚JDK安装的路径,点击确定

5、双击 path,进入界面后,点击新建,输入 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;。不要对其他数值进行修改,假如不小心修改了其他数值,取消重新进入即可。

在这里插入图片描述

6、建议将这两个环境变量上移到顶部,以确保 JDK 的调用

在这里插入图片描述

7、点击确定,全部确定退出后,依旧按 Win+R,输入 cmd 进入命令提示符界面,输入 javac,假如出现如下界面则配置成功。(这时再输入 java,则会出现 2.7 所示界面)或 输入java -versionjavac -version 查看它们的版本号

在这里插入图片描述

在这里插入图片描述

结尾:至此,Java JDK下载安装及环境配置已完全成功

五、DOS操作命令

1、打开DOS命令窗口

  1. win键 + R 快捷打开运行窗口

>

  1. 再输入cmd并回车打开DOS命令窗口

>

2、常用 DOS 命令(英文解释)

更换盘符:d:

查看当前目录下的文件及子目录:dir(directory)

改变目录:cd 目录名(change directory)

  • 返回上一级目录:cd ..
  • 返回根目录 :cd \

清空屏幕:cls (clean screen)

创建目录:md(make directory)目录名

创建文件:type nul>文件名

删除空目录:rd(remove directory)目录名

  • 强制删除所有 rd /s /q 目录名

删除文件:del(delete)文件名

  • del 1.txt del 1.txt 2.txtdel *.txt del *

退出:exit

3、其他命令

打开记事本:notepad

打开计算器:calc

打开画图板:mspaint

4、常见快捷键

ctrl+c 复制(在命令行中可强制停止执行)

ctrl+v 粘贴

ctrl+x 剪切

ctrl+z 撤销

ctrl+a 全选

六、第一个 Java 程序

1、Java 程序开发步骤

1、编写源程序

在这里插入图片描述

2、编译

在这里插入图片描述
在这里插入图片描述

3、运行

在这里插入图片描述

2、代码解析

public:公共的,属于 Java 关键字

class:表示类,属于 Java 关键字

HelloWorld:类名,自定义,和文件名一样

static:静态的,属于 Java 关键字

void:无返回值,属于 Java 关键字

main:主方法(函数),程序的入口,固定名称

String[] args:方法参数,固定写法

System.out.println("Hello,World!");:控制台输出语句,输出Hello,World!

编写 Java 程序时,应注意以下几点

  • 大小写敏感:Java 是大小写敏感的,这就意味着标识符 Hello 与 hello 是不同的。
  • 类名:对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如 MyFirstJavaClass
  • 方法名:所有的方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写。
  • 源文件名:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记 Java 是大小写敏感的),文件名的后缀为 .java。(如果文件名和类名不相同则会导致编译错误)。
  • 主方法入口:所有的 Java 程序由 public static void main(String[] args) 方法开始执行。
  • 以分号结尾:Java 的每一条语句,以分号 ;(英文) 结尾

细节提示

  • 同一个源文件中可以定义多个类,编译后,每个类都会生成独立的 .class文件。

  • 一个类中,只能有一个主方法,每个类都可以有自己的主方法。

  • public修饰的类称为公开类,要求类名必须与文件名称完全相同,包括大小写。

  • 一个源文件中,最多只能有一个公开类,最少可以没有。

3、输出方法

println(); //输出内容并换行

System.out.println("Hello,World!");	//输出并换行

print(); //输出内容

System.out.print("Hello,World!");	//没有换行

printf(); //格式化内容输出

//没有换行
System.out.printf("%f"3.1415926);	//%f,格式化输出浮点数
System.out.printf("%.2f"3.1415926);	//%.2f,格式化输出浮点数,并保留两位小数
System.out.printf("%d"1000);	//%d,格式化输出整数
System.out.printf("%8d"1000);	//%8d,格式化输出整数,并以右对齐占据8个字符的位置
System.out.printf("%s""hello");	//%s,格式化输出字符串
System.out.printf("%-6s""hello");	//%-6s,格式化输出字符串,并以左对齐占据6个字符的位置

七、编码规范

1、书写格式

  • 层级之间必须缩进(Tab:一个制表位)
  • 一行只写一条语句

2、注释规范

注释:程序中说明性内容,对程序编译和运行没有任何影响

单行注释

//单行注释

多行注释

/*
	多行注释、不可嵌套
*/

文档注释

/**
*	文档注释
*/

提示:注释不参与编译

1、类注释

在每个类前面必须加上类注释,注释模板如下:

/**
* Copyright (C), 2006-2010, ChengDu Lovo info. Co., Ltd.
* FileName: Test.java
* 类的详细说明
*
* @author 类创建者姓名
* @Date    创建日期
* @version 1.00
*/

2、属性注释

在每个属性前面必须加上属性注释,注释模板如下:

/** 提示信息 */
private String strMsg = null;

3、方法注释

在每个方法前面必须加上方法注释,注释模板如下:

/**
* 类方法的详细使用说明
*
* @param 参数1 参数1的使用说明
* @return 返回结果的说明
* @throws 异常类型.错误代码 注明从此类方法中抛出异常的说明
*/

4、构造方法注释

在每个构造方法前面必须加上注释,注释模板如下:

/**
* 构造方法的详细使用说明
*
* @param 参数1 参数1的使用说明
* @throws 异常类型.错误代码 注明从此类方法中抛出异常的说明
*/

5、方法内部注释

在方法内部使用单行或者多行注释,该注释根据实际情况添加。

如:

//背景颜色
Color bgColor = Color.RED

3、标识符命名规范

标识符可以用来标识变量名、类名、类中的方法名和文件名等。

命名规范:

  • (1) 由字母、数字、下划线、$组成,不能以数字开头。
  • (2) 大小写敏感。
  • (3) 不得使用java中的关键字和保留字。
  • (4) 坚决不允许出现中文及拼音命名。

关键字:都是小写的,jdk1.2多了strictfp(经准浮点型),关键字 jdk1.4多了assert(断言)关键字,jdk1.5多了enum(枚举) 关键字。

true、false、null 严格说不应该算关键字,应称其为保留字更合适。

命名习惯:

  • (1) 标识符要符合语义信息,即见名知意。
  • (2) 包名所有字母小写。
  • (3) 类名每个单词首字母大写,其它小写,如:StudentDemo。
  • (4) 变量和方法:第一个单词小写,从第二个单词开始首字母大写,如:studentName,即驼峰命名法。
  • (5) 常量:所有字母大写,每个单词之间用 _ 连接。

常用的转义字符:

"\b" (退格)
"\f" (换页)
"\n" (换行)
"\r" (回车)
"\t" (水平制表符(到下一个tab位置))
"\' " (单引号)
"\" " (双引号) 
"\\" (反斜杠)

不得使用java中的关键字和保留字。

  • (4) 坚决不允许出现中文及拼音命名。

关键字:都是小写的,jdk1.2多了strictfp(经准浮点型),关键字 jdk1.4多了assert(断言)关键字,jdk1.5多了enum(枚举) 关键字。

true、false、null 严格说不应该算关键字,应称其为保留字更合适。

命名习惯:

  • (1) 标识符要符合语义信息,即见名知意。
  • (2) 包名所有字母小写。
  • (3) 类名每个单词首字母大写,其它小写,如:StudentDemo。
  • (4) 变量和方法:第一个单词小写,从第二个单词开始首字母大写,如:studentName,即驼峰命名法。
  • (5) 常量:所有字母大写,每个单词之间用 _ 连接。

常用的转义字符:

"\b" (退格)
"\f" (换页)
"\n" (换行)
"\r" (回车)
"\t" (水平制表符(到下一个tab位置))
"\' " (单引号)
"\" " (双引号) 
"\\" (反斜杠)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贰贰柒丶阿拽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值