《Java程序设计》教学课件_第1页
《Java程序设计》教学课件_第2页
《Java程序设计》教学课件_第3页
《Java程序设计》教学课件_第4页
《Java程序设计》教学课件_第5页
已阅读5页,还剩519页未读 继续免费阅读

下载本文档

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

文档简介

项目1:Java基础语法与程序结构代码注释注释是在程序代码中添加的辅助性文字,往往可以对代码的含义和作用进行解释说明。注释可以提高程序的可读性,便于读者理解代码的含义与功能。代码注释单行注释单行注释以符号“//”开头,用于对当前行或者之后的程序代码的含义和功能进行解释说明。单行注释可以单独占一行,也可以与某一行代码处于同一行。01//定义一个公共类HelloWorldpublicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("HelloWorld");}}单行注释单独占一行单行注释与代码同一行//打印输出HelloWorld多行注释多行注释是以符号“/*”开头,以符号“*/”结束,将多行内容包裹起来的注释方式。02/*

定义一个公共类HelloWorld

在HelloWorld类中定义了一个主方法main()

主方法main()中的代码作用是打印输出HelloWorld*/publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("HelloWorld");}多行注释文档注释文档注释以符号“/**”开头,以符号“*/”结束,与多行注释基本相同,同样可以将多行内容包裹起来,但区别在于文档注释内容可以被Java文档生成工具javadoc.exe提取出来生成帮助文档,而多行注释则不可以。03/***ThisclassprintsHelloWorld.*@authorzhangsan*@version1.0*/publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("HelloWorld");}}文档注释“文档注释”的实际应用(1)将包含有文档注释的HelloWorld.java文件保存至磁盘某一目录下,例如,D:\java。04“文档注释”的实际应用(2)打开命令提示符窗口,输入“D:”,进入D盘,之后输入“cdjava”,进入D盘下的java文件夹,最后输入“javadoc–author–versionHelloWorld.java”,点击回车。04“文档注释”的实际应用(3)在D:\java目录下将自动生成一些如左图所示的HTML文件(帮助文档),文档注释信息将出现在如右图所示以HelloWorld类命名的HTML文件中。04“文档注释”的实际应用04注意事项:在使用javadoc命令时,需指定–author选项,才可以将文档注释中的@author相关内容(作者信息)提取到HTML文件中,同理,指定–version选项,才可以将@version相关内容(版本信息)提取到HTML文件中。更多有关javadoc命令的选项,可以在命令提示符窗口中,输入“javadoc-help”,点击回车,进行查看。常量变量对应的值是允许变化的,而常量是程序中的固定值,是不能被改变的数据。Java语言中的常量主要分为字面常量(直接量)和符号常量。常量字面常量字面常量又称为直接量,是指在程序中通过源代码直接给出的值。例如:intstuAge=20;0120publicstaticvoidmain(String[]args){

StringstuName="张三";

intstuAge=20;

System.out.println("姓名:"+stuName);System.out.println("年龄:"+stuAge);

}定义一个字符串变量,并赋值为“张三”,“张三”为字面常量。定义一个整型变量,并赋值为20,20为字面常量。符号常量符号常量是指在程序运行过程中其值不可以改变的标识符,例如,Math类中PI为符号常量,表示数学中圆周率π的值。定义符号常量格式:final类型名常量名=值;02特别说明:定义符号常量格式:final类型名常量名=值;符号常量定义格式与变量定义格式类似,只需要在类型名前添加关键字“final”,其中,符号常量名通常使用大写字母,且只能被赋值一次。示例:finalint=300;HEIGHT变量作用域变量作用域前面已对如何定义一个变量进行了介绍,但开发人员也应清楚,定义变量后,变量也需要在它的有效作用范围内才可以被使用,这个有效作用范围称为变量的作用域。

{int=100;System.out.println(m);

}m1.packagechapter02;2.publicclassActionScope{3.publicstaticvoidmain(String[]args)4.inta=100;5.6.intb=200;7.System.out.println("a="+a);8.System.out.println("b="+b);9.10.System.out.println("a="+a);11.System.out.println("b="+b);12.13.}第4行定义了变量a第6行定义了变量b{}{}数据类型整型1、3、15…浮点型3.14、2.645…字符型‘a’、‘b’……数据类型基本数据类型引用数据类型数值型字符型(char)布尔型(boolean)整型(byte、short、int、long)浮点型(float、double)类(class)数组枚举(enum)基本数据类型通过基本数据类型定义的变量对应的内存单元中存储的是数据本身。例如,intx=10;inty=20;0115intxinty内存单元1020引用数据类型通过引用数据类型定义的变量对应的内存单元中存储的是对象的引用,不是对象本身。例如,int[]a=newint[3];02引用int[]aa栈内存newint[3]a[1]堆内存000a[0]a[2]0x1234首地址0x1234

