一个JAVA基础的问题,我是初学者,不懂啊 没有静态方法..... 给源程序... 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 楼主在当前静态方法中引用了非静态方法。静态方法要求引用的变量和方法要求是静态的。 静态方法只能调用静态的方法和域 楼主在当前静态方法中引用了非静态方法。静态方法要求引用的变量和方法要求是静态的。 真的是这样,静态方法调用的方法也只能是静态的方法.那为什么只能调用静态方法,使用静态方法的目的又是什么呢? 通常static方法的一个普遍是使用类似c中function中使用.这点你可以参看Math类.不过你要注意在多线程的时候static的使用.通常这样的工具方法都是跟输入没有关系的,也就是说它们不对输入项进行操作而是根据输入项得到一些值.例如我们在编写一个棋类游戏,每次我们从网络中得到的都是棋子的ID而并非名称,但是在更新棋盘的同时我们要生成棋谱,例如"3四兵",而我们需要一个能根据棋子ID得到棋子名称的方法,而这个方法又可能在多个类(不仅是通一个类的多个实)使用,那么就需要编写一个这样的工具,因此我们在ClientUtil类中加入如下方法publci class ClientUtil{ public static String getChessmanName(byte _chessmanId){ String cName= ""; switch(_chessmanId){ case 1: cName = "兵"; break; case 2: cName = "卒"; break; ...... } }}在GamePanel中我们就需要使用该方法public class GamePanel{ public void move(){ ...... updateChessManual(); } private void updateChessManual(){ ....... String cName = Client.getChessmanName(); ....... }}如果是属性static 的时候我们多用于和final组合作一些常量使用.static方法并非不能用于多线程访问,只要你的方法是安全的,最好的方法仍然是static方法不操作输入项例如下边的方法就是一个不安全的例子public class A{ public static void modifyNum(int _x,int _y){ _x += _y;//你已经操作的输入项 }}在另一个类中public class B{ int a; int b; public void doSomeThing(){ A.modifyNum(this.a,this.b);//你已经错误的使用static } System.out.println(a);//a在你不知不觉中发生了改变}以上使我们使用static的习惯,不能代表static的全部. 你调用方法没创建这个对像,这个方法又不是静态的,要不你创建,要不就声名为静态就可以调用了 谁有java实现ftp数据传输的例子吗? 学习JAVA的烦恼 关于swing实现图算法的问题 我想使用BufferedReader 读文件,请怎么指定以什么读入编码格式文件? native 做什么用? resultset.deleterow 怎么用不了 help me! 请问hashtable的一个小问题! 在java JFrame里面动态改变菜单怎么要手工调整一下窗体大小才能正确显示呢? 请问JBuilder4.0以上版本软件在哪能下载到? 关于java.lang.Class.getMethod(String name,Class[] parameterTypes) 升级,散分,10人结帖
那为什么只能调用静态方法,使用静态方法的目的又是什么呢?
通常这样的工具方法都是跟输入没有关系的,也就是说它们不对输入项进行操作而是根据输入项得到一些值.例如
我们在编写一个棋类游戏,每次我们从网络中得到的都是棋子的ID而并非名称,但是在更新棋盘的同时我们要生成棋谱,例如"3四兵",而我们需要一个能根据棋子ID得到棋子名称的方法,而这个方法又可能在多个类(不仅是通一个类的多个实)使用,那么就需要编写一个这样的工具,因此我们在ClientUtil类中加入如下方法
publci class ClientUtil{
public static String getChessmanName(byte _chessmanId){
String cName= "";
switch(_chessmanId){
case 1:
cName = "兵";
break;
case 2:
cName = "卒";
break;
......
}
}
}
在GamePanel中我们就需要使用该方法
public class GamePanel{
public void move(){
......
updateChessManual();
}
private void updateChessManual(){
.......
String cName = Client.getChessmanName();
.......
}
}
如果是属性static 的时候我们多用于和final组合作一些常量使用.static方法并非不能用于多线程访问,只要你的方法是安全的,最好的方法仍然是static方法不操作输入项例如下边的方法就是一个不安全的例子public class A{
public static void modifyNum(int _x,int _y){
_x += _y;//你已经操作的输入项
}
}
在另一个类中
public class B{
int a;
int b;
public void doSomeThing(){
A.modifyNum(this.a,this.b);//你已经错误的使用static
}
System.out.println(a);//a在你不知不觉中发生了改变
}以上使我们使用static的习惯,不能代表static的全部.