刚开始接触JAVA的时候,有些在大神或者熟悉java的人来说会犯的低级错误,常常影响新手思考很久。
我们会对此感到失望,深深的怀疑是不是自己智商有问题。
这里,我开始记录,我自己自学JAVA过程中,遇到的“智障”问题。
1、在JAVA程序设计书中,有个统计每个字母出现次数的经典题。
其中
有个for循环是这样写的
for(int i = 0; i < chars.length; i ++)
{
chars[i] = RandomCharacter.getRandomLowerCaseLetter();
return chars;f
}
有些刚开始接触的朋友可能一下就被整个程序中从未出现的RandomCharacter.getRandomLowerCaseLetter(),给整蒙了,
然后开始怀疑是不是有什么类没有import进来,其实这个是之前在上一章出现的自定义方法,自己写的一个可以随机获取的小写字母的方法。
下面贴出这个RandomCharacter类的源代码。
public class RandomCharacter {
public static char getRandomCharacter(char ch1,char ch2)
{
//随机生成一个介于ch1 和 ch2之间的字符。
return (char)(ch1 + Math.random()*(ch2 - ch1 + 1));
}
//生成一个随机的小写字母。
public static char getRandomLowerCaseLetter(){
return getRandomCharacter('a','z');
}
//生成一个随机的大写字母。
public static char getRandomUpperCaseLetter(){
return getRandomCharacter('A','Z');
}
//生成一个随机的数字。
public static char getRandomDigitCharacter(){
return getRandomCharacter('0','9');
}
//生成一个随机的字符。
public static char getRandomCharacter(){
return getRandomCharacter('\u0000','\uFFFF');
}
public static void main(String[] args)
{
char ch = RandomCharacter.getRandomCharacter();
System.out.println(ch);
}
}
2、for(int i = 0; i
{
counts[ chars[i] - 'a']++; //这句在统计 每个字母出现次数的程序中,很经典,其中counts[ ]是一个26大小的数组,counts[0]存字母‘a’出现的次数,counts[1]存 //储‘b’出现的次数。。。。以此类推。比如这里chars[i] = 'c',则counts[2]++(说明字母C出现的次数又增多了一次。)
}
3、在静态的方法中可以调用非静态的变量吗?
答案是不可以,
因为静态方法直接可以不经过实例化就可以使用。但是非静态方法必须借助一个实例才能使用。静态方法中用非静态变量,那么这变量“没有实例化”就不能被直接使用的。矛盾。如图
4、如何this.i = i,这句代码,this是本类中隐藏的一个对象,this.i,这里的i指的是本类中之前定义好的i,而等号后面的i,一般指的是方法中的参数,后定义的。
5、在java的main函数中,是不能直接定义方法的,如下图是1,不可以的,图2是可以的
6、关于静态变量和方法变量,如下程序请看
public class wan{}
这个时候输出的结果是 5;
因为静态变量属于类,不属于对象,对象的每次调用都会作用于类中的变量,所以X2.k变化的时候,也影响到了x1.k的值。而最后面那个k++.是操作的方法变量,不会影响静态变量。