}
}
注意:
(1)获得数组元素的个数:
数组名.length;
(2)一个整形数组若仅仅采用new分配空间,而没有对其赋值,那么每个元素的值是0
注意:
Java数组名是一个引用,当将一个数组名赋值给另一个数组时,实际上是名字的复制
2.5Java中的参数传递方式
Java的参数传递的形式有两种:
基本类型按值传递,对象类型按引用传递;
通过return语句从方法中返回时,基本类型总是以值的方式返回,而对象总是以引用方式返回。
例如程序2-8:
classtest{intx;}
publicclassTest_Paras{
statictestfun(testo,inty){
o.x=20;
y=1;
returno;
}
publicstaticvoidmain(String[]args){
testobj1,obj2;
intVal=3;
obj1=newtest();
obj1.x=100;
obj2=fun(obj1,Val);
System.out.println(obj1.x+""+obj2.x+""+Val);
}
}
2.6Java的运算符
主要包括:
算术运算符、关系运算符、逻辑运算符、位运算符和三元条件运算符。
2.6.1算术运算符
算术运算符:
+、-、*、/、%、++和--,与C/C++基本相同。
%运算符不但可以对整形数据运算,而且可以对浮点型数据运算。
例如:
3.14%2.5的值约等于0.64;
隠式数据类型转换:
当整型与浮点型数据进行混合运算时,表达式中的数据类型会进行相应的自动转换,规则为:
byte->short->int->long->float->double。
这种转换规则也适应于赋值语句,当赋值符左右两侧变量类型不一致时,只要转换过程中不丢失数据,便进行自动转换。
classnumber{intx;}
publicclassrelationalOperator{
publicstaticvoidmain(Stringargs[]){
numbern1,n2;
n1=newnumber();n2=newnumber();
n1.x=1;n2.x=1;
if(n1.x==n2.x)
System.out.println("对象的数据成员x相等!
");
if(n1==n2)
System.out.println("n1和n2是一个对象!
");
else
System.out.println("n1和n2不是一个对象!
");
}
}
2.6.2关系运算符
关系运算符不能同其它类型的变量一同参与运算,例如假设a,b,c是三个整形的变量,那么a=b==c是正确OR错误?
;
关系运算符用于对象时,是判别两个引用是否代表同一个对象。
而不是判断两个引用所指向的对象是否同属一个类。
2.6.3逻辑运算符
逻辑运算符有&&、||和!
,分别是与、或和非。
运算结果是true或false;
逻辑运算有求值“短路”现象,例如程序2-11:
publicclassshortCut{
staticbooleantestOne(intx){
System.out.println(x+"<"+1+""+(x<1));
returnx<1;
}
staticbooleantestTwo(intx){
System.out.println(x+"<"+1+""+(x<2));
returnx<2;
}
publicstaticvoidmain(String[]args){
if(testOne(6)&&testTwo
(1))
System.out.println("表达式为真");
else
System.out.println("表达式为假");
}
}
2.6.4位运算符
位运算符:
&、|、^、~、<<、>>,分别称为位与、或、异或、左移、右移;
Java引入一个专门用于逻辑右移运算符>>>,它采用了所谓的零扩展技术,不论原值是正或负,一律在高位补0。
例如:
inta=-2,b;
b=a>>>30;
2.6.5三元条件运算符
语法格式:
(exp)?
(exp1):
(exp2);
Java要求:
(exp1)与(exp2)必须同类型。
2.6.6“+”运算符
Java对“+”进行了重载,可以将任何类型的对象(包含原子类型)转化为String类型。
例如:
intx=1;
charch='A';
doubled=9.8;
System.out.println("Result:
"+x+ch+9.8);
课堂练习:
课外练习(作业):
P323、4、6题。
第3章控制语句
教学目的要求
Ø了解Java程序的结构,学习使用各种语句结构来控制程序的流程,完成程序的功能任务。
主要内容
ØJava的分支语句;
Ø循环控制语句;
Øbreak和continue语句;
Ø带标号的break和continue语句。
重点内容
ØJava的分支语句;
Ø循环控制语句;
Øbreak和continue语句;
难点内容
Ø循环控制语句;
Øbreak和continue语句;
课时分配
3课时
教学方法
讲授法、演示法、对比法、实验验证法
讲授内容提要
3.1分支语句
if-else语句;
switch-case语句。
3.1.1if语句
if语句的语法格式同C/C++;
条件表达式必须是布尔类型,例如:
下面的写法在C/C++中是合法的,但在Java中却是非法的:
inti=10;
if(i)
...
程序3-1描述了用applet从文本框获取数据,然后将比较的结果显示出来。
//程序3-1
importjava.awt.*;
importjava.applet.*;
publicclasscompareNumbersextendsApplet{
Labellab1,lab2;
TextFieldinput1,input2;
intnum1,num2;
publicvoidinit(){
lab1=newLabel("输入第1个整数");
input1=newTextField(10);
lab2=newLabel("输入第2个整数");
input2=newTextField(10);
add(lab1);
add(input1);
add(lab2);
add(input2);
}
publicbooleanaction(Evente,Objecto){
if(e.target==input1||e.target==input2){
num1=Integer.parseInt(input1.getText());
num2=Integer.parseInt(input2.getText());
if(num1showStatus(num1+"<"+num2);
elseif(num1>num2)
showStatus(num1+">"+num2);
elseshowStatus(num1+"=="+num2);
}
returntrue;
}
}
3.1.2switch语句
switch语句的语法结构同C/C++;
switch后面的表达式类型必须是字符类型或整形;
case后面的常量不能重复;
程序3-3采用小程序实现将学生的百分制成绩转换为优、良,中、及格和不通过五个等级:
//程序3-3
importjava.awt.*;
importjava.applet.*;
publicclassscoreConvertextendsApplet{
Labelprompt;
TextFieldinput;
intExcellent,Good,Middle,Pass,Failure;
publicvoidinit(){
prompt=newLabel("输入成绩");
input=newTextField
(2);
add(prompt);
add(input);
}
publicvoidpaint(Graphicsg){
g.drawString("各等级的人数:
",25,40);
g.drawString("优秀:
"+Excellent,25,55);
g.drawString("良好:
"+Good,25,70);
g.drawString("中等:
"+Middle,25,85);
g.drawString("及格:
"+Pass,25,100);
g.drawString("不通过:
"+Failure,25,115);
}
publicbooleanaction(Evente,Objecto){
intscore=Integer.parseInt(input.getText());
showStatus("");input.setText("");
switch(score/10){
case10:
case9:
Excellent++;break;
case8:
Good++;break;
case7:
Middle++;break;
case6:
Pass++;break;
case5:
case4:
case3:
case2:
case1:
case0:
Failure++;break;
default:
showStatus("输入有误,重新输入!
");
}
repaint();
returntrue;
}
}
程序3-3需要注意的地方
在action()方法中调用的repaint()方法,是一个系统方法,它具有自动调用paint()方法的能力,从而实现对网页的刷新。
3.2循环控制语句
Java中的循环控制语句有三种,分别是:
while,do-while和for语句;
循环体内的语句会反复执行,直到控制布尔表达式的值变为false为止。
3.2.1while语句
while语句格式:
while(Boolean-Expression)
StatementS
程序示例3-4略
3.2.2do-while语句
do-while语句的语法格式如下:
do{
Statement
}while(Boolean-Expression);
程序3-5如下:
//产生一个大于0.9的随机数为止
publicclassGenerateDoubleNumbers{
publicstaticvoidmain(Stringargs[]){
doubled;
do{
d=Math.random();
System.out.println(d);
}while(d<0.9);
}
}
3.2.3 for语句
for语句语法格式如下:
for(ForInitopt;Boolean-Expression;ForUpdateopt)
Statement
//程序3-6输出一个*三角形
publicclassprintGraphicsextendsApplet{
publicvoidpaint(Graphicsg){
intxpos,ypos=0;
for(introw=6;row>=1;row--){
xpos