//Example.java
10年积累的成都网站建设、网站制作经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站制作后付款的网站建设流程,更有自贡免费网站建设让你可以放心的选择与我们合作。
class A{
float a;
static float b;
void setA(float a ){
this.a = a;
}
void setB(float b){
this.b = b;
}
float getA() {
return a;
}
float getB() {
return b;
}
void inputA() {
System.out.println(a);
}
static void inputB() {
System.out.println(b);
}
}
public class Example {
public static void main (String args[]){
/*代码5] //通过类名操作类变量b,并赋值100
[代码6] //通过类名调用方法inputB()
A cat=new A();
A dog=new A();
[代码7] //cat调用方法setA(int a)将cat的成员a的值设置为200
[代码8] //cat调用方法setB(int b)将cat的成员b的值设置为400
[代码9] //dog调用方法setA(int a)将dog的成员a的值设置为300
[代码10] //dog调用方法setB(int b)将dog的成员b的值设置为800
[代码11] //cat调用方法inputA()
[代码12] //cat调用方法inputB()
[代码13] //dog调用方法inputA()
[代码14] //dog调用方法inputB()*/
A.b = 100;
A.inputB();
A cat = new A();
A dog = new A();
cat.setA(200);
cat.setB(300);
dog.setA(300);
dog.setB(800);
cat.inputA();
cat.inputB();
dog.inputA();
dog.inputB();
}
}
有一个要说明的是,setA()与setB()的形参是浮点型的,所以如楼上所说,楼主代码7到代码10的形参设错了。但200,400,300,800是可以的。只是将int改为float.
几年没有碰swing了,给你详细注释了。仔细看。希望对你有所帮助。
import java.awt.*;//java抽象窗口工具包
import java.awt.event.*;//java抽象窗口工具包组件所激发的各类事件的接口和类
public class Test5{//类名
Frame f;//定义一个Frame窗体
TextArea center;//文本域
Label la1,la2,la3;//三个标签
Panel east,south,north;//三块面板
Button b1,b2,b3,b4;//四个按钮
Choice l1;//下拉单选框
TextField t1;//文本域
// textfield只有一行可写
// textarea是一个区域,可以有很多行
public static void main(String[] args){//主函数,程序入口
Test mb = new Test();
mb.go();//调用go方法,初始化界面
}
private void go(){
f = new Frame("留言版程序");//标题
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent evt){
f.setVisible(false);
System.exit(0);
//System.exit(0) 0--正常结束程序 1--异常关闭程序
}
});
f.setBounds(0,0,600,400);//布局大小
f.setLayout(new BorderLayout());//显示方式
f.setResizable(false);
//下面都将控件按钮初始化,你懂得
north = new Panel();
south = new Panel();
east = new Panel();
center = new TextArea("留言内容:");
center.setEditable(false);
b1 = new Button("清屏");
b2 = new Button("至顶");
b3 = new Button("至尾");
la1 = new Label("留言版");
la2 = new Label("你");
la3 = new Label(" 地说:");
t1 = new TextField(20);
b4 = new Button("提交");
l1 =new Choice();
l1.add("微笑 ");
l1.add("生气 ");
l1.add("伤心 ");
f.add(BorderLayout.NORTH,north);//布局
f.add(BorderLayout.SOUTH,south);//布局
f.add(BorderLayout.EAST,east);//布局
f.add(BorderLayout.CENTER,center);//布局
north.add(BorderLayout.CENTER,la1);
south.add(la2);//把东西加到面板上
south.add(l1);
south.add(la3);
south.add(t1);//把东西加到面板上
south.add(b4);
east.setLayout(new GridLayout(9,0,1,10));
east.add(b1);
east.add(b2);
east.add(b3);
f.setVisible(true);//可视化
b4.addActionListener(new ActionListener(){//点击提交按钮产生事件
public void actionPerformed(ActionEvent e){
String text1,text2;
text1 = l1.getSelectedItem();
text2 = t1.getText();
t1.setText(null);
if(t1.getText() != ""){//将下拉单选框的内容和你输入在文本框的内容显示在中间面板上
center.append("\n");
center.append(text1);
center.append(text2);
}
}
});
b1.addActionListener(new ActionListener(){//清屏按钮事件,只留下中间面板显示:“留言内容:”,其余清楚
public void actionPerformed(ActionEvent e){
center.setText("留言内容:");
}
});
b2.addActionListener(new ActionListener(){//至顶按钮事件,光标焦点至顶
public void actionPerformed(ActionEvent e){
center.requestFocusInWindow();
center.setCaretPosition(8);
}
});
b3.addActionListener(new ActionListener(){//至尾按钮事件,光标焦点至尾
public void actionPerformed(ActionEvent e){
center.requestFocusInWindow();
center.setCaretPosition(center.getText().length());
}
});
}
}
首先,你要知道,变量i是局部变量,j是静态的全局变量。
其次,你要明白,在Java中,基本类型的参数,如int、float、char等,都是按值传递的,而对象,如String等是按引用传递,跟C++里面的按地址传递类似。
最后解释:在amethod()方法中,你传递了参数i,并在方法内部分别为i和j的值乘以2,然而,在方法体内部,i的确是编程了20,j也变成了40.
但是,出了该方法体,当回到main方法时,i的值是没有改变的,因为刚刚是按值传递的,在main中i的值依旧是10,而j因为是静态变量,自然对它的作用是有效的。
所以,最后的结果就如你所见了。
最后,推荐一个Java基础群:84994654