|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 Samples、懂么 于 2014-7-10 01:36 编辑
无论做什么项目,先得有需求,知道要做些什么,这就是需求。然后就是分析功能,初涉java的程序员都只是想到什么就写什么,正常来说,是这样子的,小程序还好,程序比较大的话,如果不进行设计,冗余代码就会越来越多,性能,BUG,维护都会带来一系列的麻烦!所以代码设计也很重要,提高代码质量,需要有重构的思想,用思想指引你写代码;
1.起名:起名很重要,要让要一看就知道是什么,比如有一个public String getName(){ };一看就知道是获取名字,public void setName(){ };设置名字,同道理;
2.代码重用:什么是代码冗余?,如果一段相同的代码出现两次以上,那么你就得考虑一下怎么去把这两段相同的代码合并了
例如:
public void println(){
int temp;
int i=78;
int j=64;
temp = i+j;
System.out.println(temp);
}
public void print(){
int temp;
int i=33;
int j=17;
temp = i+j;
System.out.println(temp);}
合并为:
public void println(){
int temp = add(78,64);
System.out.println(temp);
}
public void print(){
int temp = add(33,17);
System.out.println(temp);}
public int add(int i, int j){
return i+j;
}
当然,代码随便写的,懂那个意思就好!
3.多写写工具类
新手会问什么是工具类?工具顾名思义就是方便人的,直接拿来用的,工具类其实也是普通类而己,只不过里面封装了许多常用的处理逻辑!比如:
public class Math{
public static int add(int i, int j){
return i+j;
}
}
下面可以直接调用:
public void println(){
int temp = Math.add(78,64);
System.out.println(temp);
}
是吧,非常的方便!为什么要多写工具类呢?如果经常用别人的,你技术是没法提高的,只会拿来就用,而不知道实现,哪一天没了工具类,这程序员还是程序员么?成为一个会开发的程序只需4个月,自学是不可能的,可以去培训一下,因为我也是去培训过的!下班了,晚上有空再继续写!
2014年5月16日9:01:28
至于说培训经验 ,培训4个月等于大学4年,不假,我当初从零到现在java行业工作也只不过半年时间而已,这得看你是否能吃苦,因为培训的时候还是比较累的,是心累!关于怎么去学习java,还是那句话,代码要多敲,敲一遍代码胜背10遍死记硬背,而且死记硬背记不会太久,也许过两天就忘记了,前期先照着别人的代码写,看看别人是如何实现的,然后你照着敲,当你记住了以后,这就是你的知识了,然后你再去看看有没比他更好的方法去实现!这就是优化!说起来如何提高java是一个永远不变的话题,因为java版本越来越高,可能以前要写一大往篇的代码,现在只需两行,是吧!新手学java建议先照猫画虎,吸取别人的经验,还是建议去培训吧,虽然很多人抵触培训,但是,培训的讲师都是十几年工作经验的,你去吸收他们的经验再好不过了,至于去哪里培训就看你们选择了,我不说多,不然就成打广告的了!
2014年7月10日1:03:07
最近一排实在有些忙,连续几个项目的赶工,我周六还加班,发版本的时候搞到了零晨3点多,实在累,贴子沉了就不好了,再更新一点知识性的东西,给鱼油充充电,讲什么呢?就讲讲多态吧!多态,刚开始学java的伙姑应该不是很了解,这里给大伙详细的讲解一下,粘个代码先package com.test;
public class Test {
public static void main(String[] args) {
A a1 = new A();
A a2 = new B();
B b = new B();
C c = new C();
D d = new D();
System.out.println(a1.show(b)); // 1
System.out.println(a1.show(c)); // 2
System.out.println(a1.show(d)); // 3
System.out.println(a2.show(b)); // 4
System.out.println(a2.show(c)); // 5
System.out.println(a2.show(d)); // 6
System.out.println(b.show(b)); // 7
System.out.println(b.show(c)); // 8
System.out.println(b.show(d)); // 9
}
}
class A{
public String show(D obj){
return ("A and D");
}
public String show(A obj){
return ("A and A");
}
// public String show(B obj){ //10
// return ("A and B");
// }
}
class B extends A{
public String show(B obj){
return ("B and B");
}
public String show(A obj){
return ("B and A");
}
}
class C extends B{}
class D extends B{}
大伙可以运行下看结果,是不是跟你想像的一样,就能测出你对多态的了解程度.
1,2,3的输出结果就不用说了
输出 A and A; A and A; A and D;这个比较好理解,如果没理解的话,我这里小小的解说一下,a1.show(b) 在A类里是不是没有这个方法呀?是的!那么它怎么就输出 A and A了呢?这里涉及到一个优先级的问题 [高到低]
this.show(O)、super.show(O)、this.show((super)O)、super.show((super)O)
如果没有找到b对应的方法,那么就去找A的父类,看有没这个方法,但是A没有父类,那么接下来去找b的父类,b的父类是A, A类里有show(A)这个方法,那么就会输出 A and A;了
==================================================================
文字 有点枯燥?休息2分钟,整理一下上面的,我下面接着讲
==================================================================
在讲解之前给大家看句话,
当超类对象引用变量引用子类对象时,被引用对象的类型而不是引用变量的类型决定了调用谁的成员方法,但是这个被调用的方法必须是在超类中定义过的,也就是说被子类覆盖的方法。
不懂鸟?没关系,下面我会讲到这句话的含意
大家先看下4,5的输出结果,然后大家 会想,为毛不是输出 B and B呢?请看上面蓝色字.
不是引用变量的类型决定的,
这个被调用的方法必须是在超类中定义过的
也就是说如果A类有定义过这个方法的话才会输出 B and B,如果没有定义过就会根据优先级来判断,判断完父类以后再接着判断它传进来的b的父类 ,b的父类是A,所以输出 B and A;第5同理也是输出B and A;如果还是不懂,请仔细体会上面的蓝色字,然后自己实操一遍.
==================================================================
文字 有点枯燥?休息2分钟,整理一下上面的,我下面接着讲
==================================================================
第6个输出 也是很容易理解的,如果你理解了上面的话;a2.show(d),B类没有这个方法,接着去查找B类的父类,B类的父类是A,好了,A类里有这个方法,所以输出 A and D;
第7个输出 很简单,直接 输出B and B
第8个输出 b.show(c) 先查找B类里有没有这个方法, 没有,紧接着查找B类的父类,父类也没有这个方法,接下来查找c的父类,c的父类是B,好了,B类里有这个方法,所以输出 B and B
第9个输出 同第8个输出原理一样的,因为B的父类里有这个方法,所以直接输出 A and D
==================================================================
讲完了,大伙消化一下,如果不懂,可以@976778267 或者加入我们的官方群,160590699 工作关系,有时间的话
会继续送上一些精华,希望大伙加个精,嘿嘿,不要遗忘掉本楼主
==================================================================
|
|