第六章 方法
1.方法的调用:a 对象引用后跟一点(.)操作符和方法名
b 类名后跟方法名(这种形式只适用于类的static方法)
2.将基本数据类型值转换为另一个基本数据类型时,java会提升较低的数据类型,如果这种转换不是提升,则可能改变数据的值。此外,把整型转换为浮点型再转换回整型可能会引入舍如误差。
3.实例分析:碰运气游戏。
import java.awt.*;//java抽象窗口工具包。其中含有创建和操纵图形用户界面所需的类和接口
import java.awt.event.*;/*java抽象窗口工具包。其中含有用于java.awt和javax.swing包中GUI构件的事件处理的类与接口*/
import javax.swing.*;/*java Swing GUI构件包,它含有支持可移植GUI的java Swing GUI构件的类与接口*/
public class Craps extends JApplet implements ActionListener{/*类Craps继承Japplet并实现ActionListener。一个类可以实现一个或几个接口。*/
final int won=0,lost=1,CON=2;/*final关键字声明常数变量,常数变量必须在使用前被初始化一次,并且不能被修改,又称命名常数或只读变量。*/
boolean firstRoll=true;
int sumofDice=0;
int mypoint=0;
int gameStatus=CON;
JLabel die1Label,die2Label,sumLabel,pointLabel;
JTextField firstDie,secondDie,sum,point;
JButton roll;
public void init()
{
Container c=getContentPane();
c.setLayout(new FlowLayout());/*使用Container的方法setLayout为applet的用户接口定义布局管理器。FlowLayout是最基本的布局管理器,GUI构件通过方法add按照从左到右的顺序放在面板上,当达到面板的边缘时,转到下一行。每一个Container一次只能有一个布局管理器*/
die1Label=new JLabel("Die1");
c.add(die1Label);
firstDie=new JTextField(10);
firstDie.setEditable(false);
c.add(firstDie);
die2Label=new JLabel("Die2");
c.add (die2Label);
secondDie=new JTextField(10);
secondDie.setEditable(false);
c.add (secondDie);
sumLabel=new JLabel("sum is");
c.add(sumLabel);
sum=new JTextField(10);
sum.setEditable(false);
c.add(sum);
pointLabel=new JLabel("point is");
c.add(pointLabel);
point=new JTextField(10);
point.setEditable(false);
c.add(point);
roll=new JButton("Roll Dice");
roll.addActionListener(this);//关键字this使applet引用自身,给该Button添加事件
c.add(roll);
}
public void actionPerformed(ActionEvent e)//当Button被触动时调用此方法
{
play();
}
public void play()
{
if (firstRoll){
sumofDice=rollDice();
switch(sumofDice){
case 7:case 11:
gameStatus=won;
point.setText("");
break;
case 2:case 3:case 12:
gameStatus=lost;
point.setText("");
break;
default:
gameStatus=CON;
mypoint=sumofDice;
point.setText(Integer.toString(mypoint));
firstRoll=false;
break;
}
}
else{
sumofDice=rollDice();
if(sumofDice==mypoint)
gameStatus=won;
else
if(sumofDice==7)
gameStatus=lost;
}
if(gameStatus==CON)
showStatus("Roll Again");
else{
if(gameStatus==won)
showStatus("player Wins."+
"Click Roll Dice to play again.");
else
showStatus("player lost."+
"Click Roll Dice to paly again.");
firstRoll=true;
}
}
public int rollDice()
{
int die1,die2,worksum;
die1=1+(int)(Math.random()*6);
die2=1+(int)(Math.random()*6);
worksum=die1+die2;
firstDie.setText(Integer.toString(die1));
secondDie.setText(Integer.toString(die2));
sum.setText(Integer.toString(worksum));
return worksum;
}
}
4.java可以定义几个同名的方法,只要这些方法具有不同的参数集合(参数的数量、类型和次序),这称为方法重载。重载的方法是根据署名(即方法名及其参数类型的组合),重载的方法可以有不同的返回值类型,但一定要有不同的参数表。此外,重载的方法并不需要相同数量的参数。
第七章 数组
1.数组要占据内存空间,需要使用new运算符为数组分配内存空间。如:int c[ ]=new int[12]
或:int c[ ]; c=new int [12];为数组分配内存空间后,数值型基本数据类型的数组元素自动被初始化为0,boolean类型的变量被初始化为false,引用则被初始化为null。注:与C、C++不同,java不允许在数组后面的方括号内指定数组元素的个数。
当声明一个数组是,数组的类型和方括号可以在声明的开始出结合起来使用,表示声明重点的所有标识都表示数组。如:double[ ] array1,array2。
在数组声明重可以用等号及一个逗号分隔的初始值表初始化数组元素,该数组的大小由初始表中的数据个数决定。如:int tn[ ]={10,20,30,40,50}
2.与其他语言不同,java不允许编程人员采用值调用或引用调用来传送每个参数。基本数据类型总是采用值调用。不能把对象传递给方法,而只能传递对象的引用。引用本身也是采用值调用。当一个方法接受对象的引用后,它就可以直接操纵对象。
3.由于数组被java看作对象,数组就以引用调用的方式传递给方法——被调用方法能访问调用者的原来数组中的元素,调用方法将修改数组中的元素。
但是单个基本数据类型的数组元素仍以值调用的方式传递。