第2章Java语言编程基础(贾克).ppt

上传人:sccc 文档编号:5330328 上传时间:2023-06-26 格式:PPT 页数:73 大小:415.01KB
返回 下载 相关 举报
第2章Java语言编程基础(贾克).ppt_第1页
第1页 / 共73页
第2章Java语言编程基础(贾克).ppt_第2页
第2页 / 共73页
第2章Java语言编程基础(贾克).ppt_第3页
第3页 / 共73页
第2章Java语言编程基础(贾克).ppt_第4页
第4页 / 共73页
第2章Java语言编程基础(贾克).ppt_第5页
第5页 / 共73页
点击查看更多>>
资源描述

《第2章Java语言编程基础(贾克).ppt》由会员分享,可在线阅读,更多相关《第2章Java语言编程基础(贾克).ppt(73页珍藏版)》请在三一办公上搜索。

1、第2章 Java语言编程基础,主讲:贾克,复习与思考,1、举例说明什么是对象,什么是类,类和对象有什么不同?2、举例说明类的继承性。,2.1 Java语言的基本组成,2.1.1 分隔符 1空白符:换行、回车、空格、tab2注释语句:例题参见P25/一行的注释内容/*一行或多行的注释内容*/*文档注释内容*/3普通分隔符:;,:共4种,2.1 Java语言的基本组成,2.1.2 关键字 所有的关键字都是小写的。参见P25 const和goto是java的保留字,但已经不再使用then和sizeof都不是java的关键字,大写的NULL不是java语言的关键字,String是java语言的一个封装

2、类的类名,也不是关键字,使用时要注意。,2.1 Java语言的基本组成,2.1.3 Java语言标识符 首字符必须是字母(大小写均可)、下划线或美元符$标识符可以由数字(0-9)、所有从A-Z的大写字母、a-z的小写字母和下划线、美元符$和所有在十六进制0 xc0前的ASCII码等构成长度不限,2.1 Java语言的基本组成,2.1.4 Java的编码规范 包package:包名采用完整的英文描述符,全由小写字母组成 类class和接口interface:类名采用完整的英文描述符,所有单词的第一个字母均大写 组件/部件(Component):使用完整的英文描述来说明组件的用途,末端应接上组件类

3、型,2.1 Java语言的基本组成,2.1.4 Java的编码规范 异常(Exception):通常采用字母 e 表示异常的实例 变量variable和方法method:采用完整的英文描述,第一个字母小写,后面任何单词的首字母大写 静态常量字段(static final):全部采用大写字母,单词之间用下划线分隔,2.2 基本数据类型,数据类型,2.2 基本数据类型,2.2.1 基本数据类型 1布尔型boolean也称为逻辑型,只有两个取值:true表示逻辑真,false表示逻辑假,这种变量称为boolean型变量2字符型charchar型是用来表示字母的,它仅能表示一个单一的Unicode字母

4、,其值用16位无符号整数表示(2个字节,因此可以存放汉字),范围是065535,2.2 基本数据类型,2字符型char例:下面分别输出什么?char a=a;System.out.println(a);int a=a;System.out.println(a);char a=a+1;System.out.println(a);,2字符型char在java中,对char进行运算的时候,就是将其当作其ASCII码对应的整数。,2.2 基本数据类型,2.2.1 基本数据类型 3.整型在Java语言中,提供了4种整型数据类型:byte、short、int、long,它们都是定义了一个整数,但它们能够表

5、示数据的范围不同。byte 1个字节-128127-21*8-1 21*8-1-1 short 2个字节-22*8-1 22*8-1-1 int 4个字节-24*8-1 24*8-1-1 long 8个字节-28*8-1 28*8-1-1,2.2 基本数据类型,2.2.1 基本数据类型 3.整型判断输出byte a=128;System.out.println(a);int a=077;System.out.println(a);int a=0X77;System.out.println(a);,2.2 基本数据类型,2.2.1 基本数据类型 4浮点型在Java语言中有两种浮点数类型:floa

