【Java精品源码栏目提醒】:以下是网学会员为您推荐的Java精品源码-第二讲_Java数据类型、运算符、流程控制、数组 - 其它资料,希望本篇文章对您学习有所帮助。
1. 课程名称:第二讲
Java 数据类型、运算符、流程控制、数组2. 知识点 2.1 课程说明 这部分内容同讲解其他程序设计语言一样,将对
Java 语言的基本知识点讲述,由于大家已经对 C 语言进行过学习,所以这一讲的内容应该比较容易接受。
2.2 本次讲解知识点1、概述2、
Java 语言注释3、
Java 语言的标识符和关键字4、
Java 语言的数据类型5、
Java 语言的运算符6、
Java 控制结构7、
Java 数组重点3. 具体内容 3.1 概述
Java 语言是一门强类型语言,所有的变量必须先声明,后使用。
从而保证程序更加健壮,可以在编译过程中发现源代码的错误。
Java 语言提供了丰富的基本数据类型,例如整型,字符型,浮点型和布尔型。
基本类型大致可分为两类:数值类型和布尔类型。
所有数值类型之间可以进行类型转换,包括自动类型转换和强制类型转换。
Java 语言提供了一系列运算符:算术运算符、位运算符、比较运算符、逻辑运算符,运算符和操作数连接在一起组成了表达式。
3.2 注释(掌握) 3.2.1 单行注释和多行注释 -单行注释 //:表示单行注释,放在要注释的内容之前即可。
-多行注释 / 注释内容 /: 范例:CommentDemo02.
java public class CommentDemo01 / 这里是多行注释 / public static void mainString args //这里是单行注释 注释也可作为一种常用的调试方法,将代码部分注释起来,可以让编译器忽略这段代码。
3.2.2 文档注释
Java 语言提供一种强大的注释方式:文档注释。
如果编写
Java 源代码时添加了合适的文档注释,可以使用 javadoc 工具直接从源代码中提取这些文档注释,形成一份格式良好的 API 文档。
什么是 API 文档:API 就是应用程序接口(Application Programming Interface) ,开发大型软件时,需要成千上万的类,而且是多人参与开发,每个人都要开发一些类,相应的每个类都有自己的属性和方法, 那么这些属性和方法如何使用?API 文档就是用以说明这些应用程序接口的文档。
对于
Java 而言,API 文档通常说明了每个类、每个方法的功能,用法等。
如何查看 API 文档: 下载 jdk-1_5_0-doc.zip 或者 jdk-6-doc.zip,解压缩。
找到:API amp Language Documentation-gtJava 2 Platform API Specification 由于文档注释是用于生成 API 文档的,而 API 文档主要用于说明类、方法、属性的功能,因此 javadoc 工具只能处理文档源文件在类、接口、方法、属性、构造器和内部类之前的注释,忽略其他地方的文档注释。
而且 javadoc 工具默认只处理以 public 和 protected修饰的类、接口、方法、属性、构造器之前的文档注释。
-文档注释: / 注释内容 / 范例:CommentDemo02.javapackage cn.javalesson/ Description: ltbr/gtCopyright C 2009-2011 Zhang Shujun ltbr/gtThis program is protected by copyright laws. ltbr/gtProgram Name: CommentDemo02.
java ltbr/gtDate: author Zhang Shujun cieczsjimnu.edu.cn version 1.0 / public class CommentDemo02 / 简单测试属性 / protected String name / 主方法,程序的入口 / public static void mainString args System.out.printlnquotHello Worldquot 范例:CommentDemo02Test.javapackage cn.javalesson/ Description: ltbr/gtCopyright C 2009-2011 Zhang Shujun ltbr/gtThis program is protected by copyright laws. ltbr/gtProgram Name: CommentDemo02Test.
java ltbr/gtDate: author Zhang Shujun cieczsjimnu.edu.cn version 1.0 / public class CommentDemo02Test / 简单测试属性 / public int age / CommentDemo02Test 类的测试构造器 / public CommentDemo02Test 生成 doc 的命令如下:javadoc -d doctest -windowtitle 测试 -doctitle 学习 javadoc 工具的测试 API 文档-header 自定义类 CommentDemo02.
java其中: -d ltdirectorygt 指定生成的 API 文档的存放路径 -windowtitle lttextgt 指定生成的 API 文档的浏览器窗口标题 -doctitle lthtml-codegt 指定一个 html 格式的文本,用作指定概述页面的标题 -header lthtml-codegt 包含每个页面的页眉 如果要生成更详细的文档,要用到以下常用的 javadoc 的标记: author:指定
Java 程序的作者 version:指定源文件的版本 deprecated:不推荐使用的方法 param:方法参数的说明信息 return:方法返回值的说明信息 see:“参见”,指定交叉参考的内容 exception:抛出异常的类型 throws:抛出的异常 javadoc 的标记出现的位置是有限制的: 可以出现在类或接口文档注释的有:author version deprecated see 可以出现在方法或构造器文档注释的有:deprecated see param returnthrows exception 可以出现在属性文档注释的有:deprecated see 范例:CommentDemo03.javapackage cn.javalesson/ Description: ltbr/gtCopyright C 2009-2011 Zhang Shujun ltbr/gtThis program is protected by copyright laws. ltbr/gtProgram Name: CommentDemo03.
java ltbr/gtDate: author Zhang Shujun cieczsjimnu.edu.cn version 1.0 /public class CommentDemo03 / 一个得到打招呼字符串的方法。
param name 该参数指定向谁打招呼。
return 返回打招呼的字符串。
/ public String helloString name return name quot,你好!quot 生成 doc 的命令如下:javadoc -d doctest -windowtitle 测试 -doctitle 学习 javadoc 工具的测试 API 文档-header 自定义类 -version -author CommentDemo.
java Javadoc 默认不回提取author version 两个标记的信息! 按包组织生成 doc 的命令如下:javadoc -d doctest -windowtitle 测试 -doctitle 学习 javadoc 工具的测试 API 文档-header 自定义类 -version -author cn.javalesson cn.javalessontest 要求文件必须按照包组织存放,相应包下的 package.html 文件中ltBODYgt元素中的内 容 成为包描述信息。
不同包用空格分割。
3.3 标示符和关键字(掌握) 3.3.1 分隔符:分号、花括号、方括号、圆括号、空格、圆点(掌握) -分号:
Java 语言采用分号作为语句分割符,每条语句必须以分号结尾。
Java 程序允许一行书写多行语句。
一个语句也可以跨多行,最后一定以分号结束。
字符串和变量名不能跨越多行。
-花括号: 花括号定义一个代码块。
类定义部分必须放在一个代码块里,方法体部分也必须放在一个代码块里。
条件、循环放在一个代码块里。
3.3.2 标识符规则 标识符可以由字母、数字、下划线、美元符号组成,其中数字不能开头。
标识符不能是
Java 关键字和保留字,但可以包含它们。
标识符不能包含空格。
标识符只能包含不能有、等特殊符号 区分字母大小写。
不能使用保留字和三个特殊直接量。
3.3.3
Java 关键字
Java 的关键字都是小写的。
Java 一共包含 48 个关键字 abstract assert boolean break byte case catch char class continue default Do double else enum extends final Finally float for if implements import Int interface instanceof long native new package pirvate protected public return short static strictfp super switch synchronized this throws throws transient try void volatile while 两个保留字:goto const 三个特殊直接量:true false null 3.4 数据类型(掌握) 3.4.1 数据类型分类
Java 语言是强类型语言,每个变量和每个表达式都有一个在编译时确定的类型,所以所有变量必须显式声明类型,即所有变量都是先声明后使用。
所谓引用数据类型,就是对一个对象的引用,对象包括实例和数组两种。
实际上,引用类型变量就是一个指针,只是
Java 语言里不用指针这个说法。
3.4.2 基本数据类型 -取值范围 数据类型 大小/位 可表示的数据范围long长整数 64 -9223372036854775808-263 9223372036854775807263-1int整数 32 -2147483648-2312147483647263-1short短整数 16 -32768-21532767215-1byte位 8 -128-2712727-1char字符 2 0255float单精度 32 -3.4E38-3.4×10383.4E383.4×1038double双精度 64 -1.7E308-1.7×10308 1.7E3081.7×10308 -整型 范例:IntTest01.javapublic class IntTest01 public static void mainString args int x 10 //定义整型 int y 20 //定义整型 System.out.printlnxy 一个
Java 整数常量默认就是 int 类型。
如果直接将一个较小的整数常量在 byte 或 short 类型的表示范围内赋值给一个 系统会自动把这个整数常量当成 byte 或者 short 类型来处理。
byte 或 short 变量, 如果使用一个巨大的整数常量超出了 int 类型的表示范围时,
Java 不会自动把这 个整数当成 long 类型来处理。
如果希望系统把一个常量当成 long 类型处理,应 在这个常量后增加 l 或 L 做后缀。
范例:IntTest02.javapublic class IntTest02 public static void mainString args byte a 56 long bigValue 9999999999999 long bigValue2 9223372036854775807L int octalValue 013 System.out.printlnoctalValue int hexValue1 0x13 int hexValue2 0XaF System.out.printlnhexValue1 System.out.printlnhexValue2 -字符型 通常用于表示单个字符,字符常量必须使用单引号括起来。
Java 采用 16 为的 Unicode作为编码方式,支持各种语言的自符。
表示方法有三种: 直接通过单个字符来指定字符常量:如‘A’ ‘9’ ‘0’ 通过转义字符表示特殊字符常量:‘n’ ‘t’ 直接使用 Unicode 值来表示字符常量, 格式是‘uXXXX’ 转义字符 说明 Unicode 表示方式 b 退格符 u0008 n 换行符 u000a r 回车符 u000d t 制表符 u0009 ” 双引号 u0022 ’ 单引号 u0027 反斜线 u005c 范例:CharTest01.javapublic class CharTest01 public static void mainString args //直接指定单个字符作为字符常量 char aChar a //使用转义字符来作为字符常量 char enterChar r //使用 Unicode 编码值来指定字符常量 char ch u9999 //将输出一个香字符 System.out.printlnch //定义一个中字符常量 char zhong 中 //直接将一个 char 变量当成 int 类型变量使用 int zhongValue zhong System.out.printlnzhong System.out.printlnzhongValue //直接把一个 0~65535 范围内的 int 整数赋给一个 char 变量 char c 97 System.out.printlnc -浮点型 范例:FloatTest01.javapublic class FloatTest01 public static void mainString args float af 5.2345556f //下面将看到 af 的值已经发生了改变 System.out.printlnaf double a 0.0 double c Double.NEGATIVE_INFINITY float d Float.NEGATIVE_INFINITY //看到 float 和 double 的负无穷大的是相等的。
System.out.printlnc d //0.0 除以 0.0 将出现非数 System.out.printlna / a //两个非数之间是不相等的 System.out.printlna / a Float.NaN //所有正无穷大都是相等的 System.out.println6.0 / 0 555.0/0 //负数除以 0.0 得到负无穷大 System.out.println-8 / a //下面代码将抛出除以 0 的异常 //System.out.println0 / 0
Java 浮点数使用二进制数据的科学计数法来表示浮点数,因此可能不能精确表示一个浮点数。
如果需要精确保存一个浮点数,可以考虑使用 BigDecimal 类。
Java 语言的浮点型默认是 double 型, 如果要使用浮点型当成 float 处理,应该在数后紧跟 f 或 F。
Java 提供了三个特殊的浮点数值:正无穷大、负无穷大、非数,用来表示溢出和出错。
正无穷大通过 Double 或 Float 的 POSITIVE_INFINITY 表示,负无穷大通过 Double 或Float 的 NEGATIVE_INFINITY 表示,非数通过 Double 或 Float 的 NaN 表示。
所有正无穷大数值都是相等的,所有负无穷大数值都是相等的,而 NaN 不与任何数值相等,甚至和 NaN 都不想等。
-布尔型 在
Java 中,boolean 类型的数值只能是 true 或 false,不能用 0 或者非 0 来代表。
其他基本数据类型的值也不能转换成 boolean 类型。
范例:BooleanTest01.javapublic class BooleanTest01 public static void mainString args boolean b1 true boolean b2 false //下面代码将出现错误:字符串不能直接变成 boolean 型的值 //boolean b3 quottruequot //使用 boolean 和字符串进行连接运算,boolean 会自动转换成字符串 String str true quotquot //下面将输出 true System.out.printlnstr 3.4.3 基本数据类型的转换 在
Java 程序中,不同基本类型的值经常需要在不同类型之间进行转换。
Java 语言所提供的 7 个数值型之间可以相互转换,有两种转换方式,自动类型转换和强制类型转换。
-自动类型转换 如果系统支持把某个基本类型的值直接赋给另一种基本类型,这种方式称为自动类型转换。
当把一个表数范围小的数值或变量直接赋给另一个表数范围大的变量时,系统进行自动类型转换。
Java 支持自动类型转换的类型如下图所示: char int long float double byte short 范例:ConversionDemo01.Javapublic class ConversionDemo01 public static void mainString args int a 6 float f a System.out.printlnf byte b 9 //char c b double d b System.out.printlnd 当把任何基本类型的值和字符串值进行连接运算时,基本类型的值将自动类型转换为字符串类型,虽然字符串类型不再是基本类型,而是引用类型。
因此,如果希望把基本类型的值转换为对应的字符串,可以把基本类型的值和一个空字符串进行连接。
范例:ConversionDemo02.Javapublic class ConversionDemo02 public static void mainString args //String str2 5 String str2 3.5f quotquot System.out.printlnstr2 System.out.println3 4 quotHelloquot //7Hello System.out.printlnquotHelloquot 3 4 //Hello34 -强制类型转换 上图逆向转换就要强制类型转换,语法格式targetTypevalue 强制类型转换可能会引起数据溢出,造成数据丢失。
范例:ConversionDemo03.Javapublic class ConversionDemo03 public static void mainString args int iValue 233 //强制把一个 int 类型的值转换为 byte 类型的值 byte bValue byteiValue //将输出-23 System.out.printlnbValue double dValue 3.98 //强制把一个 double 类型的值转换为 int int toI intdValue // 将输出 3 System.out.printlntoI 上面程序中,浮点数强制类型转换为整数,小数部分直接被截断。
int 类型 233 变成了-23。
32位的int型 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 1 8位的byte型 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 1 将补码换算成原码过程 1 1 1 0 1 0 0 1 减1成反码 1 1 1 0 1 0 0 0 按位取反成原码, 保留符号位 1 0 0 1 0 1 1 1 1×241×221×211×2023 32 位 int 型的 233 在内存中如上图表示,强制类型转换为 8 位的 byte 类型,则需要截断前面 24 位,只保留右边 8 位,此处最左边的 1 是一个符号位,表明是一个负数,负数在计算机内以补码的形式存在,需要换算成原码,换算过程如上图。
下面是一个临时生成验证字符串的代码,先随机生成一个在指定范围内的 int 数字(如果希望生成小写字母,也就是在 97122 之间) ,然后强制转换成 char 型,再将多次生成的字符连缀起来即可。
范例:ConversionDemo04.
Java 生成 6 位随机字符串public class ConversionDemo04 public static void mainString args String result quotquot for int i0 ilt6 i int intValue intMath.random 26 97 result result charintValue System.out.printlnresult 范例:ConversionDemo05.Javapublic class ConversionDemo05 public static void mainString args //float a 5.6 float b 5.6f float c float5.6 String d quot45quot int intValue Integer.parseIntd 通常情况下,字符串不能直接转换为基本类型,但是通过基本类型对应的包装类可以把字符串转换成基本类型。
boolean:Boolean byte:Byte short:Short int:Integer long:Long char:Character float:Float double:Double -表达式类型的自动提升 当一个算术表达式中包含多个基本类型的值时,这个算术表达式的数据类型将发生自动提升。
规则如下: 所有 byte、short、char 都将被提升到 int 整个算术表达式的数据类型自动提升到与表达式中最高等级操作数同样的类型。
表达式的类型将严格保持和表达式中最高等级操作数相同的类型。
范例:ConversionDemo06.Javapublic class ConversionDemo06 public static void mainString args //定义一个 short 类型变量 short sValue 5 //下面代码将出错:表达式中的 sValue 将自动提升到 int 类型.