1、第2章 Java语言编程基础 主讲:贾克复习与思考 1 1、举例说明什么是对象,什么是类,类、举例说明什么是对象,什么是类,类和对象有什么不同?和对象有什么不同?2 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的关
2、键字,大写的NULL不是java语言的关键字,String是java语言的一个封装类的类名,也不是关键字,使用时要注意。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:类名采用完整的英文描述符,所有单词的第一个
3、字母均大写 组件/部件(Component):使用完整的英文描述来说明组件的用途,末端应接上组件类型 2.1 Java语言的基本组成 2.1.4 Java的编码规范 异常(Exception):通常采用字母 e 表示异常的实例 变量variable和方法method:采用完整的英文描述,第一个字母小写,后面任何单词的首字母大写 静态常量字段(static final):全部采用大写字母,单词之间用下划线分隔 2.2 基本数据类型 数据类型2.2 基本数据类型 2.2.1 基本数据类型 1布尔型boolean也称为逻辑型,只有两个取值:true表示逻辑真,false表示逻辑假,这种变量称为boo
4、lean型变量2字符型charchar型是用来表示字母的,它仅能表示一个单一的Unicode字母,其值用16位无符号整数表示(2个字节,因此可以存放汉字),范围是065535 2.2 基本数据类型2字符型char例:下面分别输出什么?lchar a=a;System.out.println(a);lint a=a;System.out.println(a);l char a=a+1;System.out.println(a);2字符型char在java中,对char进行运算的时候,就是将其当作其ASCII码对应的整数。2.2 基本数据类型 2.2.1 基本数据类型 3.整型在Java语言中,提
5、供了4种整型数据类型:byte、short、int、long,它们都是定义了一个整数,但它们能够表示数据的范围不同。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-12.2 基本数据类型2.2.1 基本数据类型 3.整型判断输出lbyte a=128;System.out.println(a);lint a=077;System.out.println(a);lint a=0X77;System.out.printl
6、n(a);2.2 基本数据类型2.2.1 基本数据类型 4浮点型在Java语言中有两种浮点数类型:float、double 区别在于表示范围不一样。float 4个字节 double 8个字节浮点数常量是double类型如果要求是float型实数,必须加上F标志判断输出lfloat a=3.4;lSystem.out.println(a);问题:float 也叫单精度,double双精度,他们表示的精度有什么差别吗?2.2 基本数据类型2.2.2 数据类型转换自动类型转换l判断对错:lint a=3.4;ldouble a=3.4;强制类型转换lint a=(int)3.4;2.2 基本数据类
7、型 2.2.2 类型转换 计算中类型转换:整型、实型、字符型数据可以进行混合运算。运算时,不同类型的数据先转换成同一类型后再参与运算,转换的原则是位数少的类型转换成位数多的类型,称为自动类型转换 例:下面会出现何种情况?lint a=3;lint b=a+3.4;l int a=15;l float b=3.0f;l System.out.println(a=+a+,b=+b+n);l 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.ou
8、t.println(a/b=+g+n);System.out.println(a=+a+,b=+b);h=(float)a/b;/若此处改为=(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 S
9、ystem.out.println(no);2.3 运算符与表达式2.3.1 算术运算符 2单目算术运算符 +,+,-,-int i=10,j,k,m,n;j=+i;k=-i;m=i+;m=+i;n=i-;n=-i;2.3 运算符与表达式 2.3.2 关系运算符=i+);l System.out.println(i=+i);l System.out.println(k=+k);lint i=10;l boolean k=(true|(9i+);l System.out.println(i=+i);l System.out.println(k=+k);2.3 运算符与表达式 2.3.4 位运算符
10、 按位取反&按位与|按位或 按位异或 op1右移op2位 op1无符号右移op2位注意:0和1如何进行位运算int i=1;int j=2;int flag=i|j;System.out.println(flag=+flag);int flag=ij;同的区别:最高位的填充-42;-1 最高为填充与原最高位相同 -42;1073721823 最高位一律填充02.3 运算符与表达式 2.3.5 赋值运算符=1.赋值运算符赋值运算符“=”把一个数据赋给一个变量,在赋值运算符两侧的类型不一致的情况下,进行类型转换2.扩展赋值运算符在赋值符“=”前加上其它运算符,即构成扩展赋值运算符 a+=3等价于a
11、=a+32.3 运算符与表达式 2.3.6 条件运算符 条件运算符?:为三目运算符,它的一般形式为:expression?statement1:statement2 例:int a=2,b=3int maxValue=ab?a:b2.3.7 表达式计算优先级大体上 由高到低排列为:一元运算符算数运算符关系和逻辑运算符赋值运算符a=b&c3 =?2.4 数组Java语言把内存分两种:语言把内存分两种:l栈内存栈内存:存放:存放基本类型的变量基本类型的变量和和对象的引用变量对象的引用变量l例:例:int a=6;l char b=k;l Cat cat1=new Cat();内存内存cat1内存放
12、的是堆内存放的是堆cat1的的首地址首地址l堆内存堆内存:存放由:存放由New运算符创建的运算符创建的对象和数组对象和数组l例:例:Cat cat1=new Cat();2.4 数组 2.4.1 一维数组 1.一维数组的定义 int a ;或 int a;2一维数组元素的引用定义了一个数组,并用运算符new为它分配了内存空间后,就以引用数组中的每一个元素了。a=new int3;数组元素的引用方式为:数组的第一个元素:a0,二:a1,三:a22.4.1 一维数组 int a;a=new int3;int a=new int5;2.4 数组 2.4.1 一维数组 3一维数组的初始化 对数组元素可
13、以先声明再进行赋值。也可以在定义数组的同时进行初始化。int a=new int3;a0=1;a1=2;a2=3;如:int arr=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;Syst
14、em.out.println(sum=+sum);float a=1,2,3,3,4.4f,5.2f;int i;float sum=0,aver=0;for(i=0;ia.length;i+)sum=sum+ai;aver=sum/6;System.out.println(aver=+aver);数组不能越界lint a=new int3;la3=4;如何知道数组的长度la.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
15、;i10;i+)System.out.println(f+i+=+fi);既然int,float,double.都可以有数组,那么,可不可以有对象数组呢?养鸡厂有4只鸡,求这些鸡体重最大和最小那只的名字鸡的名字体重小白4.5kg小黑5.5kg小花5kg小雪4kgclass 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;ch
16、icks0=new Chick();/此行特别注意 chicks0.name=小白;chicks0.weight=4.5f;chicks1=new Chick();chicks1.name=小黑;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.we
17、ightminweight)minweight=chicksi.weight;minnum=i;System.out.println(体重最大的鸡的名字为+chicksmaxnum.name+,体重最轻的鸡的名字为+chicksminnum.name);上机练习要求:在歌唱比赛中,共有10位评委进行打分,在计算歌手得分时,去掉一个最高分,去掉一个最低分,然后剩余的8位评委的分数进行平均,就是该选手的最终得分。如果已知每个评委的评分,求该选手的得分。该题实际上涉及到求数组的最大值、最小值,以及求数组中所有元素的和,也是数组方便统计的用途体现。实现思路:求出数组元素的最大值、最小值以及和,然后使用
18、和减去最大值和最小值,然后除以8获得得分。判断一个数组中是否存在相同的元素,如果存在相同的元素则输出“重复”,否则输出“不重复”。该题中如果需要判断数组中元素是否重复,则需要对数组中的元素进行两两比较,如果有任意一组元素相等,则该数组中的元素存在重复,如果任意一组元素都不想等,则表示数组中的元素不重复。实现思路:假设数组中的元素不重复,两两比较数组中的元素,使用数组中的第一个元素和后续所有元素比较,接着使用数组中的第二个元素和后续元素比较,依次类推实现两两比较,如果有一组元素相同,则数组中存储重复,结束循环。把比较的结果存储在一个标志变量里,最后判断标志变量的值即可。要求:判断数组元素是否对称
19、。例如1、1,2,0,2,1,1,2,3,3,2,1这样的都是对称数组。该题中用于判断数组中的元素关于中心对称,也就是说数组中的第一个元素和最后一个元素相同,数组中的第二个元素和倒数第二个元素相同,依次类推,如果比较到中间,所有的元素都相同,则数组对称。实现思路:把数组长度的一半作为循环的次数,假设变量i从0循环到数组的中心,则对应元素的下标就是数组长度-i-1,如果对应的元素有一组不相等则数组不对称,如果所有对应元素都相同,则对称。考察题要求:统计一个整数中出现最多的数字。如果数字个数一样,则以最大的数字为准,例如1输出1,121输出1,23231输出3。该题是一个综合的题目,在实际分析时可
20、以分解成三个问题:1、把整数中的每个数字拆分出来,2、统计拆分出的数字中0-9每个的个数,3、获得数字个数的最大值。实现思路:1、拆分数字:整数和10取余可以获得该整数的个位值,然后用该整数除以10可以去掉个位(整数除法),按照这种结构实现循环,并把拆分出的数字(也就是余数)存储到数组中。2、统计数字:声明一个长度是10的整型数组,使用这个数组中的第一个元素保存数字0出现的次数,第二个元素保存数字1出现的次数,依次类推。使用循环实现数字个数的统计。3、获得最大值对应的数字:获得个数数组中最大值的下标,就是需要的数字。2.4 数组 2.4.2 多维数组 1二维数组的定义int a;a=new i
21、nt 34;直接分配每维空间:int arr=new int23;也可从高维开始,分别为每一维分配空间:int arr=new int2;arr0=new int3;/特别注意,此处要用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;a
22、1=new int3;a10=3;a11=4;a12=5;for(int i=0;ia.length;i+)for(int j=0;jai.length;j+)System.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(
23、int i=0;ia.length;i+)for(int j=0;jai.length;j+)num+;System.out.println(num);实例2-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
24、);/*int b=new int2;b0=new int3;b1=new int3;b00=1;b01=2;b02=3;b10=4;b11=5;b12=6;*/上面注释部分等同于下面一行代码 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+)
25、cij=0;for(int k=0;k2;k+)cij+=aik*bkj;System.out.println(下面是矩阵c:);for(int i=0;ic.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
26、 dest,int destPos,int length)arraycopy(source,o,dest,o,x)表示复制源数组中从下标表示复制源数组中从下标0开始的开始的x个元素到目标数组,从目标数组下标个元素到目标数组,从目标数组下标0对应的对应的位置开始存放。位置开始存放。2数组排序数组排序Array.sort()格式:格式:Array.sort(数组变量名数组变量名)功能:将元素由小到大排序,结果仍然放在原数组中。功能:将元素由小到大排序,结果仍然放在原数组中。2.4 数组 实例:数组排序实例:数组排序public class ArrSortpublic static void mai
27、n(String args)int ia=4,18,6,10,25,3;Arrays.sorts(ia);for(int i=0;ib?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:defaul
28、tStatement;实例2:根据运算符输出结果 int a=1,b=2;float 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 /直接中止并退出格式
29、2:break blockLabel;/blockLabel:代码块4返回语句return格式1:return expression /返回一个值,相当于定义一个函数格式2:return /不返回任何值,用于void方法2.5 控制结构控制结构/SwitchOp.javaSwitchOp.java,对例,对例2 2程序的修改程序的修改public class public class SwitchOpSwitchOp public static void public static void main(Stringmain(String argsargs)float a=9;float a=9
30、;float b=3;float b=3;float result;float result;char op=+;char op=+;switch(opswitch(op)case+:case+:result=result=a+b;breaka+b;break;case-:case-:result=a-result=a-b;breakb;break;case case*:result=aresult=a*b;breakb;break;case/:case/:result=a/result=a/b;breakb;break;default:default:result=0;result=0;Sy
31、stem.out.println(resultSystem.out.println(result=+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语句格式:fo
32、r(initialization;terminationCondition;iteration)body;2.5 控制结构控制结构2.5.2 循环语句 4continue语句格式1:continue;格式2:用continue跳转到括号指明的外层循环中:continue outerLable;outer:for(int i=0;i10;i+)/外循环 for(int j=0;ji)continue outer;2.5 控制结构控制结构2.5.2 循环语句 实例3:输出120之内的单数public class ContinueOppublic static void main(String args)int n;for(n=1;n=1);System.out.println(10!=+result);longn-
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。