整型整型即整数类型,整型变量的内存单元用来存储整数数值。整型整型变量所分配的内存空间大小及取值范围数据类型分配空间取值范围字节型(byte)短整型(short)16位(2字节)-215~215-1整型(int)32位(4字节)-231~231-1长整型(long)64位(8字节)-263~263-18位(1字节)-27~27-1注意事项:(1)程序中的字面常量(直接量)也要满足表中所给出的取值范围。整数的字面常量默认类型是int类型,如果直接写出的整数超出了-231~231-1(即-2147483648~2147483647)范围,就会出现编译错误。例如:inta=2147483647;//字面常量2147483647未超出范围,不报错intb=2147483648;//字面常量2147483648已超出范围,将报错注意事项:(2)在表示一个超出int范围的整数字面常量时,可以使用long类型,但要在字面常量后面加上大写字母L(或小写字母l)。例如://字面常量2147483648默认是int类型,已超出范围,将报错longa=2147483648;//字面常量2147483648为long类型,未超出范围,不报错longb=2147483648L;注意事项:(3)整数字面常量除了常见的十进制表示形式外,还可以用二进制(以0b或者0B为前缀)、八进制(以数字0为前缀)、十六进制(以0x或者0X为前缀)形式表示。publicstaticvoidmain(String[]args){inta=100;//十进制表示字面常量intb=0b1100100;//二进制表示字面常量intc=0144;//八进制表示字面常量intd=0x64;//十六进制表示字面常量System.out.println("a="+a);System.out.println("b="+b);System.out.println("c="+c);System.out.println("d="+d);}定义4个变量,分别用十进制、二进制、八进制、十六进制4种形式的字面常量100进行赋值。浮点型浮点型变量的内存单元用来存储小数数值。浮点型浮点型变量所分配的内存空间大小及取值范围数据类型分配空间取值范围单精度(float)32位(4字节)1.4E-45~3.4E+38,-1.4E-45~-3.4E+38双精度(double)64位(8字节)4.9E-324~1.7E+308,-4.9E-324~-1.7E+308在表中可以看出,单精度的变量需要分配4个字节的内存空间,双精度的变量需要分配8个字节的内存空间。表中取值范围中的E(或小写字母e)表示以10为底的幂,“+”或者“-”表示幂的正指数或者负指数,例如,1.4E-45表示数学中的1.4×10-45。1.4E-45注意事项:浮点数的字面常量默认类型是double类型,如果需要让直接写出的浮点数表示为float类型,需要在浮点数后面加上大写字母F(或小写字母f)。例如:floata=3.14;//存在数据损失的风险,程序会报错floatb=3.14f;//字面常量3.14为float类型,在其有效取值范围内,不报错字符型使用char关键字可以定义一个字符型变量,且系统将分配一个2字节的内存空间,用于存储一个字符所对应的Unicode编码,即Java字符型变量值实质上是一个16位无符号整数(取值范围为0~65535)。存储字符‘b’的Unicode编码98charch1charch2存储字符‘a’的Unicode编码97内存单元存储字符‘c’的Unicode编码992字节内存空间2字节内存空间字符型变量定义格式程序编写过程中,可以用一对英文半角状态的单引号('')将字符本身包裹起来后或者将字符对应的Unicode编码赋值给字符型变量。例如:01charch1='a';//将字符'a'赋值给字符型变量ch1charch2=97;//将字符'a'对应的Unicode编码97赋值给字符型变量ch2publicstaticvoidmain(String[]args){

charch1='a';charch2=97;

