Java课件范例.docx
- 文档编号:8833806
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:38
- 大小:35.29KB
Java课件范例.docx
《Java课件范例.docx》由会员分享,可在线阅读,更多相关《Java课件范例.docx(38页珍藏版)》请在冰豆网上搜索。
Java课件范例
程序运行过程:
javac编译,java运行
例1-1FirstProgram.java
classTest{
publicstaticvoidmain(){
System.out.println("Hello,myfirstjavaprogram!
");
}
}
编译:
javacFirstProgram.java
错误:
FirstProgram.java:
1:
classTestispublic,shouldbedeclaredinafilenamedTest.java
原因:
如果文件中只有一个类,则文件名必须与类名相同。
修改:
Test改为FirstProgram
编译:
javacFirstProgram.java
运行:
javaFirstProgram
错误:
Exceptioninthread"main"java.lang.NoSuchMethodError:
main
原因:
程序的入口函数声明必须为publicstaticvoidmain(Stringargs[])。
修改:
第二行改为publicstaticvoidmain(Stringargs[]){
编译:
javacFirstProgram.java
运行:
javaFirstProgram
结果:
Hello,myfirstjavaprogram!
例1-2Another.java
修改FirstProgram.java的代码为:
classFirstProgram{
publicstaticvoidmain(Stringargs[]){
Anotheranother=newAnother();
another.say();
}
}
publicclassAnother{
publicvoidsay(){
System.out.println("Anotherone.");
}
}
编译:
javacFirstProgram.java
错误:
FirstProgram.java:
7:
classAnotherispublic,shouldbedeclaredinafilenamed
Another.java
publicclassAnother{
^
1error
原因:
文件中如果有两个以上的类,则类名必须与其中的public类的类名一致。
在没有public类时,则必须与其中任意一个类名一致。
修改:
文件名改为Another.java(或删除public)
编译:
javacAnother.java
运行:
javaAnother
错误:
Exceptioninthread"main"java.lang.NoSuchMethodError:
main
原因:
javaAnother的含义为,程序从Another类的main方法开始运行,但程序的Another类中并没有main方法。
运行:
javaFirstProgram
结果:
Anotherone.
例1-3FirstAppliet.javaFirstApplet.html
publicclassFirstApplet{
publicvoidpaint(Graphicsg){
g.setColor(Color.blue);
g.drawString("Java是一门很优秀的语言",12,30);
g.setColor(Color.red);
g.drawString("我一定认真学习Java",22,56);
}
}
编译:
javacFirstApplet.java
错误:
FirstApplet.java:
2:
cannotfindsymbol
symbol:
classGraphics
location:
classFirstApplet
publicvoidpaint(Graphicsg){
……
原因:
无法识别Graphics类,没有引入相关的类包。
修改:
添加importjava.applet.*;
importjava.awt.*;
编译:
javacFirstApplet.java
运行:
appletviewerFirstApplet.html
错误:
java.lang.ClassCastException:
FirstApplet
atsun.applet.AppletPanel.createApplet(AppletPanel.java:
710)
atsun.applet.AppletPanel.runLoader(AppletPanel.java:
639)
atsun.applet.AppletPanel.run(AppletPanel.java:
319)
atjava.lang.Thread.run(Thread.java:
595)
原因:
该类不是一个Applet,没有声明为Applet的子类。
修改:
将类声明修改为publicclassFirstAppletextendsApplet
编译:
javacFirstApplet.java
运行:
appletviewerFirstApplet.html
结果:
关键字:
abstractbooleanbreakbytecasecatchcharclasscontinuedefault
dodoubleelseenumextendsfinalfinallyfloatforifimplements
importinstanceofintinterfacelongnativenewpackageprivateprotected
publicreturnshortstaticsuperswitchsynchronizedthisthrowthrows
transienttryvoidvolatilewhile
例2-1InputTest.java
importjava.util.*;
classInputTest{
publicstaticvoidmain(Stringargs[]){
Scannerreader=newScanner(System.in);
intn;
n=reader.nextInt();
System.out.println("n="+n);
}
}
编译:
javacInputTest.java
运行:
javaInputTest
输入:
455k
错误:
Exceptioninthread"main"java.util.InputMismatchException
atjava.util.Scanner.throwFor(Scanner.java:
909)
……
原因:
输入了不正确的数据,程序不够健壮
修改:
在语句n=reader.nextInt();前添加代码
while(!
reader.hasNextInt())
……
修改后的代码:
importjava.util.*;
classInputTest{
publicstaticvoidmain(Stringargs[]){
Scannerreader=newScanner(System.in);
intn;
System.out.println("请输入一个整数:
");
while(!
reader.hasNextInt()){
reader.nextLine();
System.out.println("输入格式错误,请重新输入:
");
}
n=reader.nextInt();
System.out.println("输入的整数为:
"+n);
}
}
例2-2Division.java
importjava.util.*;
classDivision{
publicstaticvoidmain(Stringargs[]){
Scannerreader=newScanner(System.in);
inta,b;
doubleq;
System.out.println("请输入被除数:
");
if(reader.hasNextInt())
a=reader.nextInt();
System.out.println("请输入除数:
");
if(reader.hasNextInt())
b=reader.nextInt();
q=a/b;
System.out.printf("除法算式及运算结果:
\n%10d/%d=%10.2f",a,b,q);
}
}
编译:
javacDivision.java
错误:
Division.java:
13:
错误:
可能尚未初始化变量a
q=a/b;
^
……
原因:
a、b只在分支语句的一个分支中获得初值,所以有可能并未被初始化
修改:
在定义变量a、b时便给出初值,或者在使用a、b变量之前的所有分支中都给a、b赋值
修改后的代码;
importjava.util.*;
classDivision{
publicstaticvoidmain(Stringargs[]){
inta,b;
doubleq;
System.out.println("请输入被除数:
");
a=input();
System.out.println("请输入除数:
");
b=input();
if(b==0){
System.out.println("被0除,非法运算!
");
return;
}
q=a/b;
System.out.printf("除法算式即运算结果:
\n%10d/%d=%10.2f",a,b,q);
}
privatestaticintinput(){
Scannerreader=newScanner(System.in);
while(!
reader.hasNextInt()){
reader.nextLine();
System.out.println("输入格式错误,请重新输入:
");
}
returnreader.nextInt();
}
}
依然存在的问题:
小数部分始终为0
原因:
整数的除法实现的是整除
修改:
将被除数a或除数b进行强制类型转换(q=(double)a/b;)
例2-3ArrayTest.java
classArrayTest{
publicstaticvoidmain(Stringargs[]){
System.out.println(b);
for(inti=0;i<=3;i++)
System.out.println(a[i]);
b=a;//b原来指向的内存空间将被回收
System.out.println(b.length);
}
}
编译:
javacArrayTest.java
错误:
ArrayTest.java:
5:
错误:
可能尚未初始化变量b
System.out.println(b);
^
原因:
引用变量必须使其指向一个对象或显示声明为null
修改:
添加语句b=newint[4];(或b=null)
运行:
javaArrayTest
错误:
Exceptioninthread"main"java.lang.ArrayIndexOutOfBoundsException:
3
atArrayTest.main(ArrayTest.java:
6)
原因:
数组越界
修改:
修改循环判断条件
注意:
b=a;执行后,b原来指向的内存空间将无任何引用变量指向它,JVM将会自动回收该内存空间;此外,此语句执行后,引用变量b与a相等,并且指向了相同的内存空间
例2-4Schedule.java
importjava.util.*;
classSchedule{
publicstaticvoidmain(Stringargs[]){
boolean[][]table=newboolean[7][5];
inti,j;
while(true){
System.out.println("请输入星期:
(1-7分别代表周一至周日)");
i=input();
System.out.println("请输入节次:
(1-5分别代表1、2节至9、10节各个时
间段)");
j=input();
if(i>0&&i<8&&j>0&&j<6){
table[i-1][j-1]=true;
}else
break;
}
System.out.println();
System.out.println("周一周二周三周四周五周六周日");
System.out.println();
for(i=0;i<10;i++){
System.out.printf("%2d",(i+1));
for(j=0;j<7;j++){
if(table[j][i/2])
System.out.print("Java");
else
System.out.print("");
}
System.out.println();
if(i%4==3)
System.out.println();
}
}
privatestaticintinput(){
Scannerreader=newScanner(System.in);
while(!
reader.hasNextInt()){
reader.nextLine();
System.out.println("输入格式错误,请重新输入:
");
}
returnreader.nextInt();
}
}
优先级:
postfix
expr++expr--
unary
++expr--expr+expr-expr~!
multiplicative
*/%
additive
+-
shift
<<>>>>>
relational
<><=>=instanceof
equality
==!
=
bitwiseAND
&
bitwiseexclusiveOR
^
bitwiseinclusiveOR
|
logicalAND
&&
logicalOR
||
ternary
?
:
assignment
=+=-=*=/=%=&=^=|=<<=>>=>>>=
例3-1OperatorTest.java
classOperatorTest{
publicstaticvoidmain(Stringargs[]){
inta=3,b=4,c=5,d=6,m=7,n=8;
intx=64,arr[]=newint[8];
longy=-0x1000000000L,z=4;
booleanflag;
flag=a>3&&b-->4;
flag=++c>5||++d>6;
flag=m==7|++n==8;
x>>=33;
y>>=33;
z>>=65;
System.out.printf("a=%d,b=%d;c=%d,d=%d,m=%d,n=%d\n",a,b,c,d,m,n);
System.out.printf("x=%d,y=%d,z=%d,x^z=%d\n",x,y,z,x^z);
System.out.println(arrinstanceofint[]);
}
}
例3-2ControlTest.java
importjava.util.*;
publicclassControlTest{
publicstaticvoidmain(Stringargs[]){
System.out.println("请输入一个整数:
");
intn=input();
for(inti=0;i if(i%2==0) continue; if(i%n==6)//(替换6为7) break; System.out.println("i="+i); } } privatestaticintinput(){ Scannerreader=newScanner(System.in); while(! reader.hasNextInt()){ reader.nextLine(); System.out.println("输入格式错误,请重新输入: "); } returnreader.nextInt(); } } 例4-1Circle.java finalstaticdoublePI; classCircle{ PI=3.14; doubler; doublecircumference(){ return2*PI*r;//实例方法可以访问类变量 } doublearea(){ returnPI*r*r; } } 编译错误: Circle.java: 1: 需要为class、interface或enum finalstaticdoublePI; ^ Circle.java: 3: 需要<标识符> PI=3.14; ^ 原因: 类定义之外不能有任何语句;类体内,方法体外不允许有除成员变量定义外的任何语句; 修改: classCircle{ finalstaticdoublePI=3.14; …… 例4-2CircleTest.java classCircleTest{ publicstaticvoidmain(Stringargs[]){ Circlec=newCircle(); System.out.printf("AreaoftheCircleis: %8.4f",c.area()); } } 编译运行正确: 原因: 类的成员变量可不初始化——Circle类的r变量 类有默认的构造方法(不带任何参数)——Circlec=newCircle(); Ø为Circle添加构造方法: Circle(doubler){ this.r=r;//形参r与成员变量r重名,必须使用this访问 } 运行错误: Exceptioninthread"main"java.lang.NoSuchMethodError: Circle: method notfoundatCircleTest.main(CircleTest.java: 3) 原因: 添加新的构造方法后,则默认的构造方法失效 修改: Circlec=newCircle(3); Ø在CircleTest类的main方法中添加以下代码: Circlec1=null; System.out.printf("PIis: %8.4f",c1.PI);//或Circle.PI 编译运行正确: 原因: 类变量的初始化不需要该类的任何实例存在 Ø在Circle类中添加方法: staticvoidsetPI(doublepi){ PI=pi; } 编译错误: Circle.java: 19: 无法为最终变量PI指定值 PI=pi; ^ Circle.java: 23: 无法从静态上下文中引用非静态变量this this.r=r; ^ 原因: final常量的值无法更改,静态方法不能访问实例变量。 修改: 删除PI的final定义以及setPI方法的static定义 Ø修改CircleTest类的main方法: Circlec1=null; System.out.printf("PIis: %8.4f\n",c1.PI); c1.setPI(3.1415926); Circlec=newCircle(3); System.out.printf("AreaoftheCircleis: %8.4f\n",c.area()); 运行结果: PIis: 3.1400 AreaoftheCircleis: 28.2743 原因: Circle类的类变量PI已经发生改变,改变对所有Circle实例均有效 例4-3SomeThing.java classSomeThing{ intx; inty; voidmove(intx,inty){ this.x=x; this.y=y; } } 以下那些形式的重载有效? booleanmove(intx,inty){ booleanflag=(this.x==x)&&(this.y==y); this.x=x; this.y=y; returnflag; }//错误,仅返回值不同 voidmove(intwidth,intheight){ x+=width; y+=height; }//错误,仅变量名不同 voidmove(intdistance,booleandirection){ if(direction) x+=distance; else y+=distance; }//正确,参数类型不同 例4-4Card.java classCard{ intid; doublebalance; Card(intid,doublebalance){ this.id=id; this.balance
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 课件 范例