java第二章延边大学计算机系.ppt_第1页
java第二章延边大学计算机系.ppt_第2页
java第二章延边大学计算机系.ppt_第3页
java第二章延边大学计算机系.ppt_第4页
java第二章延边大学计算机系.ppt_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二章Java语言基础,学习内容,标识符关键字Java基本数据类型运算符表达式和语句流程控制方法变量的作用域数组,标识符,Java对各种变量,方法和类等要素命名时使用的字符序列称为标识符。凡是自己可以起名字的地方都叫标识符,都遵守标识符的规则。Java标识符命名规则:标识符由字母、下划线“_”、美元符“$”或数字组成。标识符应以字母、下划线、美元符开头。Java标识符大小写敏感,长度无限制。,标识符,约定俗成:Java标识符选取应注意“见名知意”且不能与Java关键字重名。,关键字,Java中一些赋以特定的含义,用于专门用途的字符串称为关键字(keyword)。所有Java关键字都是小写英文。goto和const虽然从未使用,但是也作为Java关键字保留。,关键字,关键字,标识符和关键字举例:HelloWorld.java,Java常量,Java的常量值用字符序列表示,区分为不同的数据类型。整型常量123实型常量3.14字符常量a逻辑常量true、false字符串常量“helloworld”,Java常量,“常量”这个名词还可用于表示值不可变的变量(final关键字)。com.kim.ch2.sec1.const_value.TestConstValue,Java变量,Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型,作用域。Java程序中每一个变量都属于特定的数据类型,在使用前必须对其声明,格式为:typevarName=value,varName=valueinti=100;floatf=12.3f;doubled1,d2,d3=0.123;Strings=hello;,Java变量,从本质上讲,变量就是内存中的一小块区域,使用变量名来访问这块区域,因此,每一个变量使用前必须要先申请空间(声明),再赋值(初始化),才能使用。,内存,100,i,12.3f,f,0.123,d3,xxx,s,变量值,变量名,题外话:程序执行过程,硬盘,程序,内存,操作系统,代码,1.load到内存,heap,stack,datasegment,codesegment,new出来的东西,局部变量,静态变量(static)字符串常量,存放代码,2.找到main方法开始执行,3.运行时内存管理,Java变量的分类,按被声明的位置划分:局部变量:方法或语句块内部定义的变量成员变量:方法的外部,类的内部定义的变量。注意:类外面(与类对应的大括号外面)不能有变量的声明。按所属的数据类型划分:基本数据类型变量引用数据类型变量,Java局部变量与成员变量,方法体内部声明的变量(包括参数)称为局部变量。在方法体外,类的内部声明的变量。publicvoidmethod()inti;intj=i+5;doubled=3.14;Dogdog;dog=newDog();,stack,heap,dog:xxx,Dog,age,name,Java局部变量与成员变量,变量的作用域在大括号里面声明的变量,只在大括号里面起作用,出了大括号,没人认识它。classAinti=1;voidm1()intj=1;再看下例:com.kim.ch2.sec1.variable.TestMemVar_LocalVar,按照数据类型划分,Java基本数据类型,Java中定义了4类8种基本数据类型。逻辑型boolean文本型char整数型byte,short,int,long浮点型float,double,逻辑型Boolean,boolean类型占用一个字节,适用于逻辑运算,一般用于程序流程控制。boolean类型数据只允许取值true或false,不能使0或非0的整数替代true和false,这点和C语言不同。实例:booleanflag=true;if(flag),字符型char,char型数据用来表示通常意义上“字符”。字符常量是用单引号括起来的单个字符。charc=a;charc=中;Java字符采用Unicode编码,每个字符占两个字节,因而可用十六进制编码形式表示。charc=u0061;注:Unicode是全球语言统一编码,字符型char,Java语言中还允许使用转义字符,将其后的字符转变为其他含义。charc=n;引用方法对应Unicode码意义bu0008退格tu0009横向跳格、水平制表符tabnu000a换行ru000d回车”u0022双引号u0027单引号u005c反斜线,整数类型,Java各个整数类型有固定的表示范围和字段长度,不受具体操作系统的影响,以保证Java程序的可移植性。Java语言整型常量的三种表示形式:十进制数:12,-4,0八进制:要以0开头,0111十六进制:要以0 x开头,0 x11,整数类型,Java语言的整型常量默认为int型,声明long型常量可以在常量后加上l或L。inti=300;/正确longl=888888888888L;/必须加L,否则出错,浮点类型,与整数类型类似,Java浮点类型有固定的表示范围和字段长度,不受平台影响。Java浮点类型常量有两种表示形式十进制数形式,例如:3.14123.0.123科学记数法,例:3.14e21.23E2100E-2Java浮点型常量默认为double型,如要声明一个常量为float型,则必须在数字后面加f或F,如:doubled=12345.6;/正确floatf=12.3f;/必须加f否则出错,浮点类型,下面列出Java各种浮点类型,浮点数有一定的误差,例如有可能在计算机内部用0.99999模拟1.0,所以一般不会在程序中直接比较浮点数:if(f=1.0),变量举例,实例一:com.kim.ch2.sec1.variable.TestVarType,题外话:Java命名的规则,i和j是整数的下标。常量全部大写(MAX_NAME_LENGTH)类名和接口名中每一个单词的首字母用大写,例如:ClassOrInterfaceName。变量名和方法名中的第一个单词的首字母小写,剩下的单词首字母大写,例如:varOrMethodName。访问器子程序用get和set前缀,例如:getName(),setName(),getAge(),setAge(),基本数据类型转换,boolean类型不可以转化为其他数据类型。整型,字符型,浮点型的数据在混合运算中相互转换,转换时遵守以下原则:容量小的类型自动转换为容量大的数据类型。数据类型按照容量排序为:byte,short,char-int-long-float-doublebyte,short,char之间不会相互转换,直接转化为int类型,再计算。实例:com.kim.ch2.sec1.variable.TestVarConvert1,基本数据类型转换,容量大的数据类型=容量小的数据类型,要加上强制转换府,但可能造成精度下降或溢出,使用时要格外注意。多种类型的数据混合时,系统首先自动地将所有数据转换为容量最大的一种数据类型,再进行运算。实数常量(例如:1.3)默认为double整数常量(例如:123)默认为int,基本数据类型转换,inti=1,j;floatf1=0.1,f2=123;longl1=12345678,l2=888888888888;doubled1=2e20,d2=123;byteb1=1,b2=2,b3=3;j=j+10;i=i/10;i=i*0.1;charc1=a,c2=123;byteb=b1-b2;charc=c1+c2-1;floatf3=f1+f2;floatf4=f1+f2*0.1;doubled=d1*i+j;floatf=(float)(d1*5+d2);,课堂练习:指出下面程序的错误、并改正。com.kim.ch2.sec1.variable.TestConvert2,题外话:程序的格式,为什么需要格式?程序一:publicintsearchData(intdata,intsearchData)inti=0;for(i=0;idata.length;i+)if(datai=searchData)break;if(i=data.length)return-1;elsereturni;,题外话:程序的格式,程序二:publicintsearchData(intdata,intsearchData)inti=0;for(i=0;idata.length;i+)if(datai=searchData)break;if(i=data.length)return-1;elsereturni;,题外话:程序的格式,程序三:publicintsearchData(intdata,intsearchData)inti=0;for(i=0;i,赋值运算符:=扩展赋值运算符:+=,-=,*=,/=字符串连接运算符:+,+与-,实例:com.kim.ch2.sec1.operator.PlusPlus_MinusMinus,逻辑运算符,逻辑运算符:!逻辑非floatf=(float)0.1;可以将整型常量直接赋值给byte,short,char等类型变量,而不进行强制类型转换,只要不超出其表示范围。byteb=12;charc=65535;byteb=300;shorts=32768;,赋值运算符与扩展赋值运算符,字符串连接符,+两种用法:算术加、字符串连接inti=100+200;Strings=hello+java;+运算符两侧只要有一个是字符串(String)类型,系统将另一个操作数转化为字符串再做字符串连接运算。123+456;123+456123+456intk=1;System.out.println(k=+k);,表达式,表达式是符合一定语法规则的运算符和操作数的序列a1.0+a(a+b)*c5;i30Stringtype=score60?不及格:及格,流程控制,顺序结构分支结构ififelseifelseififelseifelseifelseswitch循环结构forwhiledowhile,if语句,ififelseifelseifelse只有一句语句块需要执行时,可以省略举例:com.kim.ch2.sec2.if_for_while.TestIF,Switch语句,switch()casexx:caseyy:default:,注意case穿透,推荐使用break语句多个case可以合并到一起default可以省略,但不推荐省略java中switch语句只能探测int类型值,com.kim.ch2.sec2.if_for_while.TestSwitch,for循环语句,for语句为如下形式:for(表达式1,表达式2;表达式3)语句;执行过程,for循环语句,实例:计算result=1!+2!+10!longresult=0;longf=1;for(inti=1;i=10;i+)f=f*i;result+=f;System.out.println(result:+result);,for循环语句,课堂训练:编写程序,用for循环计算1+3+5+99的值,并输出计算结果。编写程序,用for循环计算1/1!+1/2!+1/3!+1/10!的值,并输出计算结果。,while;执行过程,while;while(逻辑表达式);执行过程,whilefor(inti=1;i=10;i+)if(i=stop)break;System.out.println(i=+i);思考:if(i=stop);会怎么样?,breakfor(inti=1;i=5;i+)if(i=skip)continue;System.out.println(i=+i);,循环语句举例,输出1100以内的前5个被3整除的数。com.kim.ch2.sec2.if_for_while.While_Sample1输出101200内的质数。com.kim.ch2.sec2.if_for_while.While_Sample2,方法,Java的方法类似于其它语言的函数,是一段用来完成特定功能的代码片段,声明格式:修饰符1修饰符2返回值类型方法名(形式参数列表)Java语句;形式参数:描述方法能接收的数据的个数和类型。实参:调用方法时实际传给方法的数据。返回值:方法在执行完毕后返还给调用它的环境的数据。返回值类型:实现约定的返回值的数据类型,如无需返回值,必须给出返回值类型为void。实例:com.kim.ch2.sec2.method.TestMethod,方法,方法的调用形式对象名.方法名(实参列表)实参的数目、数据类型和次序必须和形参匹配。return语句终止方法的运行,并指定要返回的数据。Java中方法参数是按值传递。基本数据类型传递的是数据本身。引用数据类型传递的是对象的引用,而不是对象本身。,数组,数组可以看成是多个相同类型数据组合,对数据的统一管理。数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。数组中的元素可以是任何数据类型,包括基本数据类型和引用类型。,数组,一维数组的声明方式:typevar;或typevar;例如:inta1;inta2;doubleb;Personp1;Strings1;Java语言中声明数组时不能指定其长度(数组中元素的个数)。例如:inta5;/非法,数组,Java中使用关键字new创建数组对象,格式为:数组名=new数组元素的类型数组元素的个数publicclassTestArraypublicstaticvoidmain(Stringargs)ints;s=newint5;for(inti=0;i5;i+)si=i;,数组,数组是引用类型,可以赋值。publicclassTestArraypublicstaticvoidmain(Stringargs)ints;s=newint5;for(inti=0;i5;i+)si=i;intt=s;for(inti=0;i5;i+)System.out.println(ti);,栈,堆,s:xxx,0,1,2,3,4,t:xxx,数组,元素为引用类型的数组publicclassTestpublicstaticvoidmain(Stringargs)Aa;a=newA3;for(inti=0;i3;i+)ai=newA();classA,a:null,栈,堆,xxx,yyy,zzz,数组的初始化,动态初始化先定义数组,再分配空间,最后初始化数组。inta;a=newint3;a0=0;a1=1;a2=2;或inta=newint3;a0=0;a1=1;a2=2;Aa;a=newAnewA(),newA(),newA();,数组的初始化,静态初始化在定义的同时就为数组元素分配空间,并赋值。inta=3,9,8;Aa=newA(),newA(),newA();classA,数组初始化的默认值,数组是引用类型,它的元素相当于类的成员变量,因此数组分配空间后,每个元素也被按照成员变量的规则被隐式初始化。实例:com.kim.ch2.sec3.array.TestArrayInitDefaultVar,数组元素的引用,数组定义并用new分配空间后,才可以引用数组中的每个元素。引用格式为:arrayNameindexindex为数组的下标,可以是整型常量,或整型表达式。如:a3,bi,ci+j;数组的下标从0开始,长度为n的数组的合法下标范围为0n-1。每个数组都有一个属性length指明数组的长度。,数组的复制,只复制引用inta=newint3;for(inti=0;i3;i+)ai=i;intb=a;for(inti=0;i3;i+)System.out.println(bi);System.out.println(a);System.ou

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论