System.out.println("ch1的输出结果:"+ch1);System.out.println("ch2的输出结果:"+ch2);}定义2个变量,分别将字符‘a’和字符‘a’对应的Unicode编码97赋值给两个变量。转义字符在Java语言中,有一些具有特殊含义的控制字符,如回车符、换行符、退格符、横向制表符等,这些符号难以用普通字符的形式表示,而是通常用一个转义符号“\”开头,后面紧跟一个固定字符的形式来表示,称为转义字符。02转义字符名称作用\r回车符将光标移至当前行的起始位置\n换行符将光标移至下一行的起始位置\t横向制表符在当前光标位置插入水平制表符\b退格符表示退格(Backspace)操作,删除光标前的一个字符布尔型布尔型变量变量值booleanflagtrue:表示条件成立(即真值)false:表示条件不成立(即假值)初识布尔型在Java语言中,布尔型又称为逻辑型,使用关键字boolean可以定义一个布尔型变量,且变量值只能是true和false。01布尔型变量的使用布尔型通常用于关系运算、逻辑运算和程序流程控制。以关系运算为例,对布尔型的使用进行说明。02booleanflag1=false;//直接为布尔型变量flag1赋false//关系运算表达式10<20是一个成立的表达式,返回true,然后赋值给变量flag2booleanflag2=10<20;自动类型转换条件Java中的变量在定义时已明确所属类型,但在解决实际问题时,可能会出现不同类型数据之间的运算,这就需要进行数据类型转换。语文成绩90.5(浮点型)数学成绩95(整型)两种数据类型要彼此兼容。目标类型取值范围大于源类型取值范围。自动类型转换又称为隐式类型转换,是指两种不同数据类型在转换过程中不需要显式定义,由编译器自动完成转换。若要顺利完成自动类型转换,需同时满足两个条件:1.packagechapter02;2.publicclassCompatible{3.publicstaticvoidmain(String[]args){4.bytea=-10;5.charb=a;6.System.out.println(b);7.}8.}第4行定义了一个字节型变量a,并赋初始值是-10。第5行定义了一个字符型变量b,并尝试将字节型变量a中的数据-10赋值给字符型变量b。“两种数据类型要彼此兼容”案例011.packagechapter02;2.publicclassTargetAndSource{3.publicstaticvoidmain(String[]args){4.inta=10;5.longb=a;6.System.out.println("转换成功,此时b是:"+b);7.}8.}第4行定义了一个整型变量a(源类型),并赋初始值是10。第5行定义了一个长整型变量b(目标类型),尝试将整型变量a中的数据10赋值给长整型变量b。“目标类型取值范围大于源类型取值范围”案例02总结:1.将需要低容量内存空间(取值范围较小)的数据类型转换为需要高容量内存空间(取值范围较大)的数据类型的过程,形象地称为“放大转换”或“拓宽转换”。2.“char→int→long→float→double”或

“byte→short→int→long→float→double”,从左至右的类型之间的转换都属于“放大转换”,也都是允许完成自动转换的。int类型字面常量自动转换为byte、short、char类型正常情况下,int类型变量中的数据不能自动转换为byte、short、char类型,但是int类型字面常量可以自动转换为byte、short、char类型。inta=10;byteb=a;shortc=a;chard=a;byteb=10;shortc=10;chard=10;publicstaticvoidmain(String[]args){

bytea=10;//默认为int的字面常量10赋值给字节型变量ashortb=20;//默认为int的字面常量20赋值给短整型变量bcharc=65;//默认为int的字面常量65赋值给字符型变量cSystem.out.println("a:"+a);System.out.println("b:"+b);System.out.println("c:"+c);}分别将字面常量10、20、65赋值给字节型变量a、短整型变量b、字符型变量c。结论:int类型字面常量可以直接赋值给byte、short、char三种类型变量,只要不超出这三种变量对应内存空间中数据的有效取值范围即可。数值运算时的自动类型转换数值运算时的自动类型转换之前案例中的自动转换均是有关赋值方面,那么不同数值类型的数据在运算时,又是如何完成自动转换的呢?如果参与运算的操作数当中,有一个操作数为double型,则整个表达式可提升为double型01publicstaticvoidmain(String[]args){doublea=10.5;//默认为double的字面常量10.5赋值给变量aintb=20;//默认为int的字面常量20赋值给变量bdoublec=a+b;System.out.println("a:"+a);System.out.println("b:"+b);System.out.println("c:"+c);}定义1个双精度变量a和1个整型变量b,并分别进行初始化。因为参与运算的操作数当中,变量a是double型,所以整型变量b也将自动提升为double型,最终变量c存储了double型数据。byte、short、char型数据参与运算时,先将其全部自动提升为int型再做运算02publicstaticvoidmain(String[]args){bytea=10;shortb=20;charc=65;intd=a+b+c;System.out.println("a:"+a);System.out.println("b:"+b);System.out.println("c:"+c);System.out.println("d:"+d);}定义字节型变量a、短整型变量b、字符型变量c,并分别进行初始化。自动将字节型a、短整型b、字符型c中的数据转换为int型后再运算。强制类型转换之前已对自动类型转换进行了详细地介绍,但是自动类型转换并不能满足Java编程的所有场合,例如,在将需要高容量的内存空间的变量(如double型)转换为低容量内存空间的变量(如int型)时,则不能进行自动类型转换,此时需要强制类型转换。强制类型转换强制类型转换格式强制类型转换也称为显式类型转换,其转换格式如下:类型名变量名=(目标类型名)变量名或变量值;publicstaticvoidmain(String[]args){doublea=20.5;intb=(int)a;

intc=(int)10.5;

intd=b+c;System.out.println("a:"+a);System.out.println("b:"+b);System.out.println("c:"+c);System.out.println("d:"+d);}定义双精度变量a,并赋值为20.5。将双精度变量a中的数据强制转换为整型数据,并赋值给整型变量b。将双精度字面常量10.5强制转换为整型数据,并赋值给整型变量c。定义整型变量d,并存储b+c的运算结果。总结:强制类型转换往往可以将需要高容量内存空间的变量转换为低容量内存空间的变量,数据精度有所损失。例如,案例中的20.5变成了20,10.5变成了10,注意这里是直接舍弃小数部分,而不是四舍五入。因此,我们形象地称这种转换为“缩小转换”或“窄化转换”。运算符运算符是一种特殊的符号,主要用于实现数据的运算、赋值和比较等。运算符可以根据功能不同、操作数数量不同进行分类。运算符赋值运算符赋值运算符运算符功能示例结果=赋值a=5;b=3a=5;b=3+=加等于-=减等于a=5;b=3;a-=ba=2;b=3*=乘等于a=5;b=3;a*=ba=15;b=3/=除等于a=5;b=3;a/=ba=1;b=3%=模等于a=5;b=3;a%=ba=2;b=3表中给出了Java中的赋值运算符及其用法。a=5;b=3;a+=ba=8;b=3运算符“=(赋值)”Java语言中,可以使用一行代码同时定义多个变量,同样也可以使用一行代码为多个变量同时赋值。例如:01inti=5;//定义一个变量的同时进行赋值inta,b,c;//同时定义多个变量a=b=c=10;//为多个变量同时赋值inta=b=c=10;//编译错误,Java不支持这种写法复合赋值运算符复合赋值运算符都是由算术运算符和“=”两个符号构成,且中间不能有空格,否则编程期间会出现编译错误。复合赋值运算符的作用是先完成算术运算符的运算功能,再将运算结果赋值给指定的变量。复合赋值运算符“+=”的应用示例如下:02inta=10,b=20;//定义两个整型变量并赋值a+=b;//类似于a=a+b,先计算a+b,再将运算结果赋值给a,结果为:a=30,b=20注意事项:需要强调的是,复合赋值运算符自带强制类型转换,不需要做任何显式定义。publicstaticvoidmain(String[]args){

