学会编程, 而不是学会Java
学会编程, 而不是学会Java
2017-4-14 小B
由于《我是一个线程》这篇文章的广泛传播, 很多加了我的QQ和微信,交流编程学习的问题。
但是我发现其中很多初学者,尤其是半路出家的遇到了一个很普遍的情况: 那就是只学会了Java 的语法, 而没有学会编程。
我拿一个例子来说一下, 下面是一个SimpleList 的类, 模仿java 的ArrayList, 已经定义好了接口,需要实现具体的业务:
/**
* 自定义的一个模仿ArrayList的类, 你需要实现其中的add, get, remove , 等方法
* @author 刘欣
*/
public class SimpleList
private Object[] elementData;
private int size=0;
public int size() {
return -1;
}
public SimpleList(){
}
public boolean isEmpty() {
return false;
}
public boolean add(T e) {
return false;
}
public boolean remove(Object o) {
return false;
}
public T get(int index) {
return null;
}
}
然后我拿这个类给几个人测试, 我发现很少人能够顺利的把这几个方法给实现了, 哪怕是非常粗糙的实现也没有。
感兴趣的同学也可以用你擅长的语言尝试一下。
这个题目不要求实现复杂的算法, 也不需要进行面向对象的设计,也不需要考虑多线程下的线程安全, 况且已经给了提示:
用一个Object数组来实现。
如果说有一点语法层面的难度, 那就是使用了一点泛型。
其实如果我把泛型去掉, 估计他们还是实现不了, 因为这个类的核心逻辑不是泛型。
这个SimpleList 要求的就是能对一个数组进行操作,核心就两点:
1. 能往数组添加数据, 记录size ,如果数组空间不够了, 需要增大空间
2. 能删除数组指定位置的数据,并且把之后的数据往前挪动。
难吗? 这其实是编程序的基本素养, 编程的本质,和用什么语言实现没有关系。
如果不是Java , 学的是C#, 或者Python, 我估计结果也差不多。
我想可能是不少人都缺乏最最基本的数据结构和算法的训练, 还没有养成面向计算机的逻辑思考的方式。
解决的办法其实也很简单:就是多实践,多编码, 我推荐多做数据机构和算法的习题, 这也是我个人的经验, 大学时把数据结构的习题都做一遍, 后来工作中只要不是设计算法, 基本上没要难住我的。
如果以后想选择码农作为职业, 这种编程能力是必不可少的, 所以在校的同学, 不妨从现在就开始, 把缺失的能力不上。
相关阅读推荐
-
甲骨文正式宣布将 Java EE 移交给 Eclipse 基金会
2017-9-15 小B
-
深度学习入门
2017-9-14 小B
-
网易最热门的开源项目推荐
2017-9-11 小B
常见问题文章推荐阅读
-
甲骨文正式宣布将 Java EE 移交给 Eclipse 基金会
2017-9-15 小B
-
深度学习入门
2017-9-14 小B
-
网易最热门的开源项目推荐
2017-9-11 小B
-
发现新动能:中国制造业如何制胜数字经济
2017-9-9 小B
-
了解真实的『REM』手机屏幕适配
2017-9-1 小B
文章排行
-
-
甲骨文正式宣布将 Java EE 移交给 Eclipse 基金会
2017-9-15 小B
-
装逼必备:大型分布式网站术语分析
2017-9-5 小B
-
每个JavaScript开发者都该懂的Unicode
2017-8-30 小B
-
为什么我们选择使用 React 而不是 Angular 构建新 UI
2017-8-18 小B
-
没那么难,谈CSS的设计模式
2017-8-12 小B
-
JavaScript 从0自定义封装企业插件原来这么简单
2017-7-28 小B
-
-
-
甲骨文正式宣布将 Java EE 移交给 Eclipse 基金会
2017-9-15 小B
-
深度学习入门
2017-9-14 小B
-
数据显示仍有16%的Android手机运行的是 Android KitKat
2017-9-8 小B
-
安卓开发的小技巧
2017-4-22
-
中国和印度双驾马车拉动亚太地区应用生态超过西方
-
2017年最好用的Android渗透工具合集
-
应用程序进入开发阶段后,您需要执行哪些步骤
-