java基本数据类型和数组.ppt

上传人:sh****n 文档编号:7399388 上传时间:2020-03-21 格式:PPT 页数:36 大小:787KB
返回 下载 相关 举报
java基本数据类型和数组.ppt_第1页
第1页 / 共36页
java基本数据类型和数组.ppt_第2页
第2页 / 共36页
java基本数据类型和数组.ppt_第3页
第3页 / 共36页
点击查看更多>>
资源描述
第2章基本数据类型和数组 1 标识符和关键字2 基本数据类型3 基本数据类型的转换4 数据的输入与输出5 数组 JAVA程序概览 1 包包是类和接口的集合 或者说包是接口和类的容器 Java中包的作用主要包括3个 1 使得功能相关的类易于查找和使用 同一个包下的类和接口通常是功能相关的 2 避免名字出现重复 不同的包下可以有现同名字的类 3 提供一种访问权限的控制机制 前面提到过访问控制通常是以包为分界的 包的定义格式如下 packagepg 其中package是包的关键字 多级包层次结构的格式为 packagepg1 pg2 pg3 包的创建就是将源文件总的接口和类纳入指定的包 1 要使用某个包 不是当前类所在的包 中类的时候 用import关键字引入 有点类似C 的 include 2 想想如何避免包名冲突 3 想想如果没有IDE环境 我们怎样定义和生成包3 包有访问权限问题 这将在类权限部分详细介绍 2 类类的格式如下 类的修饰符 class extends父类名 implenents接口名表 变量修饰符类型成员变量1 变量修饰符类型成员变量2 方法修饰符返回类型方法名1 参数表 方法体1 方法修饰符返回类型方法名2 参数表 方法体2 与C 类定义的区别1 形式上不同 C 使用 JAVA使用 extends 2 C 使用多重继承 JAVA使用 implenents 3 C 使用 h文件声明类 成员变量 成员函数 然后使用 cpp文件定义类 成员变量 成员函数的具体实现 给我们造成多大的麻烦 JAVA一个类的声明和实现在一起 至关重要的区别 目前的技术认为 h和 cpp的划分愚蠢 也许几年以后你不会再见到 h文件了 4 C 使用 public 这样的形式作为整体变量 方法修饰符 而JAVA必须对每个变量或者方法指定 如果不指定 系统会默认为private 3 函数调用System out println 请输入若干个数 每输入一个数回车确认 System是类 定义在包java lang中out是System类的静态成员对象println是out对象的静态函数 1 想想看为什么程序中没有importjava lang 2 为什么是类 应该是对象啊 如果想调用非静态函数 则需要先创建对象 在调用对象的成员函数 象这样 与C 一样 MyClassobj newMyClass obj not static function 怎样创建对象 这个下面再详细介绍 注意上面为什么不是obj 因为JAVA没指针 为什么JAVA没指针 这个以后再详细介绍 4 创建对象Scannerreader newScanner System in Whatisit 跟C 很像 回忆下C 是怎样创建对象的 1 JAVA没有指针 reader是个句柄 分配在堆中2 为什么没有指针 因为专家说不安全 去google查询下 缓冲区溢出 你就知道指针有多糟糕了 3 new的对象没有delete 因为对象被分配在 可自动回收的堆中 4 怎样做到自动回收 JAVA虚拟机提供了 垃圾自动回收算法 有兴趣的话去google上搜索下这几个字 5 为什么要 自动回收 到google上查询下 内存泄露 或者干两年程序员你就明白4 因为没有指针 这是为什么JAVA C 的原因之一 所以调用对象的成员函数不是 obj func 而是obj func 5基本数据类型初始化doublesum 0 intm 这个和C 差不多 不用管它了 表面查不多而已 1 C 的基本数据类型的长度和内存编码是随CPU和操作系统不同而不同的 而JAVA永远一致 所以JAVA可以跨平台 C 不能 writeonce runanywhere 2 C 定义变量而不初始化 其值是随机的 而JAVA会为它自动初使化 如果一个变量在使用前没有赋值 C 编译器会给予一个警告 而JAVA认为是个语义错误 又一个C 3 C 认为象int double char这些数据类型是一个程序设计语言所必须的 没有它们不行 而JAVA本身是一个纯面向对象语言 象Smalltalk 这些基本数据类型都不是必须的 因为在JAVA中一切都是对象 事实上JAVA已经为每一个基本数据类型提供了一个 封装类 只是为了老程序员的习惯考虑 才保留了这些基本类型 4 JAVA中的char与C 中的char完全不同 前者是unicode字符 占两个字节16位 后者是ascii字符 占1个字节8位 又一个C 5 JAVA中Boolean类型与C 不同 前者不能与数字类型进行强制转换 后者可以 2 1标识符和关键字 1 标识符1 Java语言规定标识符由字母 下划线 美元符号和数字组成 并且第一个字符不能是数字 2 标识符中的字母是区分大小写的 Beijing和beijing是不同的标识符 3 标识符用来类 变量 函数 数组等变量的名字 2关键字关键字就是Java语言中已经被赋予特定意义的一些单词 它们在程序上有着不同的用途 不可以把关键词作为名字来用 返回 Choosethethreevalididentifiersfromthoselistedbelow A IDoLikeTheLongNameClassB byteC constD okE 3 case 基本数据类型 复合数据类型 2 2基本数据类型 类类型 2 2基本数据类型 基本数据类型也称作简单数据类型 Java语言有8种简单数据类型 分别是 boolean byte short int long float double char 这8种数据类型习惯上可分为4大类型 逻辑类型 boolean字符类型 char整数类型 byte short int long浮点类型 float double Integer Character Byte Short Long Float Double 对应封装类 BigIntegerBigDecimal 2 2基本数据类型 1 逻辑类型 boolean 常量 true false 练习 booleana true booleana 1 1 但是不能 booleana 1 booleanb1 booleanb2 true b1 b2 booleanb b1 booleanc b1 inta booleand a 0 booleand a 0 inta 0 if a 1 2 2基本数据类型 2 字符类型注意 每个字符占两个字节 不再使用ASCII编码 而是使用Unicode例如字母A的编码是0 x0041 而不是0 x41 而汉字 真 的编码是0 x771FJava也使用转意字符 如 n 换行 b 退格 t 水平制表 单引号 这部分与C一样 u0030 Unicode编码 C语言没有 变量的定义 charx A 漂亮 A chart 真 chark 漂亮 chark 飘 charc 0 charc 48 charc 0 9 bytek 9 charch 0 k 这个跟C语言一样 C语言不允许 JAVA C都不允许 JAVA C都不允许 赋初值为字符 0 实际存储的是0 x0030 用整数赋初值为 0 赋值 9 即0 x0039 错误 H k是int型 需强制类型转换 2 2基本数据类型 下面的例子 Example3 中 分别用显示转换来显示一些字符在Unicode表中的位置 以及某些位置上的字符 3 整数类型 byteshortintlong 常量 6000 十进制 077 八进制 0 x3ABC 十六进制 12l 343L 0 xfffffffffL注意 若没有指定L 常量缺省是int类型的 练习 inta inta 3 byteb 8 shorts 10 longy 123L longz 123l finalinta 3 在C语言中是constinta 3 staticinta 3 finalstaticinta 3 在C语言中是constinta 3 注意 C语言中的unsignedinta 3 在JAVA中没有 练习byteb1 byteb2 127 shorts1 b1 b2 shorts1 short b1 b2 shorts2 short b1 123 ints b1 b2 longl1 2343 longl2 4294967296 longl2 4294967296L longl3 65536 63356 longl4 65536L 63356 booleanb 1L 32 1 32 shorts1 1 s1 s1 1 shorts1 1 s1 1 缺省值是随机数 赋初值为127 错误 强制类型转换 强制类型转换 不需要强制类型转换 不需要强制类型转换 错误 必须用L或l结尾 错误 乘法运算越界 l3为0 l4为4294967296L 4294967296L 0 错误 无法从int自动转为short 这个正确 自动类型转换 隐式类型转换 整型 实型 字符型数据可以混合运算 运算中 不同类型的数据先转化为同一类型 然后进行运算 转换从低级到高级 低 高byte short char int long float double 操作数1类型操作数2类型转换后的类型byte short charintintbyte short char intlonglongbyte short char int longfloatfloatbyte short char int long floatdoubledouble 注意 与C语言不同 自动类型转换不允许从高级到低级进行 数据类型转换必须满足如下规则 不能对boolean类型进行类型转换 不能把对象类型转换成不相关类的对象 在把容量大的类型转换为容量小的类型时必须使用强制 显式 类型转换 转换过程中可能导致溢出或损失精度inti 8 byteb byte i byte 255 1 byte 0 x5634 0 x34浮点数到整数的转换是通过舍弃小数得到 而不是四舍五入 int 23 7 23 int 45 89f 45 2 2基本数据类型 4 浮点类型 float double 常量 453 5439f 21379 987F 2e40f21 39d 21 987 123 0 6e 140 6乘10的 140次方 练习float在机器中占32位 double占64位 常量缺省是double型的doubled1 127 0 赋初值为127doubled2 127 赋初值为127floatf1 127 0f 必须在数字后加f或Ffloatf2 4 0e38f 错误 32位浮点数不能超过 3 4028234663852886e38floatf3 float d1 必须强制类型转换 在Java中 引用 reference 指向一个对象在内存中的位置 本质上它是一种带有很强的完整性和安全性限制的指针 当你声明某个类 接口或数组类型的变量时 那个变量的值总是某个对象的引用或者是null 指针就是简单的地址而已 引用除了表示地址而外 还象被引用的数据对象的缩影 还提供其他信息 指针可以有 运算 引用不可以运算 引用型变量只支持有限的逻辑判断 相等判断 是否同一个对象的引用 theObject nullotherObject theObject类型判断 是否是每个类的实例 instanceoftheObjectinstanceofObject instanceofString Java数据类型 复合 引用 数据类型 2 4数据的输入与输出 由于C语言出现的比较早 那个时候还没有图形用户界面的概念 GraphicsUserInterface 因此 C语言提供了许多用来输入 输出数据的函数 例如printf scanf等 Java不象C 提供在命令行进行数据输入 输出的功能不多 关于输入 输出我们将在第九章详细介绍 现在只需知道它的作用是在命令行窗口 例如 MS DOS窗口 输出数据即可 Sun公司新推出的SDK1 5又新增了一些在命令行进行数据输入 输出的功能 2 4数据的输入与输出 1 数据输出 System out printfSystem out printf的功能完全类似C语言中的printf函数 pringf的一般格式 printf 格式控制部分 表达式1 表达式2 表达式n 这里的用法与C语言相同 这里不再累述 下面我们看一个例子 来进一步了解System out printf数据输出 2 4数据的输入与输出 2 数据的输入 ScannerScanner是SDK1 5新增的一个类 可以使用该类创建一个对象 Scannerreader newScanner System in 然后reader对象调用下列方法 函数 读取用户在命令行输入的各种数据类型 nextByte nextDouble nextFloat nextInt nextLine nextLong nextShort 2 4数据的输入与输出 上述方法执行时都会堵塞 等待你在命令行输入数据回车确认 下面让我们来看一个例子 来更好的了解Scanner语句 在这个例子中 用户在键盘依次输入若干个数字 每输入一个数字都需要按回车键确认 最后在键盘输入一个非数字字符结束整个的输入操作过程 程序将计算出这些数的和及平均值 返回 JAVA的输入输出采用了设计模式 与C 在设计上有较大区别 我们后半段节绍 2 5数组 数组是相同类型的数据按顺序组成的一种复合数据类型 通过数组名加数组下标来使用数组中的数据 下标从0开始 1 声明数组声明数组包括数组的名字 数组包含的元素的数据类型 声明一维数组有下列两种格式 数组元素类型数组名字 数组元素类型 数组名字 首先记住 数组是对象 在JAVA中一切都是对象 2 5数组 声明二维数组有下列两种格式 数组元素类型数组名字 数组元素类型 数组名字 2 创建数组声明数组仅仅是给出了数组名和元素的数据类型 要想使用数组还必须为它分配内存空间 即创建数组 在为数组分配内存空间时必须指明数组的长度 格式如下 数组名字 new数组元素的类型 数组元素的个数 例如 floatboy newfloat 4 2 5数组 3 数组元素的使用一维数组通过下标符访问自己的元素 如boy 0 boy 1 等 需要注意的是下标从0开始 因此 数组若是7个元素 下标到6为止 如果你将来使用下标超过6将会发生异常 二维数组也通过下标符访问自己的元素 如a 0 1 a 1 2 等 下标也是从0开始 floatk 1 1f 1 2f floatn newfloat 3 floatk floatk 3 float k 1 1f 1 2f floatk 1 1 1 2 doublem 1 1 1 3 doublen newdouble 3 1 1 1 2 1 3 Example4exp newExample4 4 Example4exp1 newExample4 newExample4 newExample4 System out println exp1 0 is exp1 0 toString System out println exp 0 is exp 0 toString intPublicint cPlusPlusCannotdoLikeThis String arr 2 5数组 4 数组的初始化创建数组后 系统会给每个数组元素一个默认的值 如 float型是0 0 我们在声明数组时同时也还可以给数组的元素一个初始值 如 floatboy 21 3f 23 89f 2 0f 23f 778 98f 返回 二维数组的定义方式typearrayName 例如 intintArray 也可以采用另一种定义方式 type arrayName 与一维数组一样 这时对数组元素也没有分配内存空间 同样要使用运算符new来分配内存 然后才可以访问每个元素 二维数组 定义 二维数组的初始化也分为静态和动态两种 静态初始化 在定义数组的同时为数组分配空间 intintArray 1 2 2 3 3 4 不必指出数组每一维的大小 系统会根据初始化时给出的初始值的个数自动算出数组每一维的大小 1 数组 二维数组 初始化 动态初始化 对高维数组来说 分配内存空间有下面两种方法 1 直接为每一维分配空间 如 typearrayName newtype arraylength1 arraylength2 例如 inta newint 2 3 1 数组 二维数组 初始化 2 从最高维开始 而且必须从最高维开始 分别为每一维分配空间 如 Strings newString 2 s 0 newString 2 s 1 newString 3 s 0 0 newString Good s 0 1 newString Luck s 1 0 newString to s 1 1 newString you s 1 2 newString 1 数组 二维数组 初始化 作业 1 编写一个控制台程序 完成1 首先提示用户选择输入数据类型c表示字符 s表示字符串 i表示整数 r表示浮点数2 用户输入选择后 提示用户输入待排序数据 每次输入以回车结束 并提示用户再次输入3 最后一次用户直接回车表示用户输入结束4 对用户输入的数据从大到小排序 并友好的显示排序结果 利用二维数组实现矩阵乘法
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!