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

上传人:本田雅阁 文档编号:2124773 上传时间:2019-02-19 格式:PPT 页数:36 大小:787.01KB
返回 下载 相关 举报
java基本数据类型和数组.ppt_第1页
第1页 / 共36页
java基本数据类型和数组.ppt_第2页
第2页 / 共36页
java基本数据类型和数组.ppt_第3页
第3页 / 共36页
亲,该文档总共36页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《java基本数据类型和数组.ppt》由会员分享,可在线阅读,更多相关《java基本数据类型和数组.ppt(36页珍藏版)》请在三一文库上搜索。

1、第2章 基本数据类型和数组,1. 标识符和关键字 2. 基本数据类型 3. 基本数据类型的转换 4. 数据的输入与输出 5数组,JAVA程序概览,1.包 包是类和接口的集合,或者说包是接口和类的容器。Java中包的作用主要包括3个: 1)使得功能相关的类易于查找和使用,同一个包下的类和接口通常是功能相关的。 2)避免名字出现重复,不同的包下可以有现同名字的类。 3)提供一种访问权限的控制机制。前面提到过访问控制通常是以包为分界的。,包的定义格式如下: package pg; 其中package是包的关键字。 多级包层次结构的格式为: package pg1.pg2.pg3; 包的创建就是将源文

2、件总的接口和类纳入指定的包。,1.要使用某个包(不是当前类所在的包)中类的时候,用import关键字引入(有点类似C+的#include) 2.想想如何避免包名冲突? 3.想想如果没有IDE环境,我们怎样定义和生成包 3.包有访问权限问题,这将在类权限部分详细介绍,2.类 类的格式如下: 类的修饰符 class extends 父类名 implenents 接口名表 变量修饰符 类型 成员变量1; 变量修饰符 类型 成员变量2; 方法修饰符 返回类型 方法名1(参数表) 方法体1 方法修饰符 返回类型 方法名2(参数表) 方法体2 ,与C+类定义的区别 1)形式上不同,C+使用“:”,JAVA

3、使用“extends” 2)C+使用多重继承,JAVA使用“implenents” 3)C+使用.h文件声明类、成员变量、成员函数,然后使用.cpp文件定义类、成员变量、成员函数的具体实现(给我们造成多大的麻烦),JAVA一个类的声明和实现在一起(至关重要的区别,目前的技术认为,.h和.cpp的划分愚蠢,也许几年以后你不会再见到.h文件了) 4)C+使用“public:”这样的形式作为整体变量、方法修饰符;而JAVA必须对每个变量或者方法指定,如果不指定,系统会默认为private,3. 函数调用 System.out.println(“请输入若干个数,每输入一个数回车确认“); System

4、是类,定义在包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 Scan

5、ner(System.in);,What is it?,跟C+很像,回忆下C+是怎样创建对象的?,1.JAVA没有指针,reader是个句柄,分配在堆中 2.为什么没有指针,因为专家说不安全(去google查询下“缓冲区溢出”,你就知道指针有多糟糕了) 3.new的对象没有delete,因为对象被分配在“可自动回收的堆中” 4.怎样做到自动回收,JAVA虚拟机提供了“垃圾自动回收算法”(有兴趣的话去google上搜索下这几个字) 5.为什么要“自动回收”,到google上查询下”内存泄露”或者干两年程序员你就明白 4.因为没有指针(这是为什么JAVA=C+-的原因之一),所以调用对象的成员函数

6、不是: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这些数据类型是一个程序设计语言所必须

7、的,没有它们不行。而JAVA本身是一个纯面向对象语言(象Smalltalk),这些基本数据类型都不是必须的,因为在JAVA中一切都是对象(事实上JAVA已经为每一个基本数据类型提供了一个“封装类”,只是为了老程序员的习惯考虑,才保留了这些基本类型) 4.JAVA中的char与C+中的char完全不同,前者是unicode字符,占两个字节16位,后者是ascii字符,占1个字节8位。(又一个C+-) 5.JAVA中Boolean类型与C+不同,前者不能与数字类型进行强制转换,后者可以,2.1 标识符和关键字,1标识符 1)Java语言规定标识符由字母、下划线、美元符号和数字组成,并且第一个字符不

