鱼C论坛

 找回密码
 立即注册
查看: 4623|回复: 6

[技术交流] 教你如何提高java境界

[复制链接]
发表于 2014-5-10 17:53:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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的伙姑应该不是很了解,这里给大伙详细的讲解一下,粘个代码先
  1. package com.test;

  2. public class Test {
  3.         public static void main(String[] args) {
  4.                 A a1 = new A();
  5.         A a2 = new B();
  6.         B b = new B();
  7.         C c = new C();
  8.         D d = new D();
  9.         System.out.println(a1.show(b)); // 1
  10.         System.out.println(a1.show(c)); // 2
  11.         System.out.println(a1.show(d)); // 3
  12.         System.out.println(a2.show(b)); // 4
  13.         System.out.println(a2.show(c)); // 5
  14.         System.out.println(a2.show(d)); // 6
  15.         System.out.println(b.show(b));  // 7
  16.         System.out.println(b.show(c)); //  8
  17.         System.out.println(b.show(d)); //  9
  18.         }
  19. }

  20. class A{
  21.         public String show(D obj){
  22.                 return ("A and D");
  23.         }
  24.         public String show(A obj){
  25.                 return ("A and A");
  26.         }
  27. //        public String show(B obj){ //10
  28. //                return ("A and B");
  29. //        }
  30. }
  31. class B extends A{
  32.         public String show(B obj){
  33.                 return ("B and B");
  34.         }
  35.         public String show(A obj){
  36.                 return ("B and A");
  37.         }
  38. }
  39. class C extends B{}
  40. 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 工作关系,有时间的话
会继续送上一些精华,希望大伙加个精,嘿嘿,不要遗忘掉本楼主
==================================================================








想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-5-15 03:32:11 | 显示全部楼层
楼主,别打击我,我也是在自学当中。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-15 09:02:02 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-5-16 01:09:42 | 显示全部楼层
收到。谢谢楼主。
楼主能不能分享下去参加培训的经验,或者是学习java的一些经验。不胜感激。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-7-6 10:45:15 | 显示全部楼层
认真看完了 写的不错!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-7-10 01:39:07 | 显示全部楼层
自顶一个先
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-12 22:34:33 | 显示全部楼层
加群了  希望能够共同进步
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 20:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表