shorta=10;

a+=20;System.out.println("a="+a);}定义短整型变量a,并赋值为10。“a+=20;”等价于“a=(short)(a+20);”注意事项:如果将案例中的“a+=20;”简单替换为“a=a+20;”,将出现编译错误。原因在于:等号右侧变量a中的数据10由原来的short型自动提升为int型,与int型数据20进行加法计算后,运算结果30为int型,但等号左侧的变量a为short型,将需要高容量内存空间的int型数据30存储在低容量short型变量a的内存空间中,存在数据损失的风险,即无法完成自动类型转换,因此出现编译错误。关系运算符关系运算符运算符功能示例结果==等于!=不等于a!=btrue<

小于a<bfalse>

大于a>btrue<=小于等于a<=bfalse>=大于等于a>=btrue以整型变量a=5,b=3为例,表中给出了Java中的关系运算符及其用法。a==bfalse注意事项:需要强调的是,关系运算符是由两个符号构成,中间不能有空格,否则编译错误。同时,注意不能把关系运算符“==”误写成赋值运算符“=”。“==”两侧的操作数只要大小相同,无论数据类型是否相同,都返回true。例如,'A'==65、10==10.0都返回true,另外,Java也支持两个布尔型的值比较,例如,true==false,返回false。逻辑运算符逻辑运算符表中给出了Java中的逻辑运算符及其用法。运算符功能示例结果&与:连接的两个表达式或布尔值必须同时成立,结果才返回truetrue&falsefalsefalse&truefalsefalse&falsefalse&&短路与:和&返回结果相同,同时具有短路效果true&&truetruetrue&&falsefalsefalse&&truefalsefalse&&falsefalse|或:连接的两个表达式或布尔值,只要有一个成立,结果就返回truetrue|truetruetrue|falsetruefalse|truetruefalse|falsefalse||短路或:和|返回结果相同,同时具有短路效果true||truetruetrue||falsetruefalse||truetruefalse||falsefalse^异或:判断连接的两个表达式或布尔值各自结果是否相同,若不相同,整体返回ture,否则,整体返回falsetrue^truefalsetrue^falsetruefalse^truetruefalse^falsefalse!非:对布尔型的表达式或数据进行取反操作!truefalse!falsetruetrue&truetrue“&(与)”

和“&&(短路与)”

的区别&和&&都可以完成“与”的功能,但是&&比&多了一个“短路效果”:&对两侧的表达式或布尔值是true还是false都要进行判断,而&&先判断左侧表达式或布尔值的结果,若左侧结果是false,&&则不再对右侧进行判断,直接给出整体表达式的返回结果。01“|(或)”