6、t、double 区别在于表示范围不一样。float 4个字节 double 8个字节浮点数常量是double类型如果要求是float型实数,必须加上F标志,判断输出float a=3.4;System.out.println(a);问题:float 也叫单精度,double双精度,他们表示的精度有什么差别吗?,2.2 基本数据类型,2.2.2 数据类型转换自动类型转换判断对错:int a=3.4;double a=3.4;强制类型转换int a=(int)3.4;,2.2 基本数据类型,2.2.2 类型转换 计算中类型转换:整型、实型、字符型数据可以进行混合运算。运算时,不同类型的数据先转换

7、成同一类型后再参与运算,转换的原则是位数少的类型转换成位数多的类型,称为自动类型转换,例:下面会出现何种情况?int a=3;int b=a+3.4;int a=15;float b=3.0f;System.out.println(a=+a+,b=+b+n);System.out.println(a/b=+a/b+n);,例:int a=7;int b=3;float g,h;System.out.println(a=+a+,b=+b);g=a/b;System.out.println(a/b=+g+n);System.out.println(a=+a+,b=+b);h=(float)a/b;

8、/若此处改为=(float)(a/b);System.out.println(a/b=+h);,2.3 运算符与表达式,2.3.1 算术运算符 1.双目算术运算符双目算术运算符包括+、-、*、/和%(取模)五种运算符。例:用java编写程序计算两个数是否能够整除,public class$2 public static void main(String args)int a=3;int b=6;if(b%a=0)System.out.println(yes);else System.out.println(no);,2.3 运算符与表达式,2.3.1 算术运算符 2单目算术运算符+,+,-,-

9、int i=10,j,k,m,n;j=+i;k=-i;m=i+;m=+i;n=i-;n=-i;,2.3 运算符与表达式,2.3.2 关系运算符=!=注意:=不是关系运算符,而是赋值运算符,2.3 运算符与表达式,2.3.3 逻辑运算符&、|、!、&、|、&、|为双目运算符,实现逻辑与、逻辑或。&、|非简洁运算对于布尔逻辑运算,先求出运算符左边的表达式的值,对或运算如果为true,则整个表达式的结果为true,不必对运算符右边的表达式再进行运算;同样,对与运算,如果左边表达式的值为false,则不必对右边的表达式求值,整个表达式的结果为false,这种逻辑运算又称为逻辑短路与和逻辑短路或。,2.

