已阅读5页,还剩48页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二章Java语言基础 课程大纲 基本数据类型 关键字和标识符Java运算符和表达式数组分支语句 if else switch循环语句 while do while for其他语句 continue break return Java数据类型分类 一下是java中数据类型的分类 八种基本数据类型 基本数据类型的封装类 为了实现一些复杂的数据操作 Java在八种基本数据类型的基础上又定义八种封装类 如表所示 整型变量 整型变量的类型有byte short int long四种 int类型是最常使用的一种整数类型 它所表示的数据范围64位处理器 但对于大型计算 常会遇到很大的整数 超出int类所表示的范围 这时要使用long类型 由于不同的机器对于多字节数据的存储方式不同 可能是低字节向高字节存储 也可能是从高字节向低字节存储 这样 在分析网络协议或文件格时 为了解决不同机器上的字节存储顺序问题 用byte类型来表示数据是合适的 而通常情况下 由于其表示的数据范围很小 容易造成溢出 应避免使用 short类型则很少使用 它限制数据的存储为先高字节 后低字节 这样在某些机器中会出错 浮点型 实型 数据 十进制数形式 由数字和小数点组成 且必须有小数点 如0 123 123 123 123 0 科学计数法形式 如 123e3或123E3 其中e或E之前必须有数 且e或E后面的指数必须为整数 实常数在机器中占64位 具有double型的值 对于float型的值 要在数字后加f或F 如12 3F 它在机器中占32位 且表示精度较低 双精度类型double比单精度类型float具有更高的精度和更大表示范围 常常使用 字符数据类型char 字符类型在内存中占有2个字节 可以用来保存英文字母等字符 计算机处理字符类型时 是把这些字符当成不同的整数来看待 因此 严格说来 字符类型也算是整数类型的一种 charc a 指定变量c为char型 且赋初值为 a 与C C 不同 Java中的字符型数据不能用作整数 因为Java不供无符号整数类型 但是同样可以把它当作整数数据来操作 如下 intthree 3 charone 1 charfour char three one four 4 字符串类型String 表示一连串字符 如 helljava 在java中String类型不是基本数据类型 而是引用类型 因为本身被定义成了类结构 定义方式 Strings newString helljava 或者Strings hellojava 常用的转义字符 布尔型boolean 布尔型数据只有两个值 true和false 且它们不对应于任何整值 在流控制中常用到它 定义方式 booleanb true 数据类型间的转换 不同数据类型间进行运算需要转换成相同的数据类型 然后才进行统一运算 转换的总体规则是 由低到高直接转换 由高到低强制转换 int short char byte double long float 强制类型转换 高级数据要转换成低级数据 需用到强制类型转换 如 这种使用可能会导致溢出或精度的下降 最好不要使用 inti byteb byte i 把int型变量i强制转换为byte型 复杂数据类型 类 接口 数组 同简单数据类型的定义一样 Java虚拟机 JVM 还定义了索引 reference 数据类型 索引类型可以 引用 变量 由于Java没有明确地定义指针类型 所以索引类型可以被认为就是指向实际值或者指向变量所代表的实际值的指针 一个对象可以被多于一个以上的索引所 指 JVM不直接对对象寻址而是操作对象的索引 索引类型分成三种 它们分别是 类 class 接口 interface 和数组 array 索引类型可以引用动态创建的类实例 普通实例和数组 索引还可以包含特殊的值 这就是null索引 null索引在运行时并没有对应的类型 但它可以被转换为任何类型 索引类型的默认值就是null 类 类 class 指的是定义方法和数据的数据类型 从内部来看 JVM通常把class类型对象实现为指向方法和数据的一套指针 定义class类型的变量只能引用类的实例或者null 如以下代码所示 publicclassClassTest publicstaticvoidmain Stringargs MyTestmt1 newMyTest MyTestmt2 null MyTestmt3 0 classMyTest publicMyTest System out println Hello 接口 接口 interface 好比一种模版 这种模版定义了对象必须实现的方法 其目的就是让这些方法可以作为接口实例被引用 接口不能被实例化 类可以实现多个接口并且通过这些实现的接口被索引 接口变量只能索引实现该接口的类的实例 下面我们做一个例题 其中定义了一个接口 名字是MyInterface 同时还定义了一个类MyTest 这个类实现接口MyInterface publicclassInterfaceTest publicstaticvoidmain Stringargs MyTestmt newMyTest mt work classMyTestimplementsMyInterface publicvoidwork System out println I mworking interfaceMyInterface publicvoidwork 数组 Java数组 array 是动态创建的索引对象 这一点和类非常相似 此外 同类一样 数组只能索引数组的实例或者null 如以下代码所示 int array1 newint 5 int array2 null 数组继承Object类 这样 Object类的所有方法都可以被数组所调用 数组对象由元素组成 元素的数目也可以为0 在这种情况下称作数组为空 所有的数组都是从0开始对元素编号的 这意味着数组内的第1个元素的索引编号是数字0 所有对数组元素的访问都会在运行时接受检查 如果试图使用编号小于0或者大于数组长度来索引元素就会产生ArrayIndexOutOfBoundsException异常并被扔出 后面部分重点讲解数组 JAVA关键字 关键字是电脑语言里事先定义的 有特别意义的标识符 有时又叫保留字 Java的关键字对java的编译器有特殊的意义 他们用来表示一种数据类型 或者表示程序的结构等 关键字不能用作变量名 方法名 类名 包名 JAVA标识符 标识符概念Java语言中 对于变量 常量 函数 语句块也有名字 我们统统称之为Java标识符 标识符组成Java标识符由数字 字母和下划线 美元符号 组成 在Java中是区分大小写的 而且还要求首位不能是数字 最重要的是 Java关键字不能当作Java标识符 Stringstr java 正确String str C 正确String str vb 正确String12str vc 错误 Java运算符和表达式 算术运算符 关系运算符 赋值运算符 扩展赋值运算符 字符串连接运算符 算术运算符和算术表达式 加减运算符加减运算的结合性是从左到右 加减运算的操作元是整型或浮点型数据 加减运算符的优先级是4级 乘 除和求余运算符乘 除和求余运算的运算符号为 都是双目运算符 运算符的结合性是从左到右 例如 2 3 8 先计算2 3 然后再将得到的结果除以8 乘 除和求余运算的操作元是整型或浮点型数据 运算符的优先级是3级 自增 自减运算符 自增 自减运算的运算符号为 都是单目运算符 运算符的优先级是2级 运算符可以放在操作元之前 也可以放在操作元之后 但操作元必须是一个整型或浮点型变量 不能是常量或表达式 运算符的作用是使变量的值增1或减1 如 x x表示在使用x之前 先使x的值加 减 1 x x 表示在使用x之后 使x的值加 减 1 粗略地看 x和x 的作用相当于x x 1 但 x和x 的不同之处在于 x是先执行x x 1再使用x的值 而x 是先使用x的值再执x x 1 如果x的原值是5 则 对于y x y的值为6 对于y x y的值为5 然后x的值变为6 逻辑运算符 和 和 三目运算符 和 表示赋值运算 是判断前后两个变量的值是否相等 返回值是boolean类型 常用在条件判断中 a 5 赋值运算符与扩展赋值运算符 将 右边的表达式的值赋给左边的变量当 两侧数据类型不一致时 可以适用默认类型转换或适用强制类型转换原则进行处理longl 100 inti int l 字符串连接符 运算符 除了用于数值类型的加法运算法 在字符串类型 String 数据中 它还是一个用于连接字符串的特殊的运算符 intid 100 200 Strings hello world 当 用在表达式中的时候 如果其中有一个操作数是字符串类型 String 则Java会自动将另一个操作数也转换成字符串 然后将这两个字符串相连起来生成一个新的字符串 intc 12 System out println c 12 3 注意 进行打印时 无论任何类型 都自动转换成字符串进行打印 表达式 表达式是运算符和操作数的结合 它是任何一门编程语言的关键组成部分xx 10 5 x y z 10 i 30 i 10 0 表达式的运算顺序优先级从高到底的顺序优先级相同的按照从左到右的顺序 数组 一维数组二维数组多维数组 一维数组的声明 数组在其他语言是相同数据类型的元素的集合 而Java中 数组是独立的对象 有自身的方法 不是变量的集合数组的声明 类型标识符数组名 或类型标识符 数组名 intintArray 不是指长度可变 int intArray intabc double example2 数组的长度不是在声明时指定 而是在创建时由所开辟的内存单元数目确定 数组的创建 3步 数组的声明创建数组空间当数组元素为对象时 使用之前必须对数组元素进行创建和初始化 创建方法 1 先声明后创建intintArray intArray newint 10 2 在声明的同时创建intintArray newint 10 3 直接赋值int intArray 1 2 3 4 5 用关键字new初始化数组 只为数组分配存储空间而不对数组元素赋初值 用关键字new来初始化数组有两种方式 1 先声明数组 再初始化数组 格式如下 类型标识符数组名 数组名 new类型标识符 数组长度 第一条语句是数组的声明 第二条语句是初始化 两条语句中的数组名 类型标识符必须一致 数组长度通常是整型常量 用以指明数组元素的个数 2 在声明数组的同时用new关键字初始化数组 类型标识符数组名 new类型标识符 数组长度 类型标识符 数组名 new类型标识符 数组长度 int a newint 10 一维数组的引用 一维数组元素的引用格式如下 数组名 数组下标 数组下标的取值范围是0 数组长度 1 下标值可以是整数型常量或整数型变量表达式 例如 在有了 int a newint 10 声明语句后 下面的两条赋值语句是合法的 a 3 25 a 3 6 90 a 10 8 是错误的 二维数组 二维数组的声明 二维数组的声明只需给出两对方括号 其格式如下 类型说明符数组名 或类型说明符 数组名 intarr 或int arr 类型说明符可以是Java的基本类型 类或接口 数组名是用户遵循标识符命名规则给出的一个标识符 两个方括号中前面的方括号表示行 后面的方括号表示列 二维数组的初始化 二维数组声明同样也是为数组命名和指定其数据类型的 它不为数组元素分配内存 只有经初始化后才能为其分配存储空间 二维数组的初始化也分为直接指定初值和用new操作符两种方式 用new操作符初始化数组 1 先声明数组再初始化数组 数组声明后 可用两种格式中的任意一种来初始化二维数组 数组名 new类型说明符 数组长度 或数组名 new类型说明符 数组长度 数组长度 对数组名 类型说明符和数组长度的要求与一维数组一致 intarra 声明二维数组arra newint 3 4 初始化二维数组上述两条语句声明并创建了一个3行4列的数组arra 也就是说arra数组有3个元素 而每一个元素又都是长度为4的一维数组 实际上共有12个元素 共占用12 4 48个字节的连续存储空间 这里的语句 arra newint 3 4 2 在声明数组时初始化数组 格式如下 类型说明符 数组名 new类型说明符 数组长度 类型说明符数组名 new类型说明符 数组长度 数组长度 int arr newint 4 intarr newint 4 3 但是 不指定行数而指定列数是错误的 例如 下面的初始化是错误的 int arr newint 4 二维数组的引用 可用 length方法测定二维数组的长度 即元素的个数 只不过当使用 数组名 length 的形式测定的是数组的行数 而使用 数组名 i length 的形式测定的是该行的列数 例如 若有如下的初始化语句 int arr1 3 9 8 0 1 10 11 9 8 则arr1 length的返回值是3 表示数组arr1有3行或3个元素 而arr1 2 length的返回值是4 表示arr1 2 的长度为4 即有4个元素 二维数组也是通过下标进行访问的 下标也是从0开始的 数组第一位就是arr1 0 0 数组越界异常 Exceptioninthread main java lang ArrayIndexOutOfBoundsException 流程控制语句 分支语句循环语句跳转语句 分支语句 分支语句实现程序流程控制的功能 即根据一定的条件有选择地执行或跳过特定的语句Java分支语句分类if else switch if和else语句 if和else语句if booleanexpression statementorblock 或者 if booleanexpression statementorblock elseif booleanexpression statementorblock else statementorblock 注意 if或elseif后的条件表达式需要用括号括起来 但是如果只有一句语句 可以省略 switch语句 switch语句 switch 表达式 case值1 语句1 满足表达式值1的条件执行语句break case值2 语句2 满足值2的条件执行语句break case值n 语句n 满足值n的条件执行语句break default 缺省语句 注意 1 switch中的表达式只限于 har int short byte 2 default子句可以省略 但至多出现一次3 各种情况互斥 需要在每个case后加break if和switch的异同 相同点不同点switch多重if 都可以实现多分支结构 只能处理等值的条件判断 且条件是整型变量或字符变量的等值判断 处理在else部分还包含其它if结构 特别适合某个变量处于某个区间时的情况 随堂练习 根据小明的考试成绩 显示所获奖励成绩 100分 爸爸给他买辆玩具车成绩 90分 妈妈给他买MP390分 成绩 60分 妈妈给他买本参考书成绩 60分 什么都不买张三为他的手机设定了自动拨号按1 拨爸爸的号按2 拨妈妈的号按3 拨爷爷的号按4 拨奶奶的号 循环语句 循环语句是用来控制那些根据运行期情况需要反复执行的语句系列 Java中的循环语句fordo whilewhile for循环 for语句格式for init expr booleantest expr alter expr statementorblock 执行过程首先计算表达式init expr 接着执行表达式test expr 若表
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- AI在香料香精技术与工程中的应用
- 2025-2026月考试卷八年级数学上学期期中模拟卷(人教版)(原卷版)
- DB51∕T 2019-2026 川藏黑猪配套系生产技术规范
- 2025年农村能源革命试点
- 基坑支护施工方案(三轴、型钢、灌注桩)
- 2026年银行风险管控策略研究报告
- 2026年葡萄酒微观环境分析
- 2026年公共场所防火安全教育
- 2026年漫展活动方案策划书
- 2026年线性规划发展脉络分析方法
- ERCP均衡风缸控制模块Corecompetencetra
- 一阶电路的三要素法邵瑞课件
- 矿业企业国际化经营-深度研究
- 《城市轨道交通列车电气系统》全套教学课件
- 2023年浙江大学强基计划真题与解答
- 部编版道德与法治九年级上册每课教学反思
- DL∕T 5106-2017 跨越电力线路架线施工规程
- 床-轮椅转移操作质量及评分标准
- 古代汉语考研王力古代汉语笔记通论复习重点练习题及答案
- DL-T976-2017带电作业工具、装置和设备预防性试验规程
- 园艺植物组织培养-形考作业1-国开-参考资料
评论
0/150
提交评论