class StringTest
{
public static void sop(String str)
{
System.out.println(str);
}
public static void main(String[] args)
{
String s=" 123 123 ";
sop("..."+s+"...");
s=helloTrim(s);
sop("..."+s+"...");
}
public static String helloTrim(String str)
{
int start=0,end=str.length()-1;
while(start<=end&&str.charAt(start)==' ')
{
start++;
System.out.print(""+start);
}
while(start<=end&&str.charAt(end)==' ')
{
end--;
System.out.print(""+end);
}
return str.substring(start,end+1);
}
}
在这段代码中为什么方法要用static呢??因为主方法必须是静态的,所以在主类中调用的该类中的方法只能是静态的。如果想把这些方法
写成非静态的,那么只能在该类中写静态的内部类,再创建内部类对象。或者在主类外创建外部类再创建对象调用。
为什么静态只能引用静态的方法和变量,而非静态的可以引用所有呢?因为静态的变量或方法在类呗声明初始化时候,在堆空间已经分配好了,
所有这个类的对象都操作这个值,而非静态变量是有一个对象就有一个对应的变量。如果静态变量能操作非静态的变量会让JVM分配和使用发
生混淆,sun公司当初为了避免这个情况特意让静态只能引用静态的方法和变量,而非静态的可以引用所有。 |