0%

Java里并没有goto语句,但是标签的功能类似于goto,可以实现代码级的跳转。好吧,反正我之前是没用过这玩意,也不建议用,太复杂了。 直接上代码:

        int i = 0;
        outer: for (; true;) {
            System.out.println("outer");
            inner: for (; i < 10;i++) {
                System.out.println("i=" + i);
                if (i == 2) {
                    System.out.println("continue");
                    //执行continue,会执行for里的i++
                    continue;
                }
                if (i == 3) {
                    System.out.println("break");
                    i++;
                    //执行break,不会执行for里的i++,所以,这里需要i++
                    break;
                }
                if (i == 7) {
                    System.out.println("continue outer");
                    i++;
                    //continue outer后,inner循环结束,不会再i++,所以需要i++,继续执行outer的循环
                    continue outer;
                }
                if (i == 8) {
                    System.out.println("break outer");
                    //中断outer循环,同时inner也中断
                    break outer;
                }
                for(int k=0;k<5;k++)
                {
                    if(k==3){
                        System.out.println("continue inner");
                        continue inner;
                    }
                }

            }
        }

outer和inner是定义标签的名字,可随意 执行结果: outer i=0 continue inner i=1 continue inner i=2 continue i=3 break outer i=4 continue inner i=5 continue inner i=6 continue inner i=7 continue outer outer i=8 break outer

按位操作符在实际编程中使用不会很多,复习基础时看到,做个笔记吧! 假设a=5,b=6,先转成二进制,a就是00000000 00000000 00000000 00000101,b就是00000000 00000000 00000000 00000110(每个int占4个字节,一个字节8位) 按位与(&):a和b每一位与操作,只有两者都是1结果才是1,其他情况为0,所以,结果是00000000 00000000 00000000 00000100,转成十进制就是4,也就是a&b=4 按位或(|):a和b每一位或操作,有一个是1,结果就是1,两个都是0时为0,所以,结果是00000000 00000000 00000000 00000111,转成十进制就是7,也就是a|b=7 按位异或(^):a和b每一位异或操作,只有两个数都不同时才是1,相同时为0,所以,结果是00000000 00000000 00000000 00000011,转成十进制就是3,也就是a^b=3 按位非():一元操作符,每一个取反,00000000 00000000 00000000 00000101每位取反成11111111 11111111 11111111 11111010,00000000 00000000 00000000 00000110每位取反成11111111 11111111 11111111 11111001, 所以a=-6,b=-7 同时支持&=,|=,^=操作,即a&=b相当于a=a&b 二进制负数转十进制: 如上面的a结果是11111111 11111111 11111111 11111010,第一位是1,表明该数为负数。 先减1得到11111111 11111111 11111111 11111001,再取反,得到00000000 00000000 00000000 00000110,就是十进制的6,再加上符号,得到-6 这玩意以前上学的时候就是记不到该怎么算,今天一看还蛮简单的

这个是很基础的内容,但因为平时用到的不会很多,难免忘记。 如下代码:

        int a=5;
        System.out.println(a++);
        System.out.println(++a);

输出是5和7,由此可见,a++是先输出再自增,而++a是先自增,再输出,这就是两者的区别。

javadoc可以根据源代码中的注释生成相应的文档,但注释必须符合指定的格式. java的文档注释以/*开头,/结束,可以注释类名,字段,方法,如:

/**
 * 学生类
 * @author fff
 *
 */
public class Student {
    /**
     * 学号
     */
    int id;
    /**
     * 姓名
     */
    String name;
    /**
     * 年龄
     */
    int age;
    
    /**
     * 打印学生信息
     */
    public void print()
    {
        System.out.println("id:"+id+" name:"+name+" age:"+age);
    }
}

除了可以利用这些信息生成文档,在Eclipse中,当在其他地方用到这个类时,鼠标移动到方法名上,也会弹出注释内容提示(效果与设置javadoc路径一样). 另上,还可以使用一些标签丰富注释内容,如上面的@author 标记该类的作者 下面是几个常用标签: @see 类名#方法或字段名 添加一个See Also(参见),点击点跳到指定类或类下的字段,方法的注释说明,如果目标类不在同一个包下或没有import包,必须使用包括包名的完整路径,如果是参见当前类的方法或字段,可以不加类名 {@link 类名#方法或字段名 别名} 功能与@see一样,但可以指定链接显示的名称 {@docRoot} 显示文档根目录路径 {@inheritDoc} 复制父类的相关注释到此 @since 运行环境 通常用于标识最低版本的运行环境 如jdk 1.6,API Level 4等等 @param 参数名 说明 各个参数的说明,多个参数使用多个@param标签 @return 返回值说明 添加返回值的说明 @throws 异常类名 异常说明 指定可能出现的异常,并提供异常说明,多个异常用多个@throws标签 @deprecated 标记该类或方法字段已经被废弃,不建议使用,在新版本中可能删除,如果使用,编译器会警告,Eclipse里会加上删除线,但在Eclipse里好像会跟其他的注释冲突,有了这个标签,其他的就不会提示了.