和“||(短路或)”

的区别|和||的区别与&和&&区别类似,||同样具备“短路效果”:|对两侧的表达式或布尔值是true还是false都要进行判断,而||先判断左侧表达式或布尔值的结果,若左侧结果是true,||则不再对右侧进行判断,直接给出整体表达式的返回结果。02注意事项:根据对&和&&及|和||的区别分析,可知&&和||具有更优的运算方式,提高了程序运行效率,因此实际编程期间,相比&和|而言,应优先考虑使用&&和||运算符。而且,&&和||的短路功能,可以避免一些异常现象。booleanflag1=5<3&5/0;//编译错误booleanflag2=5<3&&5/0;//正常,flag2=falseif语句条件表达式代码块falsetrue结束开始if语句语法格式if是Java中的一个关键字,意为“如果”,即对某个条件做出判断。if语句是一种单分支结构,其语法格式如下:01if(){

代码块;}条件表达式if语句案例当考试成绩不低于90分时,打印输出“你很优秀!”的提示信息。其中,判断条件为:成绩是否不低于90分。02publicstaticvoidmain(String[]args){intscore=95;if(score>=90){System.out.println("你很优秀!");}}定义整型变量score,并赋值为95。“score>=90”为条件表达式,由于整型变量score的值为95,条件表达式返回true,因此代码块得以执行。运算符的优先级运算符优先级Java语言中大部分运算符遵循从左至右依次运算的规则,但单目运算符、赋值运算符和三目运算符是从右至左依次结合的,也就是从右向左运算。运算符优先级表中给出了Java运算符的优先级,数字越小优先级越高。优先级运算符运算符说明结合性1!+(正)-(负)++--~单目运算符从右至左2算术运算符从左至右34<<>>>>>移位运算符从左至右5<<=>>=instanceof关系运算符从左至右6==!=7&按位运算符从左至右8^9|10&&逻辑运算符从左至右11||12?:三目运算符从右至左13=+=-=*=/=%=&=|=^=<<=>>=>>>=赋值运算符从右至左*/%+(加)-(减)从左至右运算示例01inta=3,b=2,c=1;intd=a-b+c;定义3个整型变量a、b、c,并分别赋值为3、2、1。“+(加)、-(减)”遵循从左至右依次结合规则,即a-b先结合,运算结果为1,然后1+c再结合,运算结果为2,即最终d=2。从右至左运算示例02inta,b;a=b=10;定义2个整型变量a、b,但并未进行初始化。“=”属于赋值运算符,遵循从右至左依次结合规则,即b=10先结合(将10赋值给b),然后a=b再结合(将b中存储的10赋值给a),最终变

