




已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章 基本数据类型和数组 1. 标识符和关键字 2. 基本数据类型 3. 基本数据类型的转换 4. 数据的输入与输出 5数组 JAVA程序概览 1.包 包是类和接口的集合,或者说包是接口和类的容器 。Java中包的作用主要包括3个: 1)使得功能相关的类易于查找和使用,同一个包 下的类和接口通常是功能相关的。 2)避免名字出现重复,不同的包下可以有现同名 字的类。 3)提供一种访问权限的控制机制。前面提到过访 问控制通常是以包为分界的。 包的定义格式如下: package pg; 其中package是包的关键字。 多级包层次结构的格式为: package pg1.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.想想看为什么程序中没有import java.lang.*) 2.为什么是类,应该是对象啊? 如果想调用非静态函数,则需要先创建对象,在调用对象的成员函数。象这样(与 C+一样): MyClass obj = new MyClass(); obj.not_static_function(); (怎样创建对象?这个下面再详细介绍。注意上面为什么不是obj-,因为JAVA没指针) (为什么JAVA没指针?这个以后再详细介绍) 4.创建对象 Scanner reader=new Scanner(System.in); What is it? 跟C+很像,回忆下 C+是怎样创建对象的 ? 1.JAVA没有指针,reader是个句柄,分配在堆中 2.为什么没有指针,因为专家说不安全(去google查询下“缓冲区溢出”,你就知道 指针有多糟糕了) 3.new的对象没有delete,因为对象被分配在“可自动回收的堆中” 4.怎样做到自动回收,JAVA虚拟机提供了“垃圾自动回收算法”(有兴趣的话去google 上搜索下这几个字) 5.为什么要“自动回收”,到google上查询下”内存泄露”或者干两年程序员你就明白 4.因为没有指针(这是为什么JAVA=C+-的原因之一),所以调用对象的成员函数不是 :obj-func();而是obj.func(); 5 基本数据类型初始化 double sum=0; int m; 这个和C+差不多 ,不用管它了 表面查不多而已。 1.C+的基本数据类型的长度和内存编码是随CPU和操作系统不同而不同的,而JAVA 永远一致(所以JAVA可以跨平台,C+不能:write once,run anywhere)。 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语言中已经被赋予特定意义的一些 单词,它们在程序上有着不同的用途,不可以把关键词 作为名字来用。 返回 Choose the three valid identifiers from those listed below. A. IDoLikeTheLongNameClass B. $byte C. const D. _ok E. 3_case Java type system primitivereferencenull charnumericbooleanclassinterfacearray integral floating-point byteshortintlongfloatdouble 基本数据类型 复合数据类型 2.2 基本数据类型 类类型 2.2 基本数据类型 基本数据类型也称作简单数据类型。Java语言有8 种简单数据类型,分别是: boolean、byte 、short、int、long、 float、double、char。 这8种数据类型习惯上可分为4大类型: u逻辑类型:boolean u字符类型:char u整数类型:byte、short、int、long u浮点类型:float、double Integer Character Byte Short Long Float Double 对应封装类 BigInteger BigDecimal 2.2 基本数据类型 1逻辑类型(boolean) 常量:true ,false。 练习: boolean a = true; boolean a = (1=1); 但是不能: boolean a = 1; boolean b1;boolean b2 = true; b1 = !b2; boolean b = (b1 boolean c = (b1 int a; boolean d = (a=0); boolean d=(a=0); int a=0; if(a=1) 2.2 基本数据类型 2字符类型 注意:每个字符占两个字节,不再使用ASCII编码,而是使用Unicode 例如字母A的编码是0x0041,而不是0x41, 而汉字真的编码是0x771F Java也使用转意字符,如:n:换行 b:退格 t:水平制表 :单引号(这部分与C一样) u0030: Unicode编码 (C语言没有) 变量的定义: char x= A,漂亮=A; char t =真; char k = 漂亮; char k = “飘”; nchar c = 0; nchar c = 48; nchar c = 0+9; nbyte k = 9; char ch=0+k; /(这个跟C语言一样) /C语言不允许 /(JAVA,C都不允许) /(JAVA,C都不允许) / 赋初值为字符0,实际存储的是0x0030 / 用整数赋初值为0 /赋值9,即0x0039 / 错误,H+k是int型,需强制类型转换 2.2 基本数据类型 下面的例子(Example3)中,分别用显示转换来显示一些 字符在Unicode表中的位置,以及某些位置上的字符。 3整数类型(byte short int long) 常量:6000(十进制),077(八进制),0x3ABC(十六进制)。 12l, -343L, 0xfffffffffL 注意:若没有指定L,常量缺省是int类型的 练习: int a;int a = 3; byte b = 8; short s = 10; long y = 123L; long z = 123l; final int a=3;(在C语言中是const int a=3;) static int a = 3; final static int a = 3; ;(在C语言中是const int a=3;) 注意:C语言中的unsigned int a = 3;在JAVA中没有 n练习 nbyte b1; nbyte b2 = 127; nshort s1 = (b1 + b2); nshort s1 = (short)(b1 + b2); nshort s2 = (short)(b1 + 123) nint s = b1 + b2; nlong l1 = 2343; nlong l2 = 4294967296; nlong l2 = 4294967296L; nlong l3 = 65536*63356; nlong l4 = 65536L*63356; nboolean b = (1L 高 byte,short,char int long float double 操作数1类型操作数2类型转换后的类型 byte、short、charintint byte、short、char、intlonglong byte、short、char、int、longfloatfloat byte、short、char、int、long、floatdoubledouble n注意:与C语言不同,自动类型转换不允许从高级到低级进行 n 数据类型转换必须满足如下规则: n不能对boolean类型进行类型转换。 n不能把对象类型转换成不相关类的对象。 n 在把容量大的类型转换为容量小的类型时必须使用强制(显式)类型转换。 n 转换过程中可能导致溢出或损失精度 n int i = 8; byte b=(byte)i; n (byte)255 = -1(byte)0x5634 = 0x34 n 浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入 n (int)23.7 = 23(int)-45.89f = -45 2.2 基本数据类型 4浮点类型(float,double) 常量:453.5439f,21379.987F,2e40f 21.39d,21.987,123.0,6e-140(6乘10的-140次方 ) n练习 float在机器中占32位,double占64位,常量缺省是double型的 double d1 = 127.0; 赋初值为127 ndouble d2 = 127; 赋初值为127 nfloat f1 = 127.0f; 必须在数字后加f或F nfloat f2 = 4.0e38f; 错误!32位浮点数不能超过 3.4028234663852886e38 nfloat f3 = (float)d1; 必须强制类型转换 n在Java中,引用(reference)指向一个对象在内存中的位置,本质上它是一种 带有很强的完整性和安全性限制的指针。 n当你声明某个类、接口或数组类型的变量时,那个变量的值总是某个对象的引 用或者是null。 n指针就是简单的地址而已,引用除了表示地址而外,还象被引用的数据对 象的缩影,还提供其他信息。 n指针可以有+、-运算,引用不可以运算。 n引用型变量只支持有限的逻辑判断: n相等判断(是否同一个对象的引用):= != ntheObject = null notherObject != theObject n类型判断(是否是每个类的实例): instanceof ntheObject instanceof Object n“” instanceof String Java数据类型 复合(引用)数据类型 2.4 数据的输入与输出 由于C语言出现的比较早,那个时候还没有图形用户 界面的概念(Graphics User Interface),因此,C语言 提供了许多用来输入、输出数据的函数,例如printf 、 scanf等。 Java不象C,提供在命令行进行数据输入、输 出的功能不多。 关于输入、输出我们将在第九章详细介 绍,现在只需知道它的作用是在命令行窗口(例如,MS- DOS窗口)输出数据即可。Sun公司新推出的SDK1.5又新增 了一些在命令行进行数据输入、输出的功能。 2.4 数据的输入与输出 1数据输出: System.out.printf System.out.printf的功能完全类似C语言中的 printf函数。pringf的一般格式: printf(格式控制部分,表达式1,表达式2,表达式 n); 这里的用法与C语言相同,这里不再累述。 下面我们看一个例子,来进一步了解 System.out.printf 数据输出: 2.4 数据的输入与输出 2数据的输入:Scanner Scanner是SDK1.5新增的一个类,可以使用该类创建一 个对象: Scanner reader=new Scanner(System.in); 然后reader对象调用下列方法(函数),读取用户在命 令行输入的各种数据类型, nextByte(), nextDouble(), nextFloat(), nextInt(), nextLine(),nextLong(), nextShort()。 2.4 数据的输入与输出 上述方法执行时都会堵塞,等待你在命令行输入数据回 车确认。 下面让我们来看一个例子,来更好的了解Scanner语句 ,在这个例子中,用户在键盘依次输入若干个数字,每输 入一个数字都需要按回车键确认,最后在键盘输入一个非 数字字符结束整个的输入操作过程。程序将计算出这些数 的和及平均值。 返回 JAVA的输入输出采用了设计模式,与C+在设计上有 较大区别,我们后半段节绍 2.5 数组 数组是相同类型的数据按顺序组成的一种复合数据类 型。通过数组名加数组下标来使用数组中的数据。下标从0 开始。 1声明数组 声明数组包括数组的名字、数组包含的元素的数据类 型。 声明一维数组有下列两种格式: 数组元素类型 数组名字 ; 数组元素类型 数组名字; 首先记住!,数 组是对象!(在 JAVA中一切都是 对象) 2.5 数组 声明二维数组有下列两种格式: 数组元素类型 数组名字; 数组元素类型 数组名字; 2创建数组 声明数组仅仅是给出了数组名和元素的数据类型,要想 使用数组还必须为它分配内存空间,即创建数组。在为数组 分配内存空间时必须指明数组的长度。格式如下: 数组名字 = new 数组元素的类型数组元素的个数; 例如: float boy= new float4; 2.5 数组 3数组元素的使用 一维数组通过下标符访问自己的元素,如boy0, boy1等。需要注意的是下标从0开始,因此,数组若是 7个元素,下标到6为止,如果你将来使用下标超过6将会 发生异常。 二维数组也通过下标符访问自己的元素,如 a01,a12等 。下标也是从0开始。 float k = 1.1f,1.2f; float n = new float3; float k; float k3; float k = 1.1f,1.2f; float k = 1.1,1.2; double m = 1.1,1.3; double n = new double31.1,1.2,1.3; Example4 exp = new Example44; Example4 exp1 = new Example4(),new Example4(),new Example4(); System.out.println(“exp10 is “ + exp10.toString(); System.out.println(“exp0 is “ + exp0.toString();int Public int cPlusPlusCannotdoLikeThis(String arr); C+ JAVA YES YES NO YES NO YES YES NO NO NO YES (WARN) NO YES YES NO NO YES YES YES YES YES YES YES NO 2.5 数组 4数组的初始化 创建数组后,系统会给每个数组元素一个默认的值, 如,float型是0.0。 我们在声明数组时同时也还可以给数组的元素一个初 始值,如: float boy= 21.3f,23.89f,2.0f,23
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 汕头户外庭院施工方案
- 护坡施工方案案例范本
- 南阳工艺美术职业学院《文化创意参展参赛实训》2023-2024学年第一学期期末试卷
- 烟台科技学院《乐理基础(1)》2023-2024学年第一学期期末试卷
- 上海南湖职业技术学院《高级商务英语(三)》2023-2024学年第二学期期末试卷
- 江西外语外贸职业学院《中国古代文学史(3)》2023-2024学年第一学期期末试卷
- 浙江树人学院《建筑美学》2023-2024学年第一学期期末试卷
- 湘南学院《体育测量评价》2023-2024学年第一学期期末试卷
- 2025江西省数据库安全监控服务合同(示范文本)
- 南阳医学高等专科学校《体育网球》2023-2024学年第一学期期末试卷
- 《兰亭集序》《归去来兮辞》对比阅读课件(教材精研+情境任务)统编版高中语文选择性必修下册
- 农贸市场计量管理制度(3篇)
- 拼音bpmfdtnl课件教学课件最新
- 一级建造师《港口与航道工程管理与实务》课件专业工程技术
- 国家开放大学《社会心理学》形考任务1-4参考答案
- 《工程制图》期末考试试卷附答案
- 重症患者的容量管理课件
- 二年级下册道德与法治 课件-9 小水滴的诉说 部编版 (共16张PPT)
- 生产设备点检记录表
- 转化膜与着色技术
- DL∕T 1286-2021 火电厂烟气脱硝催化剂检测技术规范
评论
0/150
提交评论