Java碎片知识

  1.在java中有goto,但这只是保留字,并不能使用(const也是)。在eclipse中的报错信息为”Syntax error on token "goto", throw expected“。

goto的类似功能由break/continue 标签实现。

  (1)break 标签

outer:
        for(int i=0; i<10; i++) {
            if(i == 5)
                break outer;
            System.out.print(i + " ");
        }

  结果:0 1 2 3 4

  分析:break通过标签跳到for循环体外,然后就不会再进入该循环了。

  (2)continue 标签

outer:
        for(int i=0; i<3; i++) {
            for(int j=11; j<15; j++) {
                if(j == 13)
                    continue outer;
                System.out.print(i + " " + j + " ");
            }
        }

 

  结果:0 11 0 12 1 11 1 12 2 11 2 12

  分析:continue通过标签跳到for外,但只是跳出当前的这次循环,它会重新进入for循环。

 

  2.是否可以在static环境中访问非static变量?

  eclipse的提示信息:Cannot make a static reference to the non-static field

 

  3.标识符与unicode

  标识符能由字母(unicode),数字,货币符号(¥,$),连接符号(_)组成。

  这里关注unicode,并不是所有unicode都可以作为标识符的一部分。同时,并不是只有数字不能作为标识符首字符。

     int start = 0;
        int part = 0;
        for(int i=0x0000; i<=0x10ffff; i++) {
            if(Character.isJavaIdentifierStart(i)) {
                start++;
//                System.out.println(Character.toChars(i));
            }
            if(Character.isJavaIdentifierPart(i))
                part++;
        }
        System.out.println("Unicode字符集个数:" + (0x10ffff+1));
        System.out.println("作为首字符个数:" + start);
        System.out.println("作为标识符一部分个数:" + part);
        System.out.println("两者差距:" + (part-start));

  结果:技术分享

 

  4.i++与++i

  这两者不只是先加和后加怎么简单,对于i++,其实i是先将自身的值复制给一个临时变量,然后对自身加1(如同++i),最后才参与运算。

     int i = 1;
        i = i++;
        System.out.println(i);

  结果: 1

  i++的实现如下所示:

    int temp = i;
    i = i+1;
    return temp;

 

  5.i+++j结果是什么?

        int i = 1, j = 3, result;
        result = i+++j;
        System.out.println("result: " + result);
        System.out.println("i = " + i);
        System.out.println("j = " + j);    

  结果:技术分享

  分析:相当于(i++)+j。编译器会采取贪心规则,尽量找最多的运算符(如果学过编译原理能明白为什么这么做)。

  

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。