量a和b的值均为10。使用括号控制运算顺序的示例03inta=3;intb=(a+2)*a;定义1个整型变量a,并赋值为3。虽然运算符*(乘)的优先级高于运算符+(加),但现在使用括号改变了运算顺序,即先计算a+2得到5,再计算5*a得到15。if-else语句条件表达式代码块2代码块1falsetrue结束开始if-else语句语法格式if-else语句比if语句多了一个分支,是一种双分支结构。if-else语句语法格式如下:01if(){

代码块1;}{

代码块2;}条件表达式elseif-else语句案例当一个整数能被2整除时,打印输出“这是一个偶数!”,否则打印输出“这是一个奇数!”。02publicstaticvoidmain(String[]args){intnum=25;if(num%2==0){System.out.println("这是一个偶数!");}else{System.out.println("这是一个奇数!");}}定义整型变量num,并赋值为25。“num%2==0”为条件表达式,即对整型变量num的值进行取模运算,若求得余数与0相等,表达式返回true,则执行代码块1,否则执行代码块2。while循环循环条件代码块结束truefalse开始while循环语句语法格式while循环语句是Java中最基本的循环结构,其语法格式如下:01while(){

代码块;}循环条件while循环语句案例使用while循环求1~100累加和。021.packagechapter02;2.publicclassWhileCycle{3.publicstaticvoidmain(String[]args){4.intsum=0;5.inti=1;6.while(i<=100){7.sum+=i;8.i++;9.}10.System.out.println("1~100累加和为:"+sum);11.}12.}第4行定义了用于存放求和结果的整型变量sum,赋值为0。第5行定义了用于判断循环条件的整型变量i,赋值为1。由于要计算1~100的累加和,因此while循环中,设置循环条件为“i<=100”。while循环结构中,第7、8行为代码块。其中,第7行等价于sum=sum+i,第8行等价于i=i+1。do-while循环循环条件代码块结束truefalse开始do-while循环语句语法格式do-while循环与while循环类似,其语法格式如下:01do{

代码块;}while()循环条件;do-while循环语句案例使用do-while循环求1~100累加和。02publicstaticvoidmain(String[]args){intsum=0;inti=1;do{sum+=i;//等价于sum=sum+ii++;//等价于i=i+1}while(i<=100);System.out.println("1~100累加和为:"+sum);System.out.println("i的最终值为:"+i);}定义累加器整型变量sum,并赋初始值为0。定义循环变量i,并赋初始值为1。do-while循环结构数组的定义统计某公司50名员工的工资intx1,x2,x3,…,x50;

int[]x;数组变量普通变量数组的定义格式数据类型[]数组名;//第一种方式数据类型数组名[];//第二种方式01数组定义示例02String[]departments;int[]wages;定义了一个String[]类型的数组变量departments定义了一个int[]类型的数组变量wages数组的初始化数组的初始化

数组定义格式“数据类型[]数组名;”中的“数据类型”即为数组变量中存储的元素的数据类型,在定义一个数组变量的同时,可以对数组变量进行初始化。数组的初始化分为动态初始化和静态初始化两种方式。动态初始化数据类型[]数组名=new数据类型[长度];01int[]wages=newint[3];引用int[]wageswages栈内存0x1234newint[3]wages[1]堆内存wages[0]wages[2]首地址0x12340003012不同数据类型的元素的默认初始值数据类型默认初始值byte、short、int、longfloat、doublechar空字符(Unicode编码为'\u0000')booleanfalse引用数据类型null(表示变量不引用任何对象)00.0代码“int[]wages=newint[3];”也可以分成两行来写,即:int[]wages;//定义一个int[]类型的数组变量wageswages=newint[3];//为wages数组的3个元素分配内存单元,元素的默认初始值为0静态初始化数据类型[]数组名=new数据类型[]{元素1,元素2,元素3,…};//第一种方式数据类型[]数组名={元素1,元素2,元素3,…};//第二种方式02int[]wages=newint[]{2000,2500,2300};//第一种方式进行静态初始化int[]wages={2000,2500,2300};//第二种方式进行静态初始化注意事项:(1)采用第一种方式进行静态初始化时,可以将数组的定义和初始化分成两行来写,示例代码如下:int[]wages;wages=newint[]{2000,2500,2300};注意事项:(2)采用第二种方式进行静态初始化时,只能将数组的定义和初始化放在一起,不能分成两行,错误代码如下://以下分开写的方式是错误的int[]wages;wages={2000,2500,2300};注意事项:(3)采用第一种方式进行静态初始化时,数组长度必须省略,系统会根据开发人员给出的初始值个数自动确定数组长度。若人为给出数组长度,将存在数组长度和元素初始值个数不一致的风险,编译器会报错。错误代码如下:int[]wages=newint[3]{2000,2500,2300};//错误方式3项目2:面向对象程序设计类LOREMIPSUMDOLORSITAMET,CONSECTETURADIPISICINGELIT,SEDDOEIUSMODTEMPORINCIDIDUNTUTLABOREETDOLOREMAGNAALIQUA.UTENIMADMINIMVENIAM水果属性:品牌,颜色,尺寸行为:打电话,发短信

定义类的格式01[访问控制修饰符][类型修饰符]class类名

[extends父类名称][implements接口名称列表]{

成员变量

成员方法}

public|protected|默认(无修饰符)|privateprivate、protected只能用于修饰内部类。内部类指定义在其他类内部的类。在一个java文件中只能存在一个public修饰的类,且这个类必须与该文件的名称保持一致。

定义类的格式01[访问控制修饰符][类型修饰符]class类名

[extends父类名称][implements接口名称列表]{成员变量

成员方法}static|final|abstractstatic只能修饰内部类。

定义类的格式01[访问控制修饰符][类型修饰符]class类名

[extends父类名称][implements接口名称列表]{成员变量

成员方法}首字母大写如果类名由多个单词组成,则其它单词的首字母也应大写

定义类的格式01[访问控制修饰符][类型修饰符]class类名

[extends父类名称][implements接口名称列表]{成员变量

成员方法}继承其它类

定义类的格式01[访问控制修饰符][类型修饰符]class类名

[extends父类名称][implements接口名称列表]{成员变量

成员方法}继承多个接口

定义成员变量的格式02[访问控制修饰符][类型修饰符]<数据类型>变量名;访问控制修饰符有public|protected|默认(无修饰符)|private。类型修饰符有static|final。如果不对类的成员进行赋值,则系统会根据类型,给成员变量赋相应的默认值。

定义成员方法的格式03[访问控制修饰符][类型修饰符]返回值类型方法名([形参列表])[throws异常表]{方法体}访问控制修饰符有public|protected|默认(无修饰符)|private。类型修饰符有static|final|abstract。

定义成员方法的格式03[访问控制修饰符][类型修饰符]返回值类型方法名([形参列表])[throws异常表]{方法体}若方法没有返回值,可用void(空值)指定,但不能省略。若方法有返回值,则在方法体中用return语句指明要返回的值。return语句后面表达式的数据类型必须与声明成员方法中的返回值类型一致。

定义成员方法的格式03[访问控制修饰符][类型修饰符]返回值类型方法名([形参列表])[throws异常表]{方法体}方法的名字的第一个单词应以小写字母作为开头,后面的单词则用大写字母开头。publicclassStudent{

StringstudentNumber;

Stringname;

intage;

voidoutput(){

System.out.println("学号是:"+

studentNumber);}}

成员变量publicclassStudent{

StringstudentNumber;

Stringname;

intage;

voidoutput(){

System.out.println("学号是:"+studentNumber);}}

成员方法构造方法构造方法是一种特殊的方法主要功能:为对象成员变量赋初始值publicclassStudent{StringstudentNumber;Stringname;intage;publicStudent(StringstudentNumber,Stringname,intage)

{

this.studentNumber=studentNumber;=name;this.age=age;}

voidoutput(){System.out.println("学号是:"+studentNumber);}}

在类中定义publicclassStudent{StringstudentNumber;Stringname;intage;

publicStudent(StringstudentNumber,Stringname,intage)

{

this.studentNumber=studentNumber;=name;this.age=age;}

voidoutput(){System.out.println("学号是:"+studentNumber);}}

名字和类名必须一样publicclassStudent{StringstudentNumber;Stringname;intage;

publicStudent(StringstudentNumber,Stringname,intage)

{

this.studentNumber=studentNumber;=name;this.age=age;}

voidoutput(){System.out.println("学号是:"+studentNumber);}}

不能有返回类型publicclassStudent{StringstudentNumber;Stringname;intage;

publicStudent(StringstudentNumber,Stringname,intage)

{

this.studentNumber=studentNumber;=name;this.age=age;}

voidoutput(){System.out.println("学号是:"+studentNumber);}}当方法中的形参和成员变量同名时,在引用成员变量时,前面加this,代表当前对象。publicclassStudent{StringstudentNumber;Stringname;intage;

publicStudent(StringstudentNumber,Stringname,intage)

{

this.studentNumber=studentNumber;=name;this.age=age;}

voidoutput(){System.out.println("学号是:"+studentNumber);}}将形参的值赋值给当前对象的成员变量。publicclassStudent{StringstudentNumber;Stringname;intage;

publicStudent(StringstudentNumber,Stringname,intage)

{

this.studentNumber=studentNumber;=name;this.age=age;}

voidoutput(){System.out.println("学号是:"+studentNumber);}

publicstaticvoidmain(String[]args){

StudentS1=newStudent("01","小张",20);

}}一旦为类编写了构造方法,默认的构造方法将被覆盖。构造方法不能由用户直接调用,只能使用new创建对象时系统自动调用。对

象LOREMIPSUMDOLORSITAMET,CONSECTETURADIPISICINGELIT,SEDDOEIUSMODTEMPORINCIDIDUNTUTLABOREETDOLOREMAGNAALIQUA.UTENIMADMINIMVENIAM类对象声明对象0102创建对象引用对象03

声明对象的格式类名对象名01例如:Students1;classStudent{

StringstudentNumber;Stringname;intage;

}创建对象的格式对象名=new类构造方法名([实参列表])02例如:s1=newStudent();创建对象时,首先用new分配该对象的内存空间,然后调用Student构造方法,对该对象内存空间进行初始化,最后将创建的对象赋值给s1。注意事项:

声明对象和创建对象可以合并为一条语句。Students1=newStudent();引用对象的格式对象名.对象成员03例如:s1.studentNumber其中对象成员可以是成员变量名,也可以是成员方法名。classStudent{

StringstudentNumber;Stringname;intage;

publicStudent(StringstudentNumber,Stringname,intage){this.studentNumber=studentNumber;=name;this.age=age;}

voidoutput(){System.out.println("学号:"+studentNumber);}}publicclassDemo{

publicstaticvoidmain(String[]args){

StudentS1=newStudent("01","小张",20);

}}

创建对象classStudent{

StringstudentNumber;Stringname;intage;

publicStudent(StringstudentNumber,Stringname,intage){this.studentNumber=studentNumber;=name;this.age=age;}

voidoutput(){System.out.println("学号:"+studentNumber);}}publicclassDemo{

publicstaticvoidmain(String[]args){

StudentS1=newStudent("01","小张",20);System.out.println("姓名:"+S1.name);

S1.output();

}}

引用成员变量和成员方法this关键字0102引用当前对象的成员变量调用当前对象的构造方法publicclassStudent{StringstudentNumber;Stringname;intage;

publicStudent(StringstudentNumber,Stringname,intage)

{

this.studentNumber=studentNumber;=name;this.age=age;}

voidoutput(){System.out.println("学号是:"+studentNumber);}}当前对象的成员变量studentNumber。用this.成员变量引用当前对象的成员变量使用this()调用当前对象的构造方法publicclassPerson{privateStringname;privateintage;

publicPerson(){this("小李",20);}publicPerson(Stringname,intage){=name;this.age=age;}publicstaticvoidmain(String[]args){Personp=newPerson();System.out.println("姓名:"+);}}使用this()调用当前对象的构造方法

有参构造方法publicclassPerson{privateStringname;privateintage;

publicPerson(){this("小李",20);}publicPerson(Stringname,intage){=name;this.age=age;}publicstaticvoidmain(String[]args){Personp=newPerson();System.out.println("姓名:"+);}}使用this()调用当前对象的构造方法

无参构造方法publicclassPerson{privateStringname;privateintage;

publicPerson(){this("小李",20);}publicPerson(Stringname,intage){=name;this.age=age;}publicstaticvoidmain(String[]args){Personp=newPerson();System.out.println("姓名:"+);}}使用this()调用当前对象的构造方法

调用第二个有参构造方法publicclassPerson{privateStringname;privateintage;

publicPerson(){this("小李",20);}publicPerson(Stringname,intage){=name;this.age=age;}publicstaticvoidmain(String[]args){Personp=newPerson();System.out.println("姓名:"+);}}使用this()调用当前对象的构造方法this调用当前对象的构造方法时必须写在构造方法的第一行。方法的重载LOREMIPSUMDOLORSITAMET,CONSECTETURADIPISICINGELIT,SEDDOEIUSMODTEMPORINCIDIDUNTUTLABOREETDOLOREMAGNAALIQUA.UTENIMADMINIMVENIAMpublicvoidadd1

(inta,intb)publicvoidadd2(floata,floatb)

add1

(5,6)

add2

(5,6)LOREMIPSUMDOLORSITAMET,CONSECTETURADIPISICINGELIT,SEDDOEIUSMODTEMPORINCIDIDUNTUTLABOREETDOLOREMAGNAALIQUA.UTENIMADMINIMVENIAMpublicvoidadd

(inta,intb)publicvoidadd(floata,floatb)

add

(5,6)方法的重载:方法名相同,参数声明不同1、提高了代码的可读性2、提供了更灵活的方法调用方式3、使得代码更加简洁只能通过参数的类型或数量来区分重载的方法。返回类型不能用来区分重载的方法。注意:LOREMIPSUMDOLORSITAMET,CONSECTETURADIPISICINGELIT,SEDDOEIUSMODTEMPORINCIDIDUNTUTLABOREETDOLOREMAGNAALIQUA.UTENIMADMINIMVENIAMpublicclassOverload{

publicstaticvoidmain(String[]args){

doublearea1=area(4.1,5.3);

doublearea2=area(3.8);

System.out.println("area1="+areal);

System.out.println("area2="+area2);}

//下面定义一个求矩形面积的方法,其中形参x表示长,形参y表示宽publicstaticdoublearea(doublex,doubley){returnx*y;}

//下面定义一个求圆面积的方法,其中形参r表示圆的半径publicstaticdoublearea(doubler){return3.14*r*r;}}2个参数1个参数访问控制修饰符LOREMIPSUMDOLORSITAMET,CONSECTETURADIPISICINGELIT,SEDDOEIUSMODTEMPORINCIDIDUNTUTLABOREETDOLOREMAGNAALIQUA.UTENIMADMINIMVENIAM可以被同一包中的其他类访问可以被任何类访问默认(无修饰符)public访问控制修饰符同一包中的其他类访问以及继承该类的子类访问protected只能被同一类中的其他成员访问private定义类或成员变量的可见范围LOREMIPSUMDOLORSITAMET,CONSECTETURADIPISICINGELIT,SEDDOEIUSMODTEMPORINCIDIDUNTUTLABOREETDOLOREMAGNAALIQUA.UTENIMADMINIMVENIAMpublicclassModifierDemo{publicstaticvoidmain(String[]args){Fft=newFf();System.out.println(t.a);System.out.println(t.b);System.out.println(t.c);

System.out.println(t.d);System.out.println(t.getD());

}}

classFf{

public

inta=10;

protectedintb=20;

intc=30;

private

intd=40;publicintgetD(){returnd;}}LOREMIPSUMDOLORSIT

温馨提示

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

评论

0/150

提交评论