java源程序.docx
- 文档编号:8917468
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:24
- 大小:24.10KB
java源程序.docx
《java源程序.docx》由会员分享,可在线阅读,更多相关《java源程序.docx(24页珍藏版)》请在冰豆网上搜索。
java源程序
第三章Java编程与实例
例3.1实例分析变量、常量、字符串和数组的声明、创建及初始化(源程序L3_1.java)。
//变量、常量、字符串和数组的声明、创建及初始化实例分析
publicclassL3_1{
publicstaticvoidmain(Stringargs[]){//程序入口
finalintCONST_NUM=5;//定义一个常量
byteb=3;//定义原始数据类型的变量
shorts=5;
inti=12;
longl=35L;
floatf=1.50f;
doubled=5.68d;
booleanbool=true;
charch='a';//定义字符型变量
intc=ch;//char型变量值可以赋给int型变量
//无需强制类型转换,实际上是把char型变量的ASCII码值赋给int型变量
Strings1="HelloWorld!
";//定义一个字符串
ints1_length=s1.length();//获得s1字符串的长度
String[]str={"Shanghai","Beijing","Wuhan","Guangzhou","Shenzhen"};
//在同一行中定义一个字符串数组,并初始化数组元素
//无需说明数组的长度,系统会自动计算并分配数组所需要的内存空间
System.out.println("CONST_NUM="+CONST_NUM+"\t"+
"b="+b+"\t"+"s="+s+"\t"+
"i="+i+"\t"+"l="+l+"\t"+
"f="+f+"\t"+"d="+d);
//在显示器上输出各个变量的值
System.out.println("bool="+bool);
System.out.println("ch="+ch+"\t"+"c="+c);
//输出char型变量的值,以及它对应的ASCII码
System.out.println("s1="+s1+"\t"+"s1_length="+s1_length);
//输出字符串的内容及其长度
for(intj=0;j System.out.println("str["+j+"]="+str[j]); } //使用for循环语句输出字符串数组的元素,length方法能够获得数组的长度 } } 运行结果: CONST_NUM=5b=3s=5i=12l=35f=1.5d=5.68 bool=true ch=ac=97 s1=HelloWorld! s1_length=12 str[0]=Shanghai str[1]=Beijing str[2]=Wuhan str[3]=Guangzhou str[4]=Shenzhen 程序分析: 该程序定义了一个名为L3_1的公共类,因此该源程序的文件名必须与公共类的名称相同,即为L3_1.java,而且要注意大小写一定要完全一致。 编辑好该源程序后,就可以在DOS环境下编译了,在DOS提示符后输入编译命令javacL3_1.java,如果源程序没有错误并被编译通过,在文件夹中会生成一个编译好的字节码文件L3_1.class,DOS提示符会重新显示出来,这时就可以运行该字节码文件了。 输入运行命令javaL3_1,这时会在屏幕上显示上面的运行结果。 例3.2综合实例分析: 在表达式中正确使用运算符(源程序L3_2.java) //表达式综合实例,在表达式中正确使用运算符 publicclassL3_2{ publicstaticvoidmain(Stringargs[]){ inti=1; //一元运算符中的自加和自减运算 System.out.println("i++="+(i++)+"\t"+"++i="+(++i)); System.out.println("i--="+(i--)+"\t"+"--i="+(--i)); intj=5/3;//两个整数相除,结果是整数 doublek=5.0/3.0;//两个浮点数相除,结果是浮点数 System.out.println("5/3="+j+"\t"+"5.0/3.0="+k); intp=5%3;//两个整数相除取余数,余数为整数 doubleq=5.5%3.2;//两个浮点数相除取余数,余数为浮点数 System.out.println("5%3="+p+"\t"+"5.5%3.2="+q); Strings1="Iam"; Strings2="astudent."; Strings3=s1+s2;//+运算符可以用在字符串连接运算中 System.out.println("s3=s1+s2="+s3); if(s1instanceofString){//判断s1是否是String类的实例 System.out.println("s1isaninstanceofStringclass"); } else{ System.out.println("siisnotaninstanceofStringcalss"); } //短路运算符的使用 if(! (5<0&&5/0>0)){//5<0为假,&&后面的条件将不再判断,因此也不抛出列外 System.out.println("&&isashort-circuitoperator"); } if(5>0||5/0>0){//5>0为真,||后面的条件将不再判断,因此也不抛出例外 System.out.println("||isashort-circuitoperator"); } booleanbool=true; inta=bool? 5: 3;//三元运算符,bool为真,则a=5;否则,a=3 System.out.println("a=bool? 5: 3"+"\t"+"a="+a); for(intx=0;x<5;x++){ x+=2;//赋值运算符的使用,等价于x=x+2 System.out.print("x="+x+"\t"); } } } 运行结果: i++=1++i=3 i--=3--i=1 5/3=15.0/3.0=1.6666666666666667 5%3=25.5%3.2=2.3 s3=s1+s2=Iamastudent. s1isaninstanceofStringclass &&isashort-circuitoperator ||isashort-circuitoperator a=bool? 5: 3a=5 x=2x=5 例3.3判断某一年是否为闰年(源程序L3_3.java。 ) 闰年的条件是符合下面二者之一: 1能被4整除,但不能被100整除; 2能被4整除,又能被100整除。 源程序如下: //判断某一年是否为闰年 importjava.io.*; publicclassL3_3{ publicstaticvoidmain(Stringargs[])throwsIOException{ //从键盘读入一个整型数据 intyear=0; System.out.print("pleaseenteranintegernumberastheyearnumber: "); BufferedReaderin=newBufferedReader(newInputStreamReader(System.in)); Strings=in.readLine(); year=Integer.parseInt(s); //方法一: 用逻辑表达式判断闰年的所有成立条件 //使用了一个if-else语句 if((year%4==0&&year%100! =0)||(year%400==0)){ System.out.println(year+"isaleapyear."); } else{ System.out.println(year+"isnotaleapyear."); } //方法二: 使用了if-else语句的特殊形式,对多个条件分支进行选择 //leap是一个标志,某一年是闰年,就标志为true,否则为false booleanleap; if(year%4! =0) leap=false; elseif(year%100! =0) leap=true; elseif(year%400! =0) leap=false; else leap=true; if(leap==true){ System.out.println(year+"isaleapyear."); } else{ System.out.println(year+"isnotaleapyear."); } //方法三: if-else语句的嵌套使用 //else语句不能单独使用,只能和最近的if语句配套使用 //使用{}对if-else进行匹配 if(year%4==0){ if(year%100==0){ if(year%400==0) leap=true; else leap=false; } else leap=false; } else leap=false; if(leap==true){ System.out.println(year+"isaleapyear."); } else{ System.out.println(year+"isnotaleapyear."); } } } 运行结果: pleaseenteranintegernumberastheyearnumber: 2000 2000isaleapyear. 2000isaleapyear. 2000isaleapyear. 程序分析: 本例中使用了if-else语句的三种不同形式实现了同一功能,即判断某一年是否为闰年。 程序前面的几行是从键盘读取一个年份的数字,其中用到了数据流的概念,在这里读者可以不必深究。 throws语句是用来处理例外的,后面的章节会陆续讲到。 例3.4根据输入的考试成绩等级打印出百分制分数段,A为85~100,B为70~84,C为60~69,D为60分以下。 (源程序L3_4.java)。 //根据考试成绩的等级打印百分制分数段 importjava.io.*; publicclassL3_4{ publicstaticvoidmain(Stringargs[])throwsIOException{ //从键盘读取考试成绩的等级grade chargrade; System.out.print("pleaseenterthegradelevel(A~D): "); grade=(char)System.in.read();//从键盘读入一个字符 //第一种情况 System.out.println("\n****firstsituation****"); switch(grade){ case'A': System.out.println(grade+"is85~100."); break; case'B': System.out.println(grade+"is70~85."); break; case'C': System.out.println(grade+"is60~69."); break; case'D': System.out.println(grade+"is<60."); break; default: System.out.println("inputerror! "); } //第二种情况 System.out.println("\n****secondsituation****"); switch(grade){ case'A': System.out.println(grade+"is85~100."); case'B': System.out.println(grade+"is70~85."); case'C': System.out.println(grade+"is60~69."); case'D': System.out.println(grade+"is<60."); default: System.out.println("inputerror! "); } //第三种情况 System.out.println("\n****thirdsituation****"); switch(grade){ case'A': case'B': case'C': System.out.println(grade+"is>=60."); break; case'D': System.out.println(grade+"is<60."); break; default: System.out.println("inputerror! "); } } } 运行结果: pleaseenterthegradelevel(A~D): C ****firstsituation**** Cis60~69. ****secondsituation**** Cis60~69. Cis<60. inputerror! ****thirdsituation**** Cis>=60. 程序分析: 本例是对switch多分支条件语句的使用,该语句根据表达式的值执行多个操作中的一个。 其中switch后面表达式的值一定要是一个常量,而且只能是char型和除long以外的整数数据。 Switch语句把表达式返回的值与每一个case子句中的值相比,如果匹配成功,则执行该case子句后面的操作。 例3.5用三种循环语句实现从1到100的求和运算。 (源程序L3_5.java。 ) //分别用三种循环语句求1~100的和 publicclassL3_5{ publicstaticvoidmain(Stringargs[]){ //while循环 System.out.println("\n****while循环****"); intn=100,sum=0;//初始化 while(n>0){//执行循环体的条件 sum+=n;//循环体 n--;//迭代部分 } System.out.println("sumis"+sum); //do-while循环 System.out.println("\n****do-while循环****"); n=0;sum=0;//初始化 do{ sum+=n;//循环体 n++;//迭代部分 }while(n<=100);//执行循环体的条件 System.out.println("sumis"+sum); //for循环 System.out.println("\n****for循环****"); sum=0;//初始化 for(inti=1;i<=100;i++){//初始化、执行循环体的条件、迭代部分 sum+=i;//循环体 } System.out.println("sumis"+sum); } } 运行结果: ****while循环**** sumis5050 ****do-while循环**** sumis5050 ****for循环**** sumis5050 程序分析: 本例分别用三种方法实现了从1到100的求和运算。 从程序的源代码注释中,可以明确的看出每种循环语句包含的四部分内容。 例3.6用循环的嵌套求出1~100内的所有素数,并以每行10个的格式显示出来。 素数就是只能被1和它本身整除的数。 (源程序L3_6.java)。 //求1~100之间的所有素数 publicclassL3_6{ publicstaticvoidmain(Stringargs[]){ System.out.println("1到100之间所有的素数"); intn=0; outer_loop: for(inti=3;i<100;i+=2){//外层循环 for(intj=2;j if(i%j==0) //当条件不成立时,退出内层循环,执行外层循环 continueouter_loop; } //一行输出10个数字,大于10个换行输出 System.out.print(""+i); n++; if(n<10) continue;//当一行不满10个时,继续执行外层循环 //后面的语句并不执行 System.out.println();//换行 n=0; } System.out.println(); } } 运行结果: 1到100之间所有的素数 35711131719232931 37414347535961677173 79838997 程序分析: 在源程序中,外层循环用来选取要进行检测的数字,由于偶数肯定不是素数,所以增量为2。 在内层循环中用2到该数-1的整数去整除这个数字,如果能被其中的某个数字整除,则该数不是素数,此时用continue语句跳出内层循环,另外选一个数字来判定。 程序用outer_loop标志出了外层循环的位置,因此continue语句后面直接跟上outer_loop,表示回到外层循环。 在后面的格式化输出中,也用到了一个continue语句,由于这条语句本身就在外层循环中,因此无需明确指定要继续的是哪层循环,只写一个continue就能实现功能了,如果明确写出,会更加清晰明了。 例3.7举例说明对象、类和方法的使用。 (源程序L3_7.java) //对象、类和方法的使用 //定义一个Point类 classPoint{ intx,y;//x,y是Point类的两个int型实例变量,作用域为整个类 Stringname="apoint";//name是Point类的一个字符串变量 Point(){//Point类的构造方法,与类同名,没有返回类型 x=0; y=0; } Point(intx,inty,Stringname){//Point类带参数的构造方法,重载了无参的Point方法 this.x=x;//this是一个特殊的实例值,在实例方法内指向当前的对象 this.y=y;//点操作符(.)用来引用一个对象的实例变量或实例方法 this.name=name; } intgetX(){//实例方法的定义,返回类型int型的值 returnx;//实例方法可以直接访问实例变量 } intgetY(){ returny; } voidmove(intnewX,intnewY){//实例方法,返回类型为空,给原始点一个新的坐标 x=newX; y=newY; } PointnewPoint(Stringname){//实例方法,返回类型为Point型 //用new操作符创建一个Point类的对象 PointnewP=newPoint(-x,-y,name);//newP即为Point类的一个对象 //在实例方法中可以直接访问同一个类中的实例变量和实例方法 returnnewP;//返回原始点的对称点 } booleanequal(intx,inty){//实例方法,返回一个布尔值 if(this.x==x&&this.y==y) returntrue; else returnfalse; } voidprint(){//实例方法,实现屏幕输出,输出点的坐标 System.out.println(name+": x="+x+"y="+y); } } //创建程序的公共类和main方法 publicclassL3_7{ publicstaticvoidmain(Stringargs[]){ //创建Point类的对象p,并调用无参构造方法给对象初始化 Pointp=newPoint(); p.print();//用点操作符调用对象的方法,输出点的坐标 p.move(50,50);//将原始点移动到一个新的坐标 System.out.println("****aftermoving****"); System.out.println("Gexxandydirectly"); System.out.println("x="+p.x+"y="+p.y);//输出移动后的坐标 System.out.println("orGetxandybycallingmethod"); System.out.println("x="+p.getY()+"y="+p.getY());//调用对象的方法返回点的坐标 if(p.equal(50,50)) System.out.println("Ilikethispoint! "); else System.out.println("Ihateit! "); //调用newPoint方法创建新对象,并输出点的坐标 p.newPoint("anewpoint").print(); //用new操作符生成了一个无名对象,并用带参构造方法进行初始化 //用点操作符调用该无名对象的print方法,输出点的坐标 newPoint(10,15,"anothernewpoint").print(); } } 运行结果: apoint: x=0y=0 ****aftermoving****
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 源程序
![提示](https://static.bdocx.com/images/bang_tan.gif)