8、能是数字。 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,基本数据类型,复合数据类型,2.2 基本数据类型,类类型,2.2 基本数据类型,

9、基本数据类型也称作简单数据类型。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,对应封装类,BigInteger BigDecimal,2.2 基本数据类型,1逻辑类型(boolean) 常量:true ,false。 练习: boolean

10、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:退

11、格 t:水平制表 :单引号(这部分与C一样) u0030: Unicode编码 (C语言没有) 变量的定义: char x= A,漂亮=A; char t =真; char k = 漂亮; char k = “飘”; char c = 0; char c = 48; char c = 0+9; byte k = 9; char ch=0+k;,/(这个跟C语言一样),/C语言不允许,/(JAVA,C都不允许),/(JAVA,C都不允许),/ 赋初值为字符0,实际存储的是0x0030,/ 用整数赋初值为0,/赋值9,即0x0039,/ 错误,H+k是int型,需强制类型转换,2.2 基本数据类型

12、,下面的例子(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;

13、final static int a = 3; ;(在C语言中是const int a=3;) 注意:C语言中的unsigned int a = 3;在JAVA中没有,练习 byte b1; byte b2 = 127; short s1 = (b1 + b2); short s1 = (short)(b1 + b2); short s2 = (short)(b1 + 123) int s = b1 + b2; long l1 = 2343; long l2 = 4294967296; long l2 = 4294967296L; long l3 = 65536*63356; long l4

14、= 65536L*63356; boolean b = (1L 32 = 1 32) short s1 = 1; s1 = s1 + 1; short s1 = 1; s1 += 1;,/ 缺省值是随机数,/ 赋初值为127,/错误,/ 强制类型转换,/ 强制类型转换,/ 不需要强制类型转换,/ 不需要强制类型转换,/错误,/ 必须用L或l结尾,/ 错误,乘法运算越界,l3为0,/ l4为4294967296L,/ 4294967296L != 0,/ 错误,无法从int自动转为short,/ 这个正确,自动类型转换(隐式类型转换) 整型、实型、字符型数据可以混合运算。运算中,不同类型的数据先

15、转化为同一类型,然后进行运算,转换从低级到高级: 低-高 byte,short,char int long float double,操作数1类型 操作数2类型 转换后的类型 byte、short、char int int byte、short、char、int long long byte、short、char、int、long float float byte、short、char、int、long、float double double,注意:与C语言不同,自动类型转换不允许从高级到低级进行,数据类型转换必须满足如下规则: 不能对boolean类型进行类型转换。 不能把对象类型转换成不相

16、关类的对象。 在把容量大的类型转换为容量小的类型时必须使用强制(显式)类型转换。 转换过程中可能导致溢出或损失精度 int i = 8; byte b=(byte)i; (byte)255 = -1 (byte)0x5634 = 0x34 浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入 (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次方),练习 float在机器中占32位,d

17、ouble占64位,常量缺省是double型的 double d1 = 127.0; 赋初值为127 double d2 = 127; 赋初值为127 float f1 = 127.0f; 必须在数字后加f或F float f2 = 4.0e38f; 错误!32位浮点数不能超过 3.4028234663852886e38 float f3 = (float)d1; 必须强制类型转换,在Java中,引用(reference)指向一个对象在内存中的位置,本质上它是一种带有很强的完整性和安全性限制的指针。 当你声明某个类、接口或数组类型的变量时,那个变量的值总是某个对象的引用或者是null。 指针就

18、是简单的地址而已,引用除了表示地址而外,还象被引用的数据对象的缩影,还提供其他信息。 指针可以有+、-运算,引用不可以运算。 引用型变量只支持有限的逻辑判断: 相等判断(是否同一个对象的引用):= != theObject = null otherObject != theObject 类型判断(是否是每个类的实例): instanceof theObject instanceof Object “” instanceof String,Java数据类型 复合(引用)数据类型,2.4 数据的输入与输出,由于C语言出现的比较早,那个时候还没有图形用户界面的概念(Graphics User Int

19、erface),因此,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); 这里的用法

