文章目录
写作意图
最近有人问我蓝桥杯 Java A组 (这可怜的孩子,啥也不会还只能报A组+) 的一些注意事项,我随便写写。
emmm,众所周知有些时候(如某些智障竞赛)要求使用低版本JDK,但我们懒得换JRE,所以就可以使用JDK高版本写低版本的语法(只提交源码)。
所以啊,那些我们未曾注意过的版本演进中的语法变化就需要注意啦。
本文大概总结一下这种情况下被Ban掉的的语法和API,假设只能用到JDK1.6。
Java9+被Ban的语法
新特性相关
被Ban常用语法
- var语法。。。这个神奇的var,我之前就说别上瘾别上瘾,不然很麻烦的……
- 神奇的switch语句,都吹可以使用箭头了,你看,Ban了吧……
- 集合工厂方法,这个就别用了吧,不然就会CE的……
其他的你写个OJ也不至于用的着吧。。。
Java8被Ban的语法
新特性相关
被Ban常用语法
- Lambda表达式,这个千万别用,因为用着挺香的。
- 方法引用,这个冒号估计很多人还不熟悉呢,应该还好适应。
- Stream API,反正你别秀什么流式编程就行。
其他的你写个OJ也不至于用的着吧。。。
再就是HashMap的升级版你用不到了,不过别急,那种性能要求,你会用Map估计都够了,嗯。
适应性改变
我在洛谷写OJ的时候发现它的Java8不识别String的repeat()。虽说这不是洛谷,但我不建议你用,你可以用StringBuilder开循环append(),不过很多新手也就会+吧。。
既然被Ban了Lambda,你想使用自定义的比较器就必须自己手写Comparator了,这需要你会写基本的匿名内部类,也要熟悉这个东西。
Java7被Ban的语法
新特性相关
被Ban常用语法
- 菱形语法,这个必须要注意,类型推导没了,泛型两端都要自己手写。
- 别搞什么0B那种二进制写法。
- switch不让用String了,所以只能用if…else…
- 涉及异常的话,如果你想try…catch…,不能一次捕获多个异常了,也没有自动回收资源的try语句了。
- 数字不能使用下划线分隔了,比如3_1_2,不让用了。
适应性改变
数大数的时候自己数清楚,因为不能加下划线了,别把100W开成1000W结果爆了栈。
总体思考
常用的还被Ban的语法上面都提了,你写个算法题,语法呢,就写的低级一些就行了。
其实我们还是很乐观的不是吗?
- 整个集合框架我们都可以随便用,那可是现成的数据结构啊。
- 并发那些、网络通信那些、JDBC那些、反射等等,我们用不到,慌什么(假设你不太会用)?
- 有强大的String、StrignBuilder,可以很轻松地处理串的问题。
- 有Arrays、Collections这种好使的工具类,sort()啥的就免于去写了。
- 只需要避免上面提到的“新版本高级语法”即可
(我就笑笑,蓝桥杯就算升到Java8语法又能怎么简化考生代码,真以为学生都会使用那些东西吗……)。 - 数组也是现成的,不需要搞什么奇奇怪怪的指针。
- 可以写面向对象,把不好搞的东西拼在一起。
- 还允许使用Eclipse,直接开Debug呗(好像要idea啊)。
- 还给你个中文版JDK1.6的API文档,查查文档简直不要太水。
- 也不卡你性能,暴力出AC呗……
- ……
- Java好香啊!
考试范围(A组)
这位朋友,A组的范围是这些:
计算机算法:枚举、排序、搜索、计数、贪心、动态规划、图论、数论、博弈论、概率论、计算几何、字符串算法等。
数据结构:数组、对象/结构、字符串、队列、栈、树、图、堆、平衡树/线段树、复杂数据结构、嵌套数据结构等。
(标黑的基本上没点基础的人就真的一点儿不会,看来你可能不会啊)
所以,你不会的算法还是不会,你不会的数据结构还是不会……
至于你说你忘了Java的语法,那……你报名干啥呢?
你看,没点ACM的底子,不行吧?
一些技巧
- 可以打打表(NOIP传言打表出省一)。
- 可以动动纸笔写写测试用例(因为不给你提供)。
- 遇到问题别瞎想,像i+j-1这种问题,开一下debug,万事皆宜。
- 别傻兮兮的排序,试试Arrays.sort()、Collections.sort()、Map、Set这种神奇的东西。
- 提前准备几个板子,可以套着用。
- 我觉得那个String、Math那种类的API啥的你现看是不行的,自己平时就得会。
- BigInteger、BigDecimal,你不用别人用。
- 暴力出奇迹,暴力出奇迹,暴力出奇迹。
特别强调
- 不能像LeetCode那样,写个函数就交上去了,要自己写Main类,其他类要写成private static class。
- 别去写什么package。
- 别用顺手了就把第三方类当成JDK的部分。
- 一定注意语法兼容性,不要用JDK1.6以上的语法。
- 可以多次交,不慌。
美好祝愿
这位读者朋友,祝你蓝桥杯顺利!