按shift选中多个欲合并的对象,按ctrl+shift+F9打开路径查找器面板,按住Alt键,点击形状模式中的联集(在cs5中是第一个按钮),再点扩展。

ctrl+u 显示参考线 ctrl+2 锁定对象 ctrl+alt+2 解锁对象 加减选对象 按住shift再单击 x 切换填充和描边的位置 shift+x 切换填充和描边的两种属性 ctrl+shift+F10 打开透明度面板 ctrl+7 剪切蒙版(创建时必须选择多个对象,控制范围的对象在最上方) ctrl+alt+7 解除剪切蒙版 ctrl+c 复制 ctrl+f 原位复制到原对象前 ctrl+b 原位复制到原对象后 ctrl+d 重复复制 ctrl+g 多个对象编为一组 ctrl+shift+g 解除分组 ctrl+[ 调整对象顺序,选中对象向下 +shift直接到底 ctrl+] 调整对象顺序,选中对象向上 +shift直接到顶 ctrl+shift+f9 打开路径查找器

电台英语是一款收集BBC,CNN,NPR,CRI,VOA常速英语,VOA慢速英语等电台新闻录音的Android app,带LRC或TXT字幕,练习英语听力利器,同时可以了解国内外时事新闻,内容每日更新。支持批量下载到本地,节约流量。其实这个IDEA在一年前就产生了,但是当时公司项目忙,抽不出多少时间来写这个App。今年上半年,断断续续的,写好了服务端(Java+PHP+Mysql组合,展示用php,数据采集,编辑之类的用java),确定了客户端整体结构逻辑。然后下半年找了个新学设计的朋友帮忙画了界面,有点抄袭当时的手机迅雷。客户端这边,7-8月份只做了SlideMenu和主界面,到9月份辞职,才真正开始做。到昨天(10月14日),基本没发现什么大BUG,就发到了Google Play上。现在已经可以下载:https://play.google.com/store/apps/details?id=com.pocketdigi.radioenglish。拖的时间有点长,人还真是需要点压力,现在没工作,没收入,一个月干的活顶过去业余时间大半年。不过,跟2011年写的App比,代码质量,以及UI,已经完全不是一个水平了,自我感觉这一年半成长还是挺快的。 提一下Google Play开发者帐号。两年前,也是没工作,屡次向各家银行申请信用卡,都被拒绝。无奈,找万能的淘宝,第一次花了400多块RMB,传个几个应用,但在半个月后就被封,Google发邮件说好像是违反了什么政策,尼玛,400多就这样打水漂了。但是Google Play也占了很大块市场份额,应用还得提交,隔了几个月,又重新买了个帐号,这次更贵,600多,结果还是没用多久,被封了,从此对Google彻底伤心绝望。去年办了张招商的多啦A梦卡,是万事达卡,因为当时也没在写应用,没需求,所以没用来注册Google Play.最近电台英语快写完了,于是尝试用这张卡注册,地址填香港,先是扣了8元港币验证帐号,再扣了25美元,Google Play提示等待审核,退回8元港币。过了两天,没收到退回25美元的信息,登录Google Play查看,审核通过,可以发布应用了! 25美元,大概是153块人民币。所以,各位同学,有条件还是自己动手吧,貌似现在淘宝价都500以上了,还有黑卡的风险,被封概率很高,现在办张信用卡还是挺容易的。

使用ViewPager和Fragment划屏时,当一个fragment被隐藏,它很有可能被回收,但如果PagerAdapter用的是FragmentPagerAdapter,回收时只会调用onDestroyView,而不会调用onDestroy.So,当下次再返回的时候,因为其实这个Fragment并没有被Destory,所以不会调onCreate,但会调onCreateView重新载入View,导致界面上显示的都是初始的状态.解决方法,使用FragmentStatePagerAdapter代替FragmentPagerAdapter,在回收时就会调用onDestroy.

若要让TextView里的文本滚动,必须满足以下几个因素: 1,TextView里文本宽度超过TextView的宽度 2,android:ellipsize="marquee" 3,只有在TextView获取到焦点时,才会滚动.所以加上android:focusableInTouchMode="true" android:focusable="true" 最容易忽略的是第三条. 滚动重复次数设置: android:marqueeRepeatLimit="marquee_forever"