20、与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 数据的输入与输出,上述方

21、法执行时都会堵塞,等待你在命令行输入数据回车确认。 下面让我们来看一个例子,来更好的了解Scanner语句,在这个例子中,用户在键盘依次输入若干个数字,每输入一个数字都需要按回车键确认,最后在键盘输入一个非数字字符结束整个的输入操作过程。程序将计算出这些数的和及平均值。,返回,JAVA的输入输出采用了设计模式,与C+在设计上有较大区别,我们后半段节绍,2.5 数组,数组是相同类型的数据按顺序组成的一种复合数据类型。通过数组名加数组下标来使用数组中的数据。下标从0开始。 1声明数组 声明数组包括数组的名字、数组包含的元素的数据类型。 声明一维数组有下列两种格式: 数组元素类型 数组名字 ; 数组

22、元素类型 数组名字;,首先记住!,数组是对象!(在JAVA中一切都是对象),2.5 数组,声明二维数组有下列两种格式: 数组元素类型 数组名字; 数组元素类型 数组名字; 2创建数组 声明数组仅仅是给出了数组名和元素的数据类型,要想使用数组还必须为它分配内存空间,即创建数组。在为数组分配内存空间时必须指明数组的长度。格式如下: 数组名字 = new 数组元素的类型数组元素的个数; 例如: float boy= new float4;,2.5 数组,3数组元素的使用 一维数组通过下标符访问自己的元素,如boy0,boy1等。需要注意的是下标从0开始,因此,数组若是7个元素,下标到6为止,如果你将

23、来使用下标超过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

24、(); System.out.println(“exp10 is “ + exp10.toString(); System.out.println(“exp0 is “ + exp0.toString();int Public int cPlusPlusCannotdoLikeThis(String arr);,2.5 数组,4数组的初始化 创建数组后,系统会给每个数组元素一个默认的值,如,float型是0.0。 我们在声明数组时同时也还可以给数组的元素一个初始值,如: float boy= 21.3f,23.89f,2.0f,23f,778.98f;,返回,二维数组的定义方式 type ar

25、rayName ; 例如: int intArray ; 也可以采用另一种定义方式: type arrayName; 与一维数组一样,这时对数组元素也没有分配内存空间,同样要使用运算符new来分配内存,然后才可以访问每个元素。,二维数组:定义,二维数组的初始化也分为静态和动态两种。 静态初始化:在定义数组的同时为数组分配空间。 int intArray =1,2,2,3,3,4; 不必指出数组每一维的大小,系统会根据初始化时给出的初始值的个数自动算出数组每一维的大小。,1、数组 二维数组:初始化,动态初始化:对高维数组来说,分配内存空间有下面两种方法: 1.直接为每一维分配空间,如: type

26、 arrayName =new typearraylength1arraylength2 例如: int a =new int23;,1、数组 二维数组:初始化,2.从最高维开始(而且必须从最高维开始),分别为每一维分配空间,如: String s =new String2 ; s0=new String2; s1=new String3; s00=new String(“Good”); s01=new String(“Luck”); s10=new String(“to”); s11=new String(“you”); s12=new String(“!”);,1、数组 二维数组:初始化,作业,1.编写一个控制台程序,完成 1)首先提示用户选择输入数据类型 c表示字符,s表示字符串,i表示整数,r表示浮点数 2)用户输入选择后,提示用户输入待排序数据,每次输入以回车结束,并提示用户再次输入 3)最后一次用户直接回车表示用户输入结束 4)对用户输入的数据从大到小排序,并友好的显示排序结果,利用二维数组实现矩阵乘法,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1