【文档说明】JAVA语言基础(新书)课件综述.ppt,共(141)页,2.523 MB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-45183.html
以下为本文档部分文字说明:
第二章Java编程基础Java语言基础•2【学习目标】1.掌握Java程序中的注释用法。2.掌握Java的命名规则,了解Java的标识符和系统保留字。3.掌握Java的基本数据类型,了解常量、变量和Java扩展的数据类型。4.掌握Java语言
基本运算符的使用,掌握Java语言基本运算符的优先级。5.掌握Java程序的基本控制结构。6.掌握并运用数组。Java语言基础•32.1数据类型、常量、变量一、标识符标识符:能被编译器识别而提供的在程序中惟一的
名字。在Java语言中用标识符对变量、类、方法等进行命名。对标识符的定义需要遵守以下的规则:①标识符是由字母、“_”、“$”和数字组成。②标识符以字母、“_”、“$”开头。③标识符不能与关键字同名。④标识符区分大小写。如:sum和Sum
是不同的标识符。例如:nes_id,$fail,_ese为合法标识符。nes-id,stud*,class为不合法标识符。Java语言基础•4二、关键字关键字:Java语言本身提供的一种特殊的标识符,又称Java保留
字。Java语言的关键字有40多个.abstractbooleanbreakbytecasecatchcharclassconstcontinuedefaultdodoubleelseextensfalsefinalfinallyfloatforifimplem
entsimportinstanceofintinterfacelongnativenewpackageprivateprotectedpublicreturnshortstaticsuperswitchsynchronizedthisthrowthrowstransie
nttruetryvoidvolatilewhileJava语言基础•5三、数据类型Java数据类型:基本数据类型和复合数据类型。◼基本数据类型:数值型、字符型和布尔型;◼复合类型:类和接口类型。1.数值型数据整数类型
、浮点类型。Java语言基础•6(1)整数类型Java把整型数细分为字节型、短整型、整型、长整型。它们的类型标识符、默认值、取值范围和所占字节如表2-2所示:名称类型标识符默认值取值范围长度字节型byte0-1
28~1271字节短整型short0-32768~327672字节整型int0-231~231-14字节长整型long0-263~263-18字节注意:Java中所有整数类型都是有符号的,没有无符号的整数。Java语言基础•7(2)浮点型Java提
供了两种浮点类型:单精度和双精度。它们的类型标识符、默认值、取值范围和所占字节如表2-3所示:名称类型标识符默认值取值范围长度单精度float0.0f-231~231-14字节双精度double0.0-263~263-18字节表2-3浮点数据分类Java语言基
础•8(3)字符类型(4)布尔型名称类型标识符默认值取值范围长度字符型char0或'\u00000'0~65535'\u0000‘~’\uffff'2字节布尔型booleanfalsetrue,false1字节Java语言基础•9四、常量在Java语言中的常量有:整型常量:十进制、八进制(
以0开头)、十六进制(以0x或0X开头)浮点常量:小数形式和指数形式字符常量:单引号括起来的一个字符,区分大小写布尔常量:true和false字符串常量:双引号括起来的一串字符,区分大小写程序中定义的常量(符号常量)Java语言基
础•10转义字符Java语言还允许使用一种以“\”开头的字符,我们称其为转义字符,用来表示一些不可显示的或有特殊意义的字符。符号功能符号功能\n换行(将光标移到下一行开头)\'单引号\r回车(将光标移到本行开头)\"双引号\f换页(光标移到下页
开始处)\\反斜杠\b退格(光标移到前一列)\ddd八进制模式\t水平制表符(光标移到下一个Tab位置)\udddd十六进制模式Java语言基础•11在Java程序中定义常量通过final关键字实现,常量通常用大写字母表示。常量声明赋值后,在程序中就不能再修改,否
则将会产生编译错误。定义语句格式如下:final类型标识符常量名常量值;例如:finalintN100;程序中定义的常量(符号常量)Java语言基础•12五、变量1.变量定义Java语言规定,程序中的变量必须先定义、
后使用.定义变量语句的一般格式如下:数据类型变量列表;给变量赋值语句的一般格式为:变量名=表达式;Java语言基础•13例2.1给变量赋值的演示publicclassj202{publicstaticvoidmain(Stringarg[]){
inta,b;//定义变量a,b为整型变量a=1;//给变量a赋初值System.out.println("a="+a);a=a+1;System.out.println("a="+a);b=a+1;System.out.println("b="+b);a=b+2
;System.out.println("a="+a);}}Java语言基础•143.变量初始化例2.2给变量赋值publicclassj203{publicstaticvoidmain(Stringar
g[]){bytea=0x78;//定义十六进制字节型变量intb=3;//定义变量b为整型变量floatc=1.23f;//定义变量c为单精度变量doubled=3.23;//定义变量d为双精度变量booleane=false;//定义变量e为布尔型变量charf='A'
;//定义变量f为字符型变量System.out.println("转换成十进制的a="+a);//120System.out.println("b="+b);//3System.out.println("c="+c);//1.23System.out.
println("d="+d);//3.23System.out.println("e="+e);//falseSystem.out.println("f="+f);//A}}Java语言基础•152.2运算符与表达式◼Java语言运算符是一种特殊字符,他指明用户对操作数进
行的某种操作。◼表达式是由常量、变量、方法调用以及一个或多个运算符按一定规则的组合,它用于计算或对变量进行赋值。Java语言基础•162.2.1算术运算符与算术表达式类型运算符功能用法举例双目运算符+加a+b-减a-b*乘a*b/除a/b%求余a%b单目运
算符-负值-a++自增a++,++a--自减a--,--aJava语言基础•17说明(1)“+”运算符可以用来连接字符串;例如:Stringsalutation="Dr.";Stringname="Jack";Stringtitle=salutation+name;则title值为“Dr.J
ack”。(2)“/”运算符。两个整数相除的结果是整数,如果有一个操作数为小数则结果为小数。例如5/2=2;5.0/2=2.5。(3)“%”运算符。Java中的取模运算符与C和C++不同,它的操作数可以是浮点数。例如-3.5%3=-0.5,3.5%-3=0.5。Java
语言基础•18(4)++(--)运算符的操作数必须是变量,不能是常量和表达式。它们可以放在变量前,也可以放在变量后,功能都是对变量增(减)1。但从表达式的角度看,表达式的值是不同的.例如:k=a++;等价于k=a;a=a+
1;如a=5,则k=5,a=6;k=++a;等价于a=a+1;k=a;如a=5,则k=6,a=6;Java语言基础•19例2.4算术运算publicclassj204{publicstaticvoidmain(Stringarg[]){inta=3,b=
5,c=5;System.out.println("初值a=3,b=5,c=5");System.out.println("b/a="+b/a);System.out.println("c%a="+c%a);System.out.println("-a="+(-a));Syste
m.out.println("b++="+(b++)+","+"b="+b);System.out.println("++c="+(++c)+","+"c="+c);}}Java语言基础•202.2.2关系运算符与关系表达式1.关系运算符组成Java语言提
供了6种关系运算符>、>=、<、<=、==、!=。2.关系表达式值关系表达式的运行结果是一个布尔类型值:true和false。例如:10>7的值为true,10!=10的值为falseJava语言基础•212.2.3逻辑运算符与逻辑表达式逻辑运算与关系运算的关系十分密切,关系运算的运
算结果是布尔型的运算,而逻辑运算的操作数和运算结果都是布尔型的运算。逻辑运算符:◼!(非)◼&&(简洁与):逻辑与◼||(简洁或):逻辑或◼&(非简洁与):按位与◼|(非简洁或):按位或◼^(异或)其中!是单目运算符。Java语言基
础•22例2.5逻辑运算publicclassj205{publicstaticvoidmain(Stringarg[]){intx=1,y=2;intnum1=5,num2=5,num3=5,num4=5;boolea
nr1,r2,r3,r4;r1=x>y&num1++==5;//两边表达式都运算r2=x>y&&num2++==5;//只运算左边表达式r3=x<y|num3++==5;//两边表达式都运算r4=x<y||num4++==5;//只运算左边表达式System.out.println("逻辑
值:r1="+r1+","+"num1="+num1);System.out.println("逻辑值:r2="+r2+","+"num2="+num2);System.out.println("逻辑值:r3="+r3+","
+"num3="+num3);System.out.println("逻辑值:r4="+r4+","+"num4="+num4);}}练习:关系运算符与逻辑运算符的使用publicclassLogicOpDemo{publicstaticvoidmain(String
[]args){inta=10;intb=5;booleant=true;booleanf=false;System.out.println("a>b:"+(a>b));System.out.println("a==b:"+(a
==b));System.out.println("t&f:"+(t&f));System.out.println("t|f:"+(t|f));System.out.println("!f:"+(!f));System.out.println
("t^f:"+(t^f));System.out.println("t&&f:"+(t&&f));System.out.println("t||f:"+(t||f));}}Java语言基础•242.2.4赋值运算符◼赋值运算符的作用是将运算符“=”右侧表达式的值赋给左侧的
变量。◼另外“=”和其它运算符组合产生了扩展赋值运算符。a+=2等价于a=a+2。Java语言基础•252.2.5条件运算符条件运算符“?”是三目运算符,其格式为:表达式?语句1:语句2;其中表达式的值是布尔类型,当表达式的值为true时执行语句1,否则执行语句2。要求语句1和语句2返回的数据类
型必须相同,并且不能无返回值。Java语言基础•26例2.6比较三个数的大小,求出其中的最大值和最小值publicclassj206{publicstaticvoidmain(Stringarg[]){inta=12,b=-23,c=34;int
max,min,t;//求三个数中的最大值t=a>b?a:b;max=t>c?t:c;//求三个数中最小值t=a<b?a:b;min=t<c?t:c;//显示结果System.out.println("max="+max);System.out.println("min="+min);}
}Java语言基础•272.2.6运算符优先级优先级运算符名称运算符结合性1限制符()、[]…2自增、自减++、--自右向左3按位取反、逻辑非、负号~、!、-自右向左4强制转换、内存分配(类型)表达式、new自右向左5算术乘、除、取模*、/、
%自左向右6算术加、减+、—自左向右7移位运算符<<、>>、>>>自左向右8关系运算<、<=、>、>=自左向右9相等性判断运算!=、==自左向右10按位与、非简洁与&自左向右11按位异或、逻辑异或^自左向右12按位或、非简洁或|自左向右1
3逻辑与(简洁与)&&自左向右14逻辑或(简洁或)||自左向右15条件运算?:自左向右16赋值运算=、+=、-=、*=、……自左向右28◼位运算符1.按位取反~“~op2”2.按位与&“op1&op2”3.按
位或|“op1|op2”4.按位异或^“op1^op2”通常:操作数为整数运算符(operator)29◼采用补码表示二进制数◼最高位是符号位◼正数的符号位是0,例,十进制+42的补码为00101010◼负数的符号位是1
该负数绝对值的补码按位取反,然后加1,为该负数的补码例,十进制-42的补码—负数的绝对值42绝对值的补码00101010按位取反11010101加1得11010110补码30对操作数的每一个二进制位进行“取反”操作◼bytea=42;◼byteaa=~a;◼System.out.print
ln(“aa=”+aa);4200101010//a~a-4311010101//原码为10101011=-43按位取反~“~op2”31将操作数的对应位逐位进行位逻辑与运算1&1→1,其余为0用途1.取
某一整数中指定的几个二进制位42&1500101010&0000111100001010取后四位按位与&“op1&op2”32◼用途2.将某一整数的某一或几位清043&~100101011&1111111000101010按位与&“o
p1&op2”33将操作数的对应位逐位进行位逻辑或运算有1→1,其余为042|1500101010|0000111100101111用途:将一个整数的某一位或几位置1按位或|“op1|op2”34将操作数的对应位逐位进行位异或运算对应位不同→1,其余为042^1500
101010^0000111100100101用途:将一个整数的某一位或几位取反按位异或^“op1^op2”35◼移位运算符(ShiftOperators)1.左移<<“op1<<op2”2.右移>>“op1>>op2”3.无符号右移>>>“op1>>>o
p2”运算符(operator)361.将操作数op1的二进制位向左移op2(正整数)位2.低位补零例:inta=42;intaa=a<<2;System.out.println(“aa=”+aa);分析:42=00101010B42<<2
10101000相当于42*22=168运算速度比乘法快注意:溢出左移<<“op1<<op2”37◼将操作数op1的二进制位向右移op2(正整数)位1.高位补零(原为正数)、高位补1(原为负数)例:inta=-42;intaa=a>>2;Sy
stem.out.println(“aa=”+aa);分析:-42=(10101010)原=(11010110)补-42>>211110101//(10001011)原=-11相当于-42/22=-10.5运算速度比除法快右移>>“op1>>op
2”381.将操作数op1的二进制位向右移op2(正整数)位2.高位补零,零扩展(zero-extension)例:inta=-42;intaa=a>>>2;System.out.println(“aa=”+aa);分析:-42=(10101010)原=(11010110)补-42>>>2001
10101//32+16+4+1=53实现数的拼接无符号右移>>>“op1>>>op2”总结◼<<逻辑左移,右边补0,左边舍弃.◼>>算术右移,符号位复制,为正数时左边补0,为负数时左边补1.右边舍弃。◼>
>>逻辑右移,这个才是和<<对应的。这个把符号位一起移动,左边补0。◼注意:对于正数,>>>和>>是一样的;对于负数,逻辑右移之后就变成正数了.练习位运算符publicclassBitOpDemo{publicsta
ticvoidmain(String[]args){inta=0xB5;//a=10110101Bintb=0xA3;//b=10100011BSystem.out.println("a="+Inte
ger.toBinaryString(a));System.out.println("b="+Integer.toBinaryString(b));System.out.println("~a="+Integer.toBinaryString(~a));System.out.print
ln("a&b="+Integer.toBinaryString(a&b));System.out.println("a|b="+Integer.toBinaryString(a|b));System.out.println("a^b=
"+Integer.toBinaryString(a^b));System.out.println("a<<3="+Integer.toBinaryString(a<<3));System.out.pr
intln("a>>3="+Integer.toBinaryString(a>>3));System.out.println("a>>>3="+Integer.toBinaryString(a>>>3));}}运行结果Java语言基础•422.3Java程序的流程控制◼2.3.1顺序结构◼2.3
.2选择结构◼2.3.3循环结构Reader常用子类◼BufferedReader◼构造一个字符流的缓存,里面存放的是从控制台输入的字节转换成的字符,从而实现字符、数组和行的高效读取。◼可以指定缓冲区的
大小◼InputStreamReader◼字节流通向字符流的桥梁:它使用指定的charset读取字节并将其解码为字符。◼每次调用InputStreamReader的read()方法都会导致从底层输入流读取一个或多个字节。buf=newBufferedReader(ne
wInputStreamReader(System.in));Java语言基础•44例2.7输入一个数,求其平方根importjava.io.*;publicclassj207{publicstaticvoidmain(Stringarg[])throwsIOExcep
tion{intx;doubley;Stringstr;//声明字符串类BufferedReaderbuf;//声明缓冲数据流类System.out.print("请输入一个数:");buf=newBuf
feredReader(newInputStreamReader(System.in));str=buf.readLine();x=Integer.parseInt(str);//返回由字符串转换得到的整数y=Math.sqrt(x);//求平方根
System.out.println(x+"的平方根为:"+y);//显示计算结果}}Java语言基础•45例2.8输入一个数,求其平方根importjava.io.*;publicclassj208{publicstaticvoidmain(Str
ingarg[])throwsIOException{intx;doubley;Stringstr;BufferedReaderbuf;System.out.print("请输入一个数:");buf=newBufferedReader(newInputStreamReader(System
.in));str=buf.readLine();x=Integer.parseInt(str);if(x>=0){y=Math.sqrt(x);System.out.println(x+"的平方根为:"+y);}}}Java语言基础•46例2.9输入一个数,求其平方根i
mportjava.io.*;publicclassj209{publicstaticvoidmain(Stringarg[])throwsIOException{intx;doubley;Stringstr;BufferedReaderbuf;Syste
m.out.print("请输入一个数:");buf=newBufferedReader(newInputStreamReader(System.in));str=buf.readLine();x=Integer.parseInt(str);if(x>=
0){y=Math.sqrt(x);System.out.println(x+"的平方根为:"+y);}elseSystem.out.println("输入错误!");}}Java语言基础•47例2.10编写程序,输
入一个成绩,输出成绩的等级。等级划分标准:85分以上为优,75~84为良,60~74为中,60分以下为不及格importjava.io.*;publicclassj210{publicstaticvoidmain(St
ringarg[])throwsIOException{intx;Stringstr;BufferedReaderbuf;System.out.print("请输入学生成绩(0-100)之间:");buf=newBufferedRe
ader(newInputStreamReader(System.in));str=buf.readLine();x=Integer.parseInt(str);if(x>=85)System.out.println("成绩优秀!");elseif(x>=75)System.out.prin
tln("成绩良好!");elseif(x>60)System.out.println("成绩及格!");elseSystem.out.println("成绩不及格!");}}Java语言基础•48例2.11输入成
绩的英文等级:A、B、C、D,输出对应的中文等级:优秀、良好、及格、不及格importjava.io.*;publicclassj211{publicstaticvoidmain(Stringarg[])throwsIOException{charch;System.out.print("请输
入英文等级(A,B,C,D):");//接受从键盘上输入的一个数据把它转换成一个字符ch=(char)System.in.read();switch(ch){case'A':case'a':System.out.println("成绩优秀!");break
;case'B':case'b':System.out.println("成绩良好!");break;case'C':case'c':System.out.println("成绩及格!");break;case'D':case'd':Sy
stem.out.println("成绩不及格!");break;default:System.out.println("输入错误!");}}}Java语言基础•49例2.12用户从键盘输入字符,直到输入‘&’程序结束。要求:
输入字符后显示输入字符的ASCII值并最终统计出输入字符的个数importjava.io.*;publicclassj212{publicstaticvoidmain(Stringarg[])throwsIOException{charch;
intcount=0;System.out.println("请输入一个字符,以’&‘结束输入:");ch=(char)System.in.read();while(ch!='&'){System.out.println("字符"+ch+"
的ASCII值为:"+(int)ch);System.in.skip(2);count=count+1;ch=(char)System.in.read();}System.out.println("输入的字符共"+count);}}◼System.in.skip(2);当用户键
入字母,按Enter键后,虽然屏幕只显示了一个字母,但是在系统内存中实际保存了3个ASCII码。第一个ASCII码是用户键入的字母的ASCII码,第二个是回车的ASCII码13,第三个是换行的ASCII码10。在这种情况
下,System.in.read();语句会在第二、三轮循环时分别读取内存中的ASCII码13和10,而不会要求用户键入新的字母。只有在第四轮循环时,因为内存中的内容已经全部读取完,才会要求用户键入新的字母。J
ava语言基础•52例2.13对例2.12进行改编,用do-while语句实现importjava.io.*;publicclassj213{publicstaticvoidmain(Stringarg[])throwsIOException{charch;intc
ount=0;System.out.println("请输入字符,以’#‘结束输入:");do{ch=(char)System.in.read();System.out.println("字符"+ch+"的ASCII值为:"+(int)ch);count=count+1;}while(ch!
=‘#');System.out.println("输入的字符共:"+count);}}Java语言基础•54/**方法3*/i=1;sum=0;//赋初值for(;;){sum=sum+i;//求累加和i
f(i>=100)break;//退出循环条件i++;//加数自加}System.out.println("1+2+...+100="+sum);}}Java语言基础•55例2.14计算1+2+3+…+1
00的值publicclassj214{publicstaticvoidmain(Stringarg[]){inti,sum;//定义变量/**方法1*/sum=0;//给存放累加和的变量赋初值0for(i=1;i<=100;i+
+)//求累加和的循环开始sum=sum+i;//求累加和System.out.println("1+2+...+100="+sum);/**方法2*/for(sum=0,i=1;i<=100;sum=sum+i,i
++);//循环语句System.out.println("1+2+...+100="+sum);Java语言基础•56例2.15求1-1000之间的所有完全数publicclassj215{publicstaticvoidmain(Stringarg[]){inti,j,sum;/
/定义变量for(i=1;i<1000;i++){sum=0;for(j=1;j<i;j++){if(i%j==0)sum=sum+j;//因子累加}if(sum==i)//判定是否为完全数System.out.print(i+"\t");}Syst
em.out.println();}}57跳转语句◼break语句◼break语句用以中断当前执行的循环语句(for、do-while、while)或switch语句◼两种形式◼不带标号的break语句◼表达形式:break;◼从本层
循环中跳出◼带标号的break语句◼表达形式:◼从整个程序块中跳出标号:程序块(break标号;)……若只有一层循环,带标号和不带标号作用相同若存在循环嵌套,两者作用不同Java语言基础•58例2.16计算3的60次方。publicclassExa
mple2_16{publicstaticvoidmain(Stringargs[]){inti,n=60;longresult=1;for(i=1;i<=n;i++){result*=3;if(result>=Int
eger.MAX_VALUE)break;}if(i==n+1)System.out.println("3的"+n+"次方为:"+result);ElseSystem.out.println("超出了整数范围");}}超出了整数范围59◼带标号的br
eak语句classTest{publicstaticvoidmain(Stringargs[]){intj,k;Rep:for(j=8;j>1;j--){for(k=1;k<=9;k++){if(k==5)break;if(j==6)break
Rep;System.out.print(j*k+“”);}System.out.println(“<>”);}}}跳转语句8162432<>7142128<>若只有一层循环,带标号和不带标号作用相同若存在循环
嵌套,两者作用不同60跳转语句◼continue语句◼continue语句用以结束循环语句(for、do-while、while)的本次循环◼两种形式◼不带标号的continue语句◼表达形式:continue;◼结束本次循环,即跳过continue语句后的语句,返回至本层循环体
的条件测试部分◼带标号的continue语句◼表达形式:◼跳至标号所指语句块的条件测试部分继续执行◼注意与break语句的比较标号:程序块(continue标号;)……若只有一层循环,带标号和不带标号作用相同若存在循环嵌套,两者作用不同Java语言
基础•61例2.17求自然数1至99中所有奇数的和。publicclassExample217{publicstaticvoidmain(Stringargs[]){intsum=0,i;for(i=1;i<=99;++i){if(i%2==0)continue;sum+=i;
}System.out.println(sum);}}2500Java语言基础•62例2.18输出200以内的所有素数的程序就使用了带标号的continue语句:importjava.io.*;publicclassSushu{publicstaticvoidmain(Stringar
gs[]){A1:for(inti=2;i<=200;i++){for(intj=2;j<i;j++){if(i%j==0)continueA1;}System.out.print(i+"");}}}课堂练习1:写出程序的运行结果
importjava.io.IOException;publicclassTest{publicstaticvoidmain(String[]args)throwsIOException{System.out.println("pleaseenternumber");intb=0;
while(true){b=System.in.read();if(b=='\n'||b=='\r')break;else{intnum=b-'0';System.out.println(num);}}}}◼输入:123◼输出:Java语言基础64课堂练习2:求2~100的素数,每行打印5个
数字importjava.io.*;publicclassprime{publicstaticvoidmain(Stringargs[]){First_Loop:for(inti=2,k=0;i<100;i++){for(intj=2;j<=Math.sqrt(i);
j++){if(i%j==0)continueFirst_Loop;}System.out.print(i+"\t");k++;if(k%5==0)System.out.println();}//for}//main}//cl
assJava语言基础•652.4数组2.4.1什么是数组数组是一组类型相同、名字相同的数据的总称,数组中的每个数据称为一个数组元素。Java语言基础•662.4.2一维数组在Java语言中,使用数组一般步骤:数组定义、分配内存、赋值。1.定义
数组形式有两种:数组元素类型数组名[];数组元素类型[]数组名;例如:intstudent[];int[]student;注意:◼类型是数组中元素的数据类型(基本和构造类型)◼数组名是一个标识符◼数组声明后不能
被访问,因未为数组元素分配内存空间variabledmightnothavebeeninitializedSystem.out.println(d[0]);^1errordouble[]d;Syste
m.out.println(d[0]);Java语言基础•672.用new初始化数组用关键字new初始化数组:指定数组的长度并分配相应的内存空间。例如:int[]a;a=newint[50];定义数组和动态初始化数组也可以合并为一条语句,例如:inta[]=newint[50];Stri
ng[]name=newString[30];在动态初始化数组后,数组的默认值由其元素的类型决定。例如:整型数据的默认值为0,实型数据的默认值为0.0,布尔型数据的默认值为falseJava语言基础•683.赋初值初始化数组赋初值初始化数组是指不使用系统的数组默认值,自行给数组赋初值。具体实施方法
:(1)按照顺序依次给每个元素赋值。例如给数组a赋值:a[0]=81;a[1]=90;……a[49]=100;(2)在定义数组的同时直接给数组赋初值。int[]b={81,90,17,55,32,98,37,25,100};Stringnums[]={"one"
,"two","three","four","five","six","seven","eight"};初值数据的个数就是数组的长度,数据与数据之间用逗号分隔,整个初值再用大括号括起来。Java语言基础•694.数组元素的引用数组名[下标]下标值由0开始到数组长度减1
为止。a[50]:a[0]表示数组中的第一个元素;a[49]表示数组中的最后一个元素。Java语言基础•705.数组的复制每个数组都是Array类中的一个对象,在复制数组时有两种具体情况。(1)两个数组指向同一
组元素空间。例如:int[]num_1={1,2,3,4,5,6};int[]num_2;num_2=num_1;Java语言基础•71(2)两个数组指向内容相同的两个元素空间。如果要真正复制一个数组
,使我们在修改复制数组时不影响源数组的话,就需要定义一个和源数组长度相同的数组,然后再把源数组中的元素一一复制给新的数组。◼求任何数组的长度都可以使用length方法:数组名.length如:num_1.length、a.length等72一维数组◼数组整体赋值cla
ssTest{publicstaticvoidmain(Stringargs[]){inta[]={2,4,6,8};intb[];int[]c={1,3,5,7};b=a;c=a;for(intj=0;j
<a.length;j++)System.out.print(a[j]+““);System.out.println();for(intj=0;j<b.length;j++)System.out.print(b[j]
+““);System.out.println();for(intj=0;j<c.length;j++)System.out.print(c[j]+““);}}C:\>javaTest246824682468C:\>inta[]={2,4,6,8,0};intb[];intc[]={1,3,5,
7};inta[]={2,4,6,8};intb[];intc[]={1,3,5,7,9};Java语言基础•73例2.19一维数组的构建与输出,并求数组平均值classArray1creat{publicstaticvoidmain(Stringargs
[]){intnum1[]={1,2,3,4,5,6};intnum2[];intj;floatave=0f;System.out.println("数组num1各元素的值为:");for(j=0;j<num1.leng
th;j++)System.out.print(num1[j]+"\t");System.out.println();System.out.println("数组num1的长度为:"+num1.len
gth);Java语言基础•74num2=num1;System.out.println("数组num2各元素的值为:");for(j=0;j<num2.length;j++){System.out.print(num2[j]+"\t");ave=a
ve+num2[j];}System.out.println();ave=ave/num2.length;System.out.println("数组num2的平均值为:"+ave);}}Java语言基础•752.4.3二维数组1.二维数组定义与定义一维数组类似,定义二维数组也有
两种形式:(1)数组元素类型[][]数组名;例如:int[][]num;char[][]cc;(2)数组元素类型数组名[][];例如:Stringss[][];Doublevalue[][];二维数组可以
看作一个按照行和列存储数据的内存空间。可以按照所需确定数组每行和每列的长度,有两种创建方法。(1)数组每行、每列之间长度相同。例如:intbb=newint[2][3];该语句表示创建一个2行3列的二维数组,该数组共有bb[0][0]、bb
[0][1]、bb[0][2]、bb[1][0]、bb[1][1]和bb[1][2]六个数组元素。Java语言基础•762.用new初始化二维数组(2)数组每行、每列之间长度不相同。Java语言中,多维数组被看作是数组的数组,对数组空间的分配不一定是连续空间。因而,多维数组每一维的大
小可以是不相同的。例如:results=newint[2][];//创建一个2行的二维数组。results[0]=newint[3];//该数组第一行有3列,也就是3个元素。results[1]=newint[5];//该数组第二行有5列,也就是5个元
素。Java语言基础•773.赋初值初始化二维数组与初始化一维数组类似,赋初值初始化二维数组也有两种方法。(1)按照顺序依次给每个元素赋值。(2)在定义数组的同时直接给数组赋初值。例如:int[][]bb={{13,45,
78},{36,21,55}};4.二维数组的长度二维数组的长度是指行数的个数,二维数组每行的长度是指每行的元素个数。例如:results.length表示二维数组results的长度,也就是行数;resul
ts[i].length表示二维数组results第i行的长度,也就是元素个数。Java语言基础•782.4.4数组应用举例例2.20二维数组结构示例设计思路:通过对由inta2[][]={{12,34},{-5},{3,5,7}};所创建的数组的输出,以及对a2.length与a2[i].
length的输出,展示数组的创建与输出方式,并加深对java二维数组结构的认识。Java语言基础•79classArray2creat{publicstaticvoidmain(Stringargs[]){int
a2[][]={{12,34},{-5},{3,5,7}};inti,j;System.out.println("二维数组a2的长度为:"+a2.length);for(i=0;i<a2.length;i++)
{System.out.println("a2["+i+"]的长度为:"+a2[i].length);for(j=0;j<a2[i].length;j++)System.out.print("a2["+i+"
]["+j+"]="+a2[i][j]+"\t");System.out.println();}}}Java语言基础•80例2.21二维数组的转置与输出。设计思路:首先定义、赋初值并输出inta[][]。然后定义intb[][]。用b[j
][i]=a[i][j]语句配合循环,实现将数组a[][]转置复制给数组b[][]的目的。Java语言基础•81classArray2convert{publicstaticvoidmain(Stringargs[]){inta[][]={{11,12,13},{21,
22,23},{31,32,33},{41,42,43}};intb[][]=newint[3][4];inti,j;System.out.println("数组a各元素的值为:");for(i=0;i<4;i++){for(j=0;j<3;j++)S
ystem.out.print(a[i][j]+"\t");System.out.println();}Java语言基础•82for(i=0;i<4;i++)for(j=0;j<3;j++)b[j][i]=a[i][j];System.out.println("数组b各元
素的值为:");for(i=0;i<3;i++){for(j=0;j<4;j++)System.out.print(b[i][j]+"\t");System.out.println();}}}Java语言基础•83例2.22数组综合操作举例设计思路:通
过类似for(i=0;i<a.length;i++){}的循环语句,实现求最大值和排序等一系列数组的常用功能。Java语言基础•84classUseArray{publicstaticvoidmain(Strin
gargs[]){inti,j,max,sum,temp;//定义数组并初始化inta[]={3,0,6,7,5,2};//求数组最大值max=a[0];for(i=1;i<a.length;i++)i
f(a[i]>max)max=a[i];System.out.println("数组最大值为"+max);//对数组排序(升序)for(i=0;i<a.length-1;i++)for(j=i+1;j<a.leng
th;j++)if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}//输出排序之后的数组System.out.println("数组排序之后的结果为");for(i=0;i<a.length;
i++)System.out.println("a["+i+"]="+a[i]);}}Java语言基础•852.4.5数组参数与相关系统方法在java的方法中,允许数组或数组元素作参数。在使用数组作参数时,应注意以下事项:◼在形式参数表中,数组后面的括号不能省
略。括号的个数要与维数一致。◼在实际参数表中,数组后不需要括号。◼数组名作实际参数时,它向形式参数传递的是地址,Java语言基础•86例2.23计算数组元素的平均值设计思路:编写方法staticfloatarrayAaverage(intx[])求x数组的平均值;在主方法main()中先
建立数组a[],再通过System.out.println(arrayAaverage(a))调用该方法完成题目要求。Java语言基础•87classArrayAve{publicstaticvoidmain(Stringargs[]){int
a[]={1,2,3,4,5,6,7};intj;System.out.println("数组a各元素的值为:");for(j=0;j<a.length;j++)System.out.print(a[j]+"\t");System.out
.println();System.out.println("数组a的平均值为:");//a数组作实际参数不带括号System.out.println(arrayAaverage(a));}Java语言基础•88//x数组作
形式参数括号不能省略staticfloatarrayAaverage(intx[]){floatave=0f;for(inti=0;i<x.length;i++)ave=ave+x[i];ave=ave/x.length;returnave;}}Java语言基础•89
Java语言基础•90Java语言还提供了一些专门用于数组操作的方法,通过调用这些系统方法,可以用更加简洁的形式实现指定的程序功能。例2.24使用arraycopy方法复制数组方法:System.arraycopy(from,fromIndex,to,t
oIndex,count);该方法从数组from的索引fromIndex位置起,复制count个元素到数组to的从索引toIndex位置开始的地方。◼在“java.util”包中,还专门有一个数组类Arrays,该类提
供了一些方法用于排序、查找等操作,在编制程序中可以直接使用这些方法。例2.25调用sort方法来对数组排序。可以直接使用Arrays类提供的sort方法对数组排序。Java语言基础•91publicstaticvo
idsort(Xxxa[])importjava.util.*;publicclassArraySort{publicstaticvoidmain(Stringargs[]){//inta[]={9,1,3,4,
2,5,7,6,8};charch[]={'h','f','c','d','e','a','b'};System.out.println("数组ch排序前为:");for(inti=0;i<ch.length;i++)System.out.print(ch[i]+"");Sys
tem.out.println();System.out.println("数组ch排序后为:");Arrays.sort(ch);for(inti=0;i<ch.length;i++)System.out
.print(ch[i]+"");System.out.println();}}Java语言基础•92例2.26调用binarySearch方法在数组中查找指定的值。设计思路:可以直接使用数组类Arrays提供的binarySearc
h方法实现查找要求。该方法的使用形式如下:publicstaticintbinarySearch(Xxxa[],Xxxv)该方法用折半查找算法在指定的数组a查找值为v的元素。如果在数组a查找到值为v的元素,则返回该元素的
下标;否则,则返回一个负值r,位置(r+1)为v应该插入的位置。Java语言基础•93importjava.util.*;classArraySearch{publicstaticvoidmain(Stringargs[]){charch[
]={'a','b','c','e','f','h','i'};//charch[]={'h','f','c','d','e','a','b'};此时将找不到charkey='f';intpos;System.out.printl
n("数组为:");for(inti=0;i<ch.length;i++)System.out.print(ch[i]+"");System.out.println("");//key='a';pos=Arrays.binarySearch
(ch,key);if(pos<0)System.out.println("元素"+key+"在数组中不存在");elseSystem.out.println("元素"+key+"在数组中的位置为"+
pos);}}Java语言基础•942.4.6字符串字符串是组织字符的基本数据结构,某种程度上说类似于字符的数组。Java中的字符串分为两大类,1.String类:创建之后不会再做修改和变动的字符串常量;2.StringB
uffer类:创建之后允许再做更改和变化的字符串变量。Java语言基础•95一、字符串常量与String类Java中没有内置的字符串类型,字符串常量是作为String类的对象存在的。使用字符串的过程可以表述为声明、创建(初始化)、处理3个步骤。其中声明与创建也经常合并在一起进
行。Java语言基础•961.创建String类对象创建String类字符串的方式有两种:◼双引号“”赋值法,◼使用类的构造方法。⑴使用类的构造方法创建字符串例如:Stringstr1=newString
(“Verywell”);Stringstr2=newString(“Verywell”);使用类的构造方法产生的字符串对象,有自己的独立空间。更多newString()方法的形式Java中newString()方
法的形式有好几种,常用的形式如下:Java语言基础•97String()创建一个空字符串常量。String(Stringvalue)根据一个已经存在的字符串常量来创建一个新的字符串常量。String(char[
]value)根据一个已经存在的字符数组来创建一个新的字符串常量。String(byte[]bytes)根据一个已经存在的字节数组来创建一个新的字符串常量。String(byte[]bytes,intstartIdnex,intnumChar
s)根据一个字节数组的指定部分来创建一个新的字符串常量。String(StringBufferbuffer)根据一个已经存在的StringBuffer对象来创建一个新的字符串常量。Java语言基础•98说明:Java的Char类使用16位表示的Unicode编码字符集
,为了使用8位字节数组格式的源数据,Java提供了由字节数组创建字符串的方法。String(byte[]bytes,intstartIdnex,intnumChars)参数bytes代表一个由ASCII码构成的字节数组,参数startIdnex代表起始位置,参数numChars代表元素个数。
Java语言基础•99例2.26利用new方法创建String类字符串示例设计思路:利用new声明并初始化赋值7个String类字符串s1、s2、s3、s4、s5、s6、s7。Java语言基础•1007次赋值使用了7种
不同的构造方法。publicclassStringCreate{publicstaticvoidmain(Stringargs[]){charchars1[]={'a','b','c','d','e','f'};Strings1=newString();//创建空字符串s1Strings
2=newString(chars1);//由字符数组chars1,创建字符串s2Strings3=newString(chars1,3,3);//由数组chars1的指定部分,创建字符串s3byteasc[]={6
5,66,67,68,69};//由字节数组asc,创建字符串s4,值是"ABCDE"Strings4=newString(asc);//由字节数组asc的指定部分,创建字符串s5,值是"CDE"Strings5=newString(asc,2,3);Java语言基础•101//
数组hz构成"面向对象"4个汉字。-61与-26组合成汉字"面",其余类推bytehz[]={-61,-26,-49,-14,-74,-44,-49,-13};//用字节数组hz按缺省的字符编码方案创建串对象s6Strings6=newString(hz);//从数组hz下标为2的字节开始,取
连续的4个字节{-49,-14,-74,-44}创建串对象Strings7=newString(hz,2,4);System.out.println("s1="+s1);System.out.println("s2="+s2);System.ou
t.println("s3="+s3);System.out.println("s4="+s4);System.out.println("s5="+s5);System.out.println("s6="+s6);System.out.println("s7="+s7);}}Java语言基础•
102⑵使用双引号赋值法创建字符串例如:Stringstr3="Verywell";//使用双引号赋值法创建字符串str3Stringstr4="Verywell";此时,相同字符串在内存中只有一份。使用双引号赋值法产生字符串,是为了提高程
序运行速度。系统内存中专门有一块字符串池(StringPool),每产生一个双引号赋值字符串,系统首先到StringPool中查看是否已有相同的字符串在里面,如果有就直接拿出来使用。如果没有才将新字符串放入StringP
ool中。所以,用双引号赋值法产生的相同字符在内存中只有一份。这样,字符串str3和str4实际上是指向同一内存地址Java语言基础•103在创建字符串时,还可以使用Java的"+"运算符,实现字符串间的连接。例如:String
str5="hello"+"java!";说明:如果字符串与其他类型的变量进行"+"运算,系统自动将其类型转换为字符串。例如:inti=5;Stringstr6="i="+i;输出:i=5Java语言基础•104⑶字符串比
较操作字符串比较操作:比较操作符”==”,比较方法equals。例2.27字符串比较设计思路:利用类的构造方法和双引号赋值法创建4个内容相同的字符串,通过对它们不同比较的结果,阐述两类字符串的区别以及两种比较方式的不同。Java语言基础•105importjava.io.
*;publicclasscompchar{publicstaticvoidmain(String[]args){Stringstr1=newString("Verywell");//使用类的构造方法Stringstr2=newString("Verywell");Stringstr3
="Verywell";//使用双引号""赋值法Stringstr4="Verywell";System.out.println(str1+""+str2+""+str3+""+str4);System
.out.println(str1==str2);System.out.println(str3==str4);System.out.println(str2==str3);System.out.println(str1.equals
(str2));System.out.println(str3.equals(str4));System.out.println(str2.equals(str3));}}Java语言基础•106falsetruefalset
ruetruetrue运行结果分析:比较操作符”==”:不管对那种方式产生的字符串对象,都是比较两个对象的内存地址,仅在地址相同时,结果才为true。equals方法:比较的是两个字符串对象的内容,两个字符串对
象无论地址是否相同,只要内容相同结果都为true。所以,当要对两个字符串对象的内容进行比较时,建议最好使用equals方法。Java语言基础•107Java的String类中包含有50多个方法来实现字符
串的各种操作2.串的连接与求串长方法(1)字符串的连接Stringconcat(Stringstr)类似”+”运算,将字符串str连接到当前字符串的后面。例如:StringstrA="Thisisa";StringstrB="Javaprogram";Stri
ngstrC=strA.concat(strB);ThisisaJavaprogram操作。Java语言基础•108(2)求字符串的长度intlength()功能:返回字符串的长度,即字符串中Unicode字符的数目例如:StringstrB="他
们是学生";intlenB=strB.length();lenB=5◼Unicode(中文:万国码、国际码、统一码、单一码)是计算机科学领域里的一项业界标准。它对世界上大部分的文字系统进行了整理、编码,使得电脑可以用更为简单的方式
来呈现和处理文字。Java语言基础•1093.比较字符串的方法比较字符串可以利用String类提供的下列方法:(1)equals()与equalsIgnoreCase()equals()方法在两个字符串内容相等的时候返回true,否则返回false。equals
IgnoreCase()方法功能和equals()方法相似,不同的地方在于equalsIgnoreCase方法将忽略字母大小写的区别。(2)compareTo()判断一个字符串是大于、等于还是小于另一个字符串,对应这三种情况将分别返回一个大于
0、等于0及小于0的整数。Java语言基础•1104.求子串的方法(1)substring()substring方法可以从一个大的字符串中提取一个子串,该方法有两种常用的形式:Stringsubstring(intbegpos)//从begpos位置起,取出剩余的字符串。Stri
ngsubstring(intbegpos,intendpos)//该子串从begpos位置起,至endpos-1为止。注意:字符串的第1个字符的位置为0,第2个字符的位置为1,其余依此类推。Java语言基础•111(2)s
tartsWith()与endsWith()功能:判断字符串的前缀和后缀有两种方法形式如下:booleanstartsWith(Stringprefix)判断当前字符串的前缀是否和prefix一致。booleanendsWith(Stringsuff
ix)判断当前字符串的后缀是否和suffix一致。Java语言基础•112例2.28compareTo与求子字符串importjava.io.*;publicclasssubstr{publicstaticvoidmain(String[]
args){StringstrA="Theyarestudents";StringstrB="他们是学生";StringstrC=strA.concat(strB);System.out.println(strC);System.o
ut.println(strA.compareTo(strB));Java语言基础•1135.查找与替换的方法(1)charAt()charcharAt(intindex)//该方法返回字符串中第index个字符。(2)indexOf()与
lastIndexOf()intindexOf(intch)功能:返回字符ch在字符串中第一次出现的位置;intindexOf(intch,intpos)功能:同上,但比较位置是从pos位置开始向后进行的;intlastIndexOf(intch)功能
:返回字符ch在字符串中最后一次出现的位置;intlastIndexOf(intch,intpos)功能:同上,但比较位置是从pos位置开始向前进行的;Java语言基础•114System.out.println(strB.compa
reTo(strC));System.out.println("strA.substring(6):"+strA.substring(6));System.out.println(“strA.substring(6,12):"
+strA.substring(6,12));System.out.println(strC.startsWith(strA));System.out.println(strC.startsWith("是学生"
)+""+strC.endsWith("是学生"));}}Java语言基础•115例2.29求每一个位置上的字符与字符替换示例设计思路:利用s.length()求出s串的串长,通过s.charAt(i)取出位置i上的字符,配合循环即可求每一个位置上的
字符。通过不同的replace方法,可实现不同的替换效果。Java语言基础•116publicclasscharAtOp{publicstaticvoidmain(Stringargs[]){Strings="Hi,你好!";intl=s.length();System.out.print
ln("字符串s为:"+s);System.out.println("字符串s的长度为:"+l);for(inti=0;i<l;i++){charc=s.charAt(i);System.out.println("s中的第"+i+"个字符是:"+c);}Java语言基础•117(3)rep
lace()字符串中字符、子字符串的替换用replace()方法,形式有:Stringreplace(charoldChar,charnewChar)用字符newChar替换当前字符串中所有的字符oldC
har。StringreplaceFirst(Stringsrt1,Stringsrt2)用字符串srt2的内容替换当前字符串中遇到的第一个srt1子串。StringreplaceAll(Stringsrt1
,Stringsrt2)用字符串srt2的内容替换当前字符串中遇到的所有srt1子串。Java语言基础•118Strings0="Iama学生,Iama男生。";Strings1=s0.replace('','_');Strings2=s0.replaceFir
st("Iama","Weare");Strings3=s0.replaceAll("Iama","我是");System.out.println("s0="+s0);System.out.println("s1
="+s1);System.out.println("s2="+s2);System.out.println("s3="+s3);}}Java语言基础•1196.转换与去除多余空格方法(1)toLowerCase()与toUpperCase()功能:字符串中字符大小写的转换形式为:Stri
ngtoLowerCase()将字符串中所有字符转换成小写。StringtoUpperCase()将字符串中所有字符转换成大写。(2)trim()要去除字符串中多余的空格,可使用trim()方法,形式为:Stringtrim()功能:去掉字符
串中开头和结尾的空格。但字符串中间的空格保留。Java语言基础•120二、字符串变量与StringBuffer类String类型的字符串一旦创建之后,其长度和内容就不再改变,这也是称其为字符串常量的原因。相反,与之对等的StringBuf
fer类表示了可以扩充、可以修改的字符串,或称为字符串变量。Java语言基础•1211.创建StringBuffer类对象以下是常用的StringBuffer类构造方法:(1)publicStringBuffer()功能:
构造一个空字符串,长度为16。(2)publicStringBuffer(intlength)功能:构造一个长度为length的空字符串的缓冲区。(3)publicStringBuffer(Stringstr)功能:构造一个内容为
str的字符串。Java语言基础•1222.StringBuffer类对象的常用操作及方法(1)分配/获取字符串的长度voidsetLength(intnewLength)intlength()(2)分配/获取字符串的
容量voidensureCapacity(intminCapacity)intcapacity()(3)字符串的检索和子串voidgetChars(intsrcBegin,intsrcEnd,char[]dst,intdstBegin)取字符串从当前字符串中取出从src
Begin位置起至srcEnd-1止的子字符串。存储到dst数组中自dstBegin位置开始的空间中。Java语言基础•123Stringsubstring(intbegpos)从当前字符串中取出从begpos位置起至末尾的子
字符串。Stringsubstring(intbegpos,intendpos)从当前字符串中取出从begpos位置起至endpos-1止的子字符串。Java语言基础•124(4)StringBuffer类对象的扩充与字符串类型转换Stri
ngBuffer类提供两组方法用来扩充StringBuffer对象所包含的字符,并在扩充的同时进行字符串类型转换。它们分别是:①publicStringBufferappend(Objectobj)append方法将指定的参数对象转化为字符串后,将其附加在原来的String
Buffer对象之后,并返回新的StringBuffer对象。附加的的参数对象可以是各种数据类型的,如int、char、String、double等。②publicStringBufferinsert(int插入位置,参数对象类型,参数对象名)该方法将指定的参数对象转化为字符串后,将其插入在
原来的StringBuffer对象中指定的位置,并返回新的StringBuffer对象。Java语言基础•125例2.30StringBuffe类字符串常用操作示例1设计思路:通过对append方法和insert方法的调用,示例StringBuffer类字符串的扩充与类型转换。还示例了length
与capacity的不同。Java语言基础•126publicclassStringBufferOP1{publicstaticvoidmain(Stringargs[]){StringBufferstrBuff1=newStringBuffer();
strBuff1.append(1f);strBuff1.append("他是天才,");strBuff1.append(100);strBuff1.append("%的天才。");System.out.println(strBuff1);System.out.println(
"");StringBufferstrBuff2=newStringBuffer("Java编程高手!");Java语言基础•127System.out.println(strBuff2);strBuff2.insert(0,2);System.out.println(strBuff2);strB
uff2.insert(1,'、');System.out.println(strBuff2);strBuff2.insert(2,"我要做");System.out.println(strBuff2);System.out.println("");System.o
ut.println("strBuff2.length()="+strBuff2.length());System.out.println("strBuff2.capacity()="+strBuff2.capacity());}}Java语言基础•128(5)字符串的其
它修改方法StringBufferdelete(intbegpos,intendpos)除当前StringBuffer对象中自begpos位置起,到endpos位置止的子字符串。StringBufferdeleteCharAt(intpos)删除当前Strin
gBuffer对象中pos位置处的字符。StringBufferreverse()反转当前字符串。StringBufferreplace(intbegpos,intendpos,Stringstr)将当前StringBuffer对象中自begpos位置起,到endpos
位置止的子字符串,替换为指定的字符串str。voidsetCharAt(intpos,charch)将当前StringBuffer对象中pos位置处的字符替换为指定的字符ch。Java语言基础•1292.5项目
拓展1.输出字符图使用各种符号和转义符号绘制一幅房屋的图画Java语言基础•130publicclassHouse{publicstaticvoidmain(Stringargs[]){System.out.println("_______________
_");System.out.println("/\\\\");System.out.println("|−−−−|−−−−−−−−−−-|");System.out.println("|||");System.ou
t.println("|#|##|");System.out.println("||__|");System.out.println("|||\"||");System.out.println("|____|____|__|______|");System
.out.println("\\-\\");System.out.println("\\-\\");System.out.println("\\-\\");}}Java语言基础•1312.输出倒三角形在本程序中,使用符号打印倒三角型图形publicclass
Daosanjiao{publicstaticvoidmain(Stringargs[]){System.out.println("@@@@@@@\n@@@@@\n@@@\n@");}}Java语言基础•1323.小写字母转换为大写字母编写一个程序,键盘输入一个小写字母,然后输出该字
母的大写形式Java语言基础•133importjava.io.*;publicclassDaxie{publicstaticvoidmain(Stringargs[]){ints=0;charl;System.out.print("请键入一个小写形式的字母:");tr
y{s=System.in.read();}catch(IOExceptione){}l=(char)(s-32);System.out.println("所键入字符的大写形式是:"+l);}}Java语言基础•1344.变量值互换编写一个程序,在屏幕上显示变量i和j的值,然后使用赋值语句将它们的
值互换,并再次显示在屏幕上Java语言基础•135publicclassHuhuan{publicstaticvoidmain(Stringargs[]){inti=1000,k=5000,temp;System.out.printl
n("互换前i="+i+"k="+k);temp=i;i=k;k=temp;System.out.println("互换后i="+i+"k="+k);}}Java语言基础•1365、编写和运行一个程序,用来统计一段文字的
字数,以及某个指定汉字、词组或者标点符号出现的次数Java语言基础•137importjava.io.*;publicclassZishu{publicstaticvoidmain(Stringargs[]){intti
me=0;Strings="",a=Stringtext2=text1;System.out.println(text1);System.out.println();System.out.printl
n("文章共有"+text1.length()+"个汉字和标点符号。");System.out.println("请输入要查找的汉字或者标点符号:");"";Java语言基础•138try{Buffere
dReaderinput=newBufferedReader(newInputStreamReader(System.in));s=input.readLine();}catch(IOExceptione){}inti=s.length()
;while(text2.length()>s.length()){a=text2.substring(0,i);if(s.equalsIgnoreCase(a))time++;text2=text2.substring(1);}Java语言基础•139if(s.equalsIgno
reCase(text2))time++;if(time==0)System.out.println("没有找到文字"+s);elseSystem.out.println("一共找到"+time+"个“"+s+"”");}}Java语言基础•140本章小结通过本章的学习,读者应该了解介绍Java的
运算符,表达式的使用和求值顺序,掌握Java程序的注释、标识符、基本的数据类型,掌握顺序、分支和循环结构程序编写的方法,掌握if语句、switch语句、while语句、do-while语句和for语句的使用方法,学
会灵活使用break和continue语句和数组有关方面的知识,要清楚的了解变量的类型和变量的作用域,为今后的学习打下扎实的基础。Java语言基础•141