




已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第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.类类的格式如下:类的修饰符classextends父类名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=(1L32=1intlongfloatdouble,操作数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=newfloat4;,2.5数组,3数组元素的使用一维数组通过下标符访问自己的元素,如boy0,boy1等。需要注意的是下标从0开始,因此,数组若是7个元素,下标到6为止,如果你将来使用下标超过6将会发生异常。二维数组也通过下标符访问自己的元素,如a01,a12等。下标也是从0开始。,floatk=1.1f,1.2f;floatn=newfloat3;floatk;floatk3;floatk=1.1f,1.2f;floatk=1.1,1.2;doublem=1.1,1.3;doublen=newdouble31.1,1.2,1.3;Example4exp=newExample44;Example4exp1=newExample4(),newExample4(),newExample4();System.out.println(exp10is+exp10.toString();System.out.println(exp0is+exp0.toString();intPublicintcPlusPlusCannotdoLikeThis(Stringarr);,2.5数组,4数组的初始化创建数组后,系统会给每个数组元素一个默认的值,如,float型是0.0。我们在声明数组时同时也还可以给数组的元素一个初始值,如:floatboy=21.3f,23.89f,2.0f,23f,778.98f;,返回,二维数组的定义方式typearrayName
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2030全球及中国支付来源(S2P)外包行业发展研究与产业战略规划分析评估报告
- 2025年食品行业质量安全追溯体系在食品安全科技创新体系建设中的应用分析报告
- 幼儿园趣味健康课
- 2025年快消品包装行业可持续发展策略深度分析报告
- 护理质量持续改进汇报
- 施工现场电气线路防火检测措施
- 广西北部湾中学等学校2025届物理八年级第一学期期末学业水平测试试题含解析
- 桂林理工大学《有限元及ANSYS》2023-2024学年第一学期期末试卷
- 2025年数字文化产业商业模式创新与数字艺术产业技术发展分析报告
- 2024年中国橡胶密封件行业市场运行现状调查报告
- 建设工程纠纷律师课件
- 殡仪馆理论试题及答案
- 《注射用复合辅酶》课件
- 安全多方计算方案
- 产品设计创意合作协议大纲
- 2025年证券从业资格证考试题库试题及答案
- 贝壳租房合同协议
- 委托前期手续合同协议
- 小学卫生安全课件
- 燃气工程项目规范培训
- 外科手术质量提升计划
评论
0/150
提交评论