系列文章目录
提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:第一章 Python 机器学习入门之pandas的使用
文章目录
Java语言的简述以及简单练习
提示:以下是本篇文章正文内容,下面案例可供参考
一、简述解释型语言与编译型语言
高级语言分为解释型与编译型语言。比如我们常见的编译型的语言包括C语言、C++语言、Pascal语言、python语言等等,但是Java语言既是编译型语言,也是解释型语言。
二、Java语言的执行流程
Java语言的执行需要先编译,再解释两个步骤。Java语言执行时会生成.class文件【这个文件里面的时字节码】,Java里面负责执行字节码文件的是Java虚拟机,即JVM(Java Virtual Machine)。JVM是可以运行Java字节码文件的虚拟机,不同平台的虚拟机也是不同的,也可以将其理解为转换器,它是一种抽象的计算机。
2.1、Java程序的组织形式
class是Java程序的最小单位,所有程序部分都要放在class类里面定义
2.2、Java源程序的命名规则
- 文件的后缀名必须是.java命名
- 一个Java源文件只能定义一个类,不可类的定义使用不同的源文件命名
- Java源文件的主文件名必须与该源文件的public类同名
三、理解Java编程时面向对象的编程
3.1、软件领域的开发方法
结构化的方法与面向对象的方法
早期的语言大多数采用结构化的方法,但是随着软件技术的开发,面向对象的方法提供了更好的灵活性、可扩展性和可维护性。
3.2、结构化方法简介
结构化的程序的最小单元是函数,它采用的是自顶而下的设计方法。
他的结构有三种:
- 顺序结构
- 选择结构
- 循环结构
3.3、面向对象方法简介
它的基本思想是使用类、对象、继承、封装、消息等
面向对象是将其抽象表达为系统的类,作为系统的基本构成单元
基本等式:成员变量(状态数据)+ 方法(行为)= 类定义
从上式可以看出面向对象的程序单元是类,而面向过程的程序单元是函数(相当于方法)
3.4、面向对象的基本特征
封装(encapsulation)继承(inheritance)多态(polymorphism)
- 封装将对象的实现细节隐藏起来,通过公用的方法来暴露该对象的功能
- 继承是面向对象实现软件复用的重要手段,当子类继承父类之后,子类作为一种特殊的父类,将直接获得父类的属性与方法
- 多态是指子类对象可以直接赋值给弗雷德变量,但是运行时依然表现为父类的行为特征,这意味着同一类型的对象在执行同一方法时,可以表现出多种行为特征。
- 抽象也是面向对象的重要部分,抽象就是忽略一个主题中与当前目标无关的哪些方面,以便更充分地注意与当前目标有关的方面。抽象并不意味着了解全部问题,而只考虑部分问题。【此处注意:抽象并不是面向对象的特征之一,它只是面向对象的重要组成部分】
在面向对象时,类之间共享属性和操作的机制称为继承,继承具有传递性Java不支持多继承。
四、Java的数据类型及补充
4.1、Java注释
注释分为三大类:多行注释、单行注释、文档注释。
多行注释【“/*”开始,“*/”结束】单行注释【//】
添加注释也是代码检查的重要手段。
文档注释为开发人员提供了非常有用的帮助,应用程序接口(API)来实现,API文档列出了该类所有的成分,类、方法、接口、成员变量等等。
我们在编辑好Java程序之后,可以使用javadoc工具来提取程序中的文档注释来生成API文档
Javadoc 是 Sun 公司提供的一种工具,它可以从程序源代码中抽取类、方法、成员等注释,然后形成一个和源代码配套的 API 帮助文档。也就是说,只要在编写程序时以一套特定的标签注释,在程序编写完成后,通过 Javadoc 就形成了程序的 API 帮助文档。
API 帮助文档相当于产品说明书,而说明书只需要介绍那些供用户使用的部分,所以 Javadoc 默认只提取 public、protected 修饰的部分。如果要提取 private 修饰的部分,需要使用 -private。
4.1.1、Javadoc标签
Javadoc 工具可以识别文档注释中的一些特殊标签,这些标签一般以@
开头,后跟一个指定的名字,有的也以{@
开头,以}
结束。Javadoc 可以识别的标签如下表所示:
标签 | 描述 | 示例 |
---|---|---|
@author | 标识一个类的作者,一般用于类注释 | @author description |
@deprecated | 指名一个过期的类或成员,表明该类或方法不建议使用 | @deprecated description |
{@docRoot} | 指明当前文档根目录的路径 | Directory Path |
@exception | 可能抛出异常的说明,一般用于方法注释 | @exception exception-name explanation |
{@inheritDoc} | 从直接父类继承的注释 | Inherits a comment from the immediate surperclass. |
{@link} | 插入一个到另一个主题的链接 | {@link name text} |
{@linkplain} | 插入一个到另一个主题的链接,但是该链接显示纯文本字体 | Inserts an in-line link to another topic. |
@param | 说明一个方法的参数,一般用于方法注释 | @param parameter-name explanation |
@return | 说明返回值类型,一般用于方法注释,不能出现再构造方法中 | @return explanation |
@see | 指定一个到另一个主题的链接 | @see anchor |
@serial | 说明一个序列化属性 | @serial description |
@serialData | 说明通过 writeObject() 和 writeExternal() 方法写的数据 | @serialData description |
@serialField | 说明一个 ObjectStreamField 组件 | @serialField name type description |
@since | 说明从哪个版本起开始有了这个函数 | @since release |
@throws | 和 @exception 标签一样. | The @throws tag has the same meaning as the @exception tag. |
{@value} | 显示常量的值,该常量必须是 static 属性。 | Displays the value of a constant, which must be a static field. |
@version | 指定类的版本,一般用于类注释 | @version info |
对两种标签格式的说明:
- @tag 格式的标签(不被
{ }
包围的标签)为块标签,只能在主要描述(类注释中对该类的详细说明为主要描述)后面的标签部分(如果块标签放在主要描述的前面,则生成 API 帮助文档时会检测不到主要描述)。 - {@tag} 格式的标签(由
{ }
包围的标签)为内联标签,可以放在主要描述中的任何位置或块标签的注释中。
Javadoc 标签注意事项:
- Javadoc 标签必须从一行的开头开始,否则将被视为普通文本。
- 一般具有相同名称的标签放在一起。
- Javadoc 标签区分大小写,代码中对于大小写错误的标签不会发生编译错误,但是在生成 API 帮助文档时会检测不到该注释内容。
4.1.2、Javadoc命令
Javadoc 用法格式如下:
javadoc [options] [packagenames] [sourcefiles]
对格式的说明:
- options 表示 Javadoc 命令的选项;
- packagenames 表示包名;
- sourcefiles 表示源文件名。
在 cmd(命令提示符)中输入javadoc -help
就可以看到 Javadoc 的用法和选项(前提是安装配置了JDK),下面列举 Javadoc 命令的常用选项:
名称 | 说明 |
---|---|
-public | 仅显示 public 类和成员 |
-protected | 显示 protected/public 类和成员(默认值) |
-package | 显示 package/protected/public 类和成员 |
-private | 显示所有类和成员 |
-d <directory> | 输出文件的目标目录 |
-version | 包含 @version 段 |
-author | 包含 @author 段 |
-splitindex | 将索引分为每个字母对应一个文件 |
-windowtitle <text> | 文档的浏览器窗口标题 |
4.1.3、DOS命令生成API帮助文档
新建一个空白记事本,输入下列代码:
/**
* @author C语言中文网
* @version jdk1.8.0
*/
public class Test{
/**
* 求输入两个参数范围以内整数的和
* @param n 接收的第一个参数,范围起点
* @param m 接收的第二个参数,范围终点
* @return 两个参数范围以内整数的和
*/
public int add(int n, int m) {
int sum = 0;
for (int i = n; i <= m; i++) {
sum = sum + i;
}
return sum;
}
}
将文件命名为 Test.java,打开 cmd 窗口,输入javadoc -author -version Test.java
打开 Test.java 文件存储的位置,会发现多出了一个 Test.html 文档。打开文档,文档页面如图 2 和图 3 所示
4.1.4、MyEclipse生成API帮助文档
1)在 MyEclipse 中新建一个 Test 类,代码如下:
package test;
/**
* @author C语言中文网
* @version jdk1.8.0
*/
public class Test {
public static void main(String[] args) {
/**
* 这是一个输出语句
*/
System.out.println("C语言中文网Java教程访问地址:http://c.biancheng.net/java/");
}
}
注意:代码 9~11 行没有放在类、成员变量或方法之前,所以 Javadoc 会忽略这个注释。
2)在项目名处单击鼠标右键,然后选择Export...
,如图 4 所示。
3)在弹出窗口中选择 Java 文件夹,点击 Java 文件夹下面的 Javadoc,然后点击“Next”,如图 5 所示。
4)选择你要生成 Javadoc 的项目,并更改你想保存的 API 帮助文档地址(默认为工程目录下,建议不要修改)。点击“Finish”,如图 6 所示。
5)点击“Finish”之后会问是否更新 Javadoc 文件的位置,只需要点击“Yes To All”即可,如图 7 所示。
6)这时可以看到控制台输出生成 Javadoc 的信息,如图 8 所示。
7)打开保存的文件夹,找到 Test.html 文件并打开,如图 9 所示。
以上就是使用 MyEclipse 简单建立一个 API 帮助文档的过程。
4.2、标识符与关键字
4.2.1、分隔符
- 分号(;)作为分隔符,允许一行书写多个语句,一个语句也可以跨多行【一个字符串、变量名不能跨多行书写】
- 花括号({})定义代码段,而且是成对出现。在Java当中类的定义以及方法的定义都要放在代码段里面
- 方括号([])访问数组元素,其后面常常跟着数组变量名,方括号里指定希望访问的数组元素的索引
- 圆括号(())功能丰富的分隔符,定义方法时包括所有的形参说明,调用方法时传入实参值,还可以将表达式中的部分括起来,进行优先运算,还可以作为强制转换的运算符等等
- 空格( )分割一段语句的不同部分,但是不能使用空格将变量名分割,那样会导致错误,常见的空格包括空格符(space)、制表符(tab)和回车(enter)
- 圆点(.)通常用于类/对象和他的成员(成员变量、方法和内部类)之间的分隔符,表明调用某一类或者实例的指定成员
4.2.2、标识符
Java 中标识符是为方法、变量或其他用户定义项所定义的名称。标识符可以有一个或多个字符。在 Java 语言中,标识符的构成规则如下。
- 标识符由数字(0~9)和字母(A~Z 和 a~z)、美元符号($)、下划线(_)以及 Unicode 字符集中符号大于 0xC0 的所有符号组合构成(各符号之间没有空格)。
- 标识符的第一个符号为字母、下划线和美元符号,后面可以是任何字母、数字、美元符号或下划线。
另外,Java 区分大小写,因此 myvar 和 MyVar 是两个不同的标识符。
提示:标识符命名时,切记不能以数字开头,也不能使用任何 Java 关键字作为标识符,而且不能赋予标识符任何标准的方法名。
标识符分为两类,分别为关键字和用户自定义标识符。
- 关键字是有特殊含义的标识符,如 true、false 表示逻辑的真假。
- 用户自定义标识符是由用户按标识符构成规则生成的非保留字的标识符,如 abc 就是一个标识符。
提示:使用标识符时一定要注意,或者使用关键字,或者使用自定义的非关键字标识符。此外,标识符可以包含关键字,但不能与关键字重名。不能包含空格,标识符只包含美元符($)不可以包含@、#等其他特殊字符。
例如以下合法与不合法标识符。
- 合法标识符:date、$2011、_date、D_$date 等。
- 不合法的标识符:123.com、2com、for、if 等。
标识符用来命名常量、变量、类和类的对象等。因此,一个良好的编程习惯要求命名标识符时,应赋予它一个有意义或有用途的名字。
4.2.3、关键字(keyword)
关键字(或者保留字)是对编译器有特殊意义的固定单词,不能在程序中做其他目的使用。关键字具有专门的意义和用途,和自定义的标识符不同,不能当作一般的标识符来使用。例如,在《使用记事本编写运行Java程序》一节的实例 HelloJava.java 中的 class 就是一个关键字,它用来声明一个类,其类名称为 HelloJava。public 也是关键字,它用来表示公共类。另外,static 和 void 也是关键字,它们的使用将在本教程后面的章节中详细介绍。
Java 的关键字对 Java 编译器有特殊的意义,它们用来表示一种数据类型,或者表示程序的结构等。保留字是为 Java 预留的关键字,它们虽然现在没有作为关键字,但在以后的升级版本中有可能作为关键字。
Java 语言目前定义了 51 个关键字,这些关键字不能作为变量名、类名和方法名来使用。以下对这些关键字进行了分类。
- 数据类型:boolean、int、long、short、byte、float、double、char、class、interface。
- 流程控制:if、else、do、while、for、switch、case、default、break、continue、return、try、catch、finally。
- 修饰符:public、protected、private、final、void、static、strict、abstract、transient、synchronized、volatile、native。
- 动作:package、import、throw、throws、extends、implements、this、supper、instanceof、new。
- 保留字:true、false、null、goto、const。
4.2.4、保留字
保留字:Java版本尚未使用,但以后版本可能会作为关键字使用。
在命名标记符时要避免使用这些保留字:
goto、const、byValue、cast、future、 generic、 inner、 operator、 outer、 rest、 var
注意:
java中true、false、friendly和null不属于关键字,也不是保留字,它们只是显式常量值,但是你在程序中不能使用它们作为标识符。
java关键字和保留字都是小写。即null是关键字,NULL不是关键字;TRUE、FALSE也不是关键字。
sizeof 是 C/C++ 中的方法,Java 中并没有这个方法,也没有该关键字 或 保留字
提示:由于 Java 区分大小写,因此 public 是关键字,而 Public 则不是关键字。但是为了程序的清晰及可读性,要尽量避免使用关键字的其他形式来命名。
4.3、数据类型
基本数据类型包括 boolean(布尔型)、float(单精度浮点型)、char(字符型)、byte(字节型)、short(短整型)、int(整型)、long(长整型)和 double (双精度浮点型)共 8 种,详见表 1 所示。
类型名称 | 关键字 | 占用内存 | 取值范围 |
---|---|---|---|
字节型 | byte | 1 字节 | -128~127 |
短整型 | short | 2 字节 | -32768~32767 |
整型 | int | 4 字节 | -2147483648~2147483647 |
长整型 | long | 8 字节 | -9223372036854775808L~9223372036854775807L |
单精度浮点型 | float | 4 字节 | +/-3.4E+38F(6~7 个有效位) |
双精度浮点型 | double | 8 字节 | +/-1.8E+308 (15 个有效位) |
字符型 | char | 2 字节 | ISO 单一字符集 |
布尔型 | boolean | 1 字节 | true 或 false |
提示:char 代表字符型,实际上字符型也是一种整数类型,相当于无符号整数类型。
所有的基本数据类型的大小(所占用的字节数)都已明确规定,在各种不同的平台上保持不变,这一特性有助于提高 Java 程序的可移植性。
Java 数据类型的结构如图 1 所示。
Java 是一种强制类型的语言,所有的变量都必须先明确定义其数据类型,然后才能使用。Java 中所有的变量、表达式和值都必须有自己的类型,没有“无类型”变量这样的概念。
基本数据类型又可分为 4 大类,即整数类型(包括 byte、short,int 和 long)、浮点类型(包括 float 和 double)、布尔类型和字符类型(char),下面分别介绍这 4 大类数据类型。
4.3.1 整数类型
Java 定义了 4 种整数类型变量:字节型(byte)、短整型(short)、整型(int)和长整型(long)。这些都是有符号的值,正数或负数。具体说明表 2 所示:
名称 | 说明 |
---|---|
字节型(byte) | byte 类型是最小的整数类型。当用户从网络或文件中处理数据流时,或者处理可能与 Java 的其他内置类型不直接兼容的未加工的二进制数据时,该类型非常有用。 |
短整型(short) | short 类型限制数据的存储为先高字节,后低字节,这样在某些机器中会出错,因此该类型很少被使用。 |
整型(int) | int 类型是最常使用的一种整数类型。 |
长整型(long) | 对于大型程序常会遇到很大的整数,当超出 int 类型所表示的范围时就要使用 long 类型。 |
4.3.2 浮点类型
浮点类型是带有小数部分的数据类型,也叫实型。浮点型数据包括单精度浮点型(float)和双精度浮点型(double),代表有小数精度要求的数字。
单精度浮点型(float)和双精度浮点型(double)之间的区别主要是所占用的内存大小不同,float 类型占用 4 字节的内存空间,double 类型占用 8 字节的内存空间。双精度类型 double 比单精度类型 float 具有更高的精度和更大的表示范围。
Java 默认的浮点型为 double,例如,11.11 和 1.2345 都是 double 型数值。如果要说明一个 float 类型数值,就需要在其后追加字母 f 或 F,如 11.11f 和 1.2345F 都是 float 类型的常数。
例如,可以使用如下方式声明 float 类型的变量并赋予初值。
float price = 12.2f; // 定义float类型并赋予初值
也可以使用如下的任意一种方式声明 double 类型的变量并赋予初值。
double price = 12.254d; // 定义double类型的变量并赋予初值
或
double price = 12.254; // 定义double类型的变量并赋予初值
注意:一个值要能被真正看作 float,它必须以 f(或 F)后缓结束;否则,会被当作 double 值。对 double 值来说,d(或 D)后缓是可选的。
4.3.3 布尔类型
布尔类型(boolean)用于对两个数值通过逻辑运算,判断结果是“真”还是“假”。Java 中用保留字 true 和 false 来代表逻辑运算中的“真”和“假”。因此,一个 boolean 类型的变量或表达式只能是取 true 和 false 这两个值中的一个。
在 Java 语言中,布尔类型的值不能转换成任何数据类型,true 常量不等于 1,而 false 常量也不等于 0。这两个值只能赋给声明为 boolean 类型的变量,或者用于布尔运算表达式中。
例如,可以使用以下语句声明 boolean 类型的变量。
- boolean isable; // 声明 boolean 类型的变量 isable
- boolean b = false; // 声明 boolean 类型的变量 b,并赋予初值为 false
4.3.4 字符类型
Java 语言中的字符类型(char)使用两个字节的 Unicode 编码表示,它支持世界上所有语言,可以使用单引号字符或者整数对 char 型赋值。
一般计算机语言使用 ASCII 编码,用一个字节表示一个字符。ASCII 码是 Unicode 码的一个子集,用 Unicode 表示 ASCII 码时,其高字节为 0,它是其前 255 个字符。
Unicode 字符通常用十六进制表示。例如“\u0000”~“\u00ff”表示 ASCII 码集。“\u”表示转义字符,它用来表示其后 4 个十六进制数字是 Unicode 码。
字符型变量的类型为 char,用来表示单个的字符
提示:字符通常用 16 进制表示,范围从“\uOOOO”~“\uFFFF”,即从 0~65535。\uOOOO 和 \uFFFF 中的 u 告诉编译器是用两个字节(16 位)字符信息表示一个 Unicode 字符。
4.3.4 Java引用数据类型
引用数据类型建立在基本数据类型的基础上,包括数组、类和接口。引用数据类型是由用户自定义,用来限制其他数据的类型。另外,Java 语言中不支持 C++ 中的指针类型、结构类型、联合类型和枚举类型。
引用类型还有一种特殊的 null 类型。所谓引用数据类型就是对一个对象的引用,对象包括实例和数组两种。实际上,引用类型变量就是一个指针,只是 Java 语言里不再使用指针这个说法。
空类型(null type)就是 null 值的类型,这种类型没有名称。因为 null 类型没有名称,所以不可能声明一个 null 类型的变量或者转换到 null 类型。
空引用(null)是 null 类型变量唯一的值。空引用(null)可以转换为任何引用类型。
在实际开发中,程序员可以忽略 null 类型,假定 null 只是引用类型的一个特殊直接量。
注意:空引用(null)只能被转换成引用类型,不能转换成基本类型,因此不要把一个 null 值赋给基本数据类型的变量。
总结
以上就是今天要讲的内容,本文仅仅简单介绍了Java当中基本的一些数据类型的使用,后续有补充的内容我会继续补充的,也欢迎各位发表各自的心得与体会奥~
参考文献:
文档注释:Javadoc(文档注释)详解