10、3.3 逻辑运算符 int i=10;boolean k=(true|(9i+);System.out.println(i=+i);System.out.println(k=+k);int i=10;boolean k=(true|(9i+);System.out.println(i=+i);System.out.println(k=+k);,2.3 运算符与表达式,2.3.4 位运算符 按位取反&按位与|按位或 按位异或 op1右移op2位 op1无符号右移op2位注意:0和1如何进行位运算,int i=1;int j=2;int flag=i|j;System.out.println(fl

11、ag=+flag);int flag=ij;,同的区别:最高位的填充-42;-1 最高为填充与原最高位相同-42;1073721823 最高位一律填充0,2.3 运算符与表达式,2.3.5 赋值运算符=1.赋值运算符赋值运算符“=”把一个数据赋给一个变量,在赋值运算符两侧的类型不一致的情况下,进行类型转换2.扩展赋值运算符在赋值符“=”前加上其它运算符,即构成扩展赋值运算符 a+=3等价于a=a+3,2.3 运算符与表达式,2.3.6 条件运算符 条件运算符?:为三目运算符,它的一般形式为:expression?statement1:statement2 例:int a=2,b=3int ma

12、xValue=ab?a:b,2.3.7 表达式计算优先级大体上 由高到低排列为:一元运算符算数运算符关系和逻辑运算符赋值运算符a=b&cd|e=f,复习提问,1、指出下面的标识符,哪些合法,哪些非法?char i90 integer_2 71string myFile-2 文件1 I love Java!2、&运算与&运算有什么区别?3、643=?,2.4 数组,Java语言把内存分两种:栈内存:存放基本类型的变量和对象的引用变量例:int a=6;char b=k;Cat cat1=new Cat();内存cat1内存放的是堆cat1的首地址堆内存:存放由New运算符创建的对象和数组例:Ca

13、t cat1=new Cat();,2.4 数组,2.4.1 一维数组 1.一维数组的定义 int a;或 int a;2一维数组元素的引用定义了一个数组,并用运算符new为它分配了内存空间后,就以引用数组中的每一个元素了。a=new int3;数组元素的引用方式为:数组的第一个元素:a0,二:a1,三:a2,2.4.1 一维数组 int a;a=new int3;int a=new int5;,2.4 数组,2.4.1 一维数组 3一维数组的初始化 对数组元素可以先声明再进行赋值。也可以在定义数组的同时进行初始化。int a=new int3;a0=1;a1=2;a2=3;如:int arr

14、=2,4,6,8,4;但int arr5=2,4,6,8,4;非法,例:方老太养了6只鸡,体重分别1kg,2kg,3kg,3kg,4kg,5kg,求这些鸡的总体重,体重分别1kg,2kg,3kg,3kg,4.4kg,5.2kg,求平均体重。数组的定义,初始化,赋值,引用,int a;a=new int6;a0=1;a1=2;a2=3;a3=4;a4=5;a5=6;int i;int sum=0;for(i=0;ia.length;i+)sum=sum+ai;System.out.println(sum=+sum);,float a=1,2,3,3,4.4f,5.2f;int i;float s

15、um=0,aver=0;for(i=0;ia.length;i+)sum=sum+ai;aver=sum/6;System.out.println(aver=+aver);,数组不能越界int a=new int3;a3=4;如何知道数组的长度a.length,例2-8:求Fabonacci数组的前10项。int f;f1=1;f2=1;,int f,i;f=new int10;f0=1;f1=1;for(i=2;i10;i+)fi=fi-1+fi-2;for(i=0;i10;i+)System.out.println(f+i+=+fi);,既然int,float,double.都可以有数组,

16、那么,可不可以有对象数组呢?养鸡厂有4只鸡,求这些鸡体重最大和最小那只的名字,class Chick String name;float weight;public class$2 public static void main(String args)float maxweight=0,minweight=4.5f;int maxnum=0,minnum=0;Chick chicks=new Chick4;chicks0=new Chick();/此行特别注意 chicks0.name=小白;chicks0.weight=4.5f;chicks1=new Chick();chicks1.na

17、me=小黑;chicks1.weight=5.5f;chicks2=new Chick();chicks2.name=小花;chicks2.weight=4;chicks3=new Chick();chicks3.name=小雪;chicks3.weight=5f;for(int i=0;imaxweight)maxweight=chicksi.weight;maxnum=i;else if(chicksi.weightminweight)minweight=chicksi.weight;minnum=i;System.out.println(体重最大的鸡的名字为+chicksmaxnum.n

18、ame+,体重最轻的鸡的名字为+chicksminnum.name);,上机练习要求:在歌唱比赛中,共有10位评委进行打分,在计算歌手得分时,去掉一个最高分,去掉一个最低分,然后剩余的8位评委的分数进行平均,就是该选手的最终得分。如果已知每个评委的评分,求该选手的得分。该题实际上涉及到求数组的最大值、最小值,以及求数组中所有元素的和,也是数组方便统计的用途体现。实现思路:求出数组元素的最大值、最小值以及和,然后使用和减去最大值和最小值,然后除以8获得得分。,判断一个数组中是否存在相同的元素,如果存在相同的元素则输出“重复”,否则输出“不重复”。该题中如果需要判断数组中元素是否重复,则需要对数组

19、中的元素进行两两比较,如果有任意一组元素相等,则该数组中的元素存在重复,如果任意一组元素都不想等,则表示数组中的元素不重复。实现思路:假设数组中的元素不重复,两两比较数组中的元素,使用数组中的第一个元素和后续所有元素比较,接着使用数组中的第二个元素和后续元素比较,依次类推实现两两比较,如果有一组元素相同,则数组中存储重复,结束循环。把比较的结果存储在一个标志变量里,最后判断标志变量的值即可。,要求:判断数组元素是否对称。例如1、1,2,0,2,1,1,2,3,3,2,1这样的都是对称数组。该题中用于判断数组中的元素关于中心对称,也就是说数组中的第一个元素和最后一个元素相同,数组中的第二个元素和

20、倒数第二个元素相同,依次类推,如果比较到中间,所有的元素都相同,则数组对称。实现思路:把数组长度的一半作为循环的次数,假设变量i从0循环到数组的中心,则对应元素的下标就是数组长度-i-1,如果对应的元素有一组不相等则数组不对称,如果所有对应元素都相同,则对称。,考察题,要求:统计一个整数中出现最多的数字。如果数字个数一样,则以最大的数字为准,例如1输出1,121输出1,23231输出3。该题是一个综合的题目,在实际分析时可以分解成三个问题:1、把整数中的每个数字拆分出来,2、统计拆分出的数字中0-9每个的个数,3、获得数字个数的最大值。实现思路:1、拆分数字:整数和10取余可以获得该整数的个位

21、值,然后用该整数除以10可以去掉个位(整数除法),按照这种结构实现循环,并把拆分出的数字(也就是余数)存储到数组中。2、统计数字:声明一个长度是10的整型数组,使用这个数组中的第一个元素保存数字0出现的次数,第二个元素保存数字1出现的次数,依次类推。使用循环实现数字个数的统计。3、获得最大值对应的数字:获得个数数组中最大值的下标,就是需要的数字。,2.4 数组,2.4.2 多维数组 1二维数组的定义int a;a=new int 34;直接分配每维空间:int arr=new int23;也可从高维开始,分别为每一维分配空间:int arr=new int2;arr0=new int3;/特别

22、注意,此处要用new创建arr1=new int3;,2.4 数组,2.4.2 多维数组Java的二维数组和C的二维数组的区别在哪里?在C语言中定义一个二维数组,必须是一个m*n二维矩阵块,Java语言的多维数组不一定是规则的矩阵形式int a=new int2;arr0=new int2;arr1=new int3;,/定义第二维长度不同的二维数组 int a=new int2;a0=new int2;a00=1;a01=2;a1=new int3;a10=3;a11=4;a12=5;for(int i=0;ia.length;i+)for(int j=0;jai.length;j+)Sys

23、tem.out.print(aij+,);System.out.print(n);,2.4 数组,2.4.2 多维数组 2二维数组的初始化直接对每个元素赋值如:int a=2,3,1,5,3,4;定义的同时初始化:int arr=3,4,7,1,-4,12;,2.4.2 多维数组如何求多维数组的总元素个数 一维数组a.length二维数组a.length表示数组a的行数,int a=2,3,4,5,6,7;int num=0;for(int i=0;ia.length;i+)for(int j=0;jai.length;j+)num+;System.out.println(num);,实例2-

24、10:矩阵的乘法运算,public class array public static void main(String args)int a;a=new int32;a00=1;a01=1;a10=1;a11=1;a20=1;a21=1;for(int i=0;ia.length;i+)for(int j=0;jai.length;j+)System.out.print(a+i+j+=+aij+,);System.out.print(n);/*int b=new int2;b0=new int3;b1=new int3;b00=1;b01=2;b02=3;b10=4;b11=5;b12=6;

25、*/上面注释部分等同于下面一行代码 int b=1,2,3,4,5,6;System.out.println(下面是矩阵b:);for(int i=0;ib.length;i+)for(int j=0;jbi.length;j+)System.out.print(b+i+j+=+bij+,);System.out.print(n);int c;c=new int33;for(int i=0;i3;i+)for(int j=0;j3;j+)cij=0;for(int k=0;k2;k+)cij+=aik*bkj;System.out.println(下面是矩阵c:);for(int i=0;ic

26、.length;i+)for(int j=0;jci.length;j+)System.out.print(c+i+j+=+cij+,);System.out.print(n);,2.4 数组,2.4.3 与数组有关的系统函数(方法)1.数组复制System.arraycopy()格式:public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)arraycopy(source,o,dest,o,x)表示复制源数组中从下标0开始的x个元素到目标数组,从目标数组下标0对应的位置开始存放

27、。2数组排序Array.sort()格式:Array.sort(数组变量名)功能:将元素由小到大排序,结果仍然放在原数组中。,2.4 数组,实例:数组排序public class ArrSortpublic static void main(String args)int ia=4,18,6,10,25,3;Arrays.sorts(ia);for(int i=0;iia.length;i+)System.out.print(iai);,复习提问,1、数组下标变量是从哪个数字开始编号的?假如有一个数组a,其长度怎么表示?2、指出下面数组定义中有没有错误:int 46 intStudentNo;

28、int a=new int3;int a=new int2;int a5=1,2,3,4,5;3、定义一个整形数组myArray大小为4,并赋值(任意数),写出代码段,2.5 控制结构,2.5.1 分支语句 1.条件语句 if-else格式:if(boolean-expression)statement1;elsestatement2;实例1:判断今年是否为闰年,2.5 控制结构,闰年规则:年份用4位数表示且符合2个条件之一1、能被4整除,但不能被100整除;2、能被400整除即可以表示为:,(year%4=0&year%100!=0)|(year%400=0),找出三个整数中的最大值和最小值

29、,int a=0,b=3,c=9,max,min;max=ab?a:b;min=ab?b:a;max=cmax?c:max;min=cmin?c:min;System.out.println(a=+a+,b=+b);,2.5 控制结构,2.5.1 分支语句 2多分支选择语句switchswitch(expression)case value1:statement1;break;case value2:statement2;break;case valueN:statemendN;break;default:defaultStatement;实例2:根据运算符输出结果,int a=1,b=2;f

30、loat r=0;char c=+;switch(c)case+:r=a+b;break;case-:r=a-b;break;case*:r=a*b;break;case/:r=(float)(a/b);break;default:r=0;System.out.println(result is:+r);,2.5 控制结构,2.5.1 分支语句 3break语句:在switch语中,break语句用来终止switch语句的执行,使程序从switch语句后的第一个语句开始执行。格式1:break/直接中止并退出格式2:break blockLabel;/blockLabel:代码块4返回语句re

31、turn格式1:return expression/返回一个值,相当于定义一个函数格式2:return/不返回任何值,用于void方法,2.5 控制结构,/SwitchOp.java,对例2程序的修改public class SwitchOp public static void main(String args)float a=9;float b=3;float result;char op=+;switch(op)case+:result=a+b;break;case-:result=a-b;break;case*:result=a*b;break;case/:result=a/b;bre

32、ak;default:result=0;System.out.println(result=+result);,2.5 控制结构,2.5.2 循环语句 1while语句格式:initializationwhile(terminationCondition)body;iteration;/反复执行或者返回结果,2.5 控制结构,2.5.2 循环语句 2do-while语句格式:initializationdo body;iteration;while(terminationCondition);,2.5 控制结构,2.5.2 循环语句 3for语句格式:for(initialization;te

33、rminationCondition;iteration)body;,2.5 控制结构,2.5.2 循环语句 4continue语句格式1:continue;格式2:用continue跳转到括号指明的外层循环中:continue outerLable;outer:for(int i=0;ii)continue outer;,2.5 控制结构,2.5.2 循环语句 实例3:输出120之内的单数public class ContinueOppublic static void main(String args)int n;for(n=1;n=10;n+)if(n%2=0)System.out.println(n=+n);,continue;,2.5 控制结构,2.5.2 循环语句 实例4:计算10的阶乘,DoWhileOp.javapublic class DoWhileOppublic static void main(String args)int n=10;result=1;doresult*=;while(n=1);System.out.println(10!=+result);,long,n-,

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

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号