java新手入门会犯的N个“超低级错误”

刚开始接触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{
static int k = 3;
public static void main(String[] args){
int k = 4;
wan x1 = new wan();
wan x2 = new wan();
x1.k++;
x2.k++;
k++;
System.out.println(x1.k);
}


}

这个时候输出的结果是   5;

因为静态变量属于类,不属于对象,对象的每次调用都会作用于类中的变量,所以X2.k变化的时候,也影响到了x1.k的值。而最后面那个k++.是操作的方法变量,不会影响静态变量。

你可能感兴趣的:(java新手入门会犯的N个“超低级错误”)