勤学思培训网CSDPAL
  • 总算领会java小技巧

    1java小技巧

    java小技巧有哪些?相信许多程序员在看别人写的代码的时候,会有怀疑人生的感想,面对一堆天书一样的代码,很难摸清作者的思路,最后选择了重构,如果你认同上面这个作法,说明了两个问题:要么原来的开发者技术菜、要么你技术菜。

    [图片0]

    1.以下两种for循环

    这一种循环,会额外创建一个迭代器,然后遍历值。当遇到链表、Hashmap表时,用它速度很快。因为这样不需要通过遍历整个集合查找元素。

    [java] view plain copyfor(String str : list){

    }

    这一种循环,不用创建迭代器,当遇到数组、ArrayList时,用它速度最快,节省创建迭代器时间。如果遇到链表、HashMap则每一个都必须通过遍历整个集合来查找元素,时间复杂度立马上升。

    [java] view plain copyint len=();

    for(int i=0;i

    String str=list[i];

    }

    2.反转字符串,用它速度最快

    [java] view plain copypublic String get(){

    String str = "dddddd";

    return new StringBuilder(str).reverse().toString();

    }

    3.在try catch中要加finally,释放一些特殊的操作

    (1)文件流操作,不释放的话容易导致流溢出。

    (2)解锁问题

    在创建时,最好预估一下大小。因为HashMap会在放不下时做刷新,这时,会将小的haspMap拷贝一份给更大的haspMap.

    预估大小,这样可以满足大部分场景,如果大小仍然超出了该怎么办?

    5.字符串的不可变性,不用再说了,前面总结过

    6.单引号和双引号是有区别的

    中创建对象的确很昂贵。不要随便乱建对象。

    2Java开发小技巧

    JAVA编码规范

    在java开发中,一些API或者一些方法的恰当使用,对于提高代码的质量和性能是很必要的,今天就说一下开发中注意的一些事项和一些小的技巧.

    静态基础代码

    代码中我们经常会用1代表男,0代表女,进行判断时为了省事,经常会这样判断

    if(gender==1){

    //输出男

    }elseif(gender==0){

    //输出女

    }else{

    //不存在此性别

    }

    上面这样写代码是没有任何问题的,因为性别只有两种,判断语句不需要写的太多,但是如果你的需求如果是多种状态呢,还要使用if,elseif,else,例如,当我们提交试卷的状态0:未提交,1已提交,2提交未审核,3提交已审核,4提交未通过,5提交已撤销,建议像这种多种状态,使用枚举去声明每一个状态,使用枚举去处理

    当我们开发中,会重复使用方法,这样可以更好的使用代码的重复性。但是当我们的函数方法参数超过一定数量时,是很容易造成参数的传参错误,只会在代码运行期才会发现错误,编译期不会发现,大大的降低开发的效率对于后期的维护以及功能的修改都是不友好的。

    这时我们可以适当的使用类或者map集合封装一下,好像在以后,增加了一个新的特性,叫做可变参数,适当的情况的可以选择可变参数,但是可变参数这个新特性有一定的劣势,这里就不细说了,你们可以查文档看一下可变参数这个新特性的使用方法。

    3java开发技巧

    1.编码之前想一想

    用10分钟,20分钟甚至30分钟的时间来想想你需要什么,想想什么样的设计模式适合你将要编码的东西。你会很庆幸“浪费”了那几分钟,当你不得不更改或添加东西到代码中时你就不将将浪费几分钟而是要花费更多的时间。

    2.注释你的代码

    说真的,没有什么比两个月后检查自己的代码,却不记得它用来干什么更糟糕的了。注释所有重要的内容,当然那些显而易见的就免了吧。

    3.写干净的代码

    错落有致。使用空格。根据功能模块化你的代码。阅读Robert C. Martin写的《Clean Code》,非常有帮助。此外,遵循代码约定/标准(如Java Code Conventions),尤其如果是共享的代码。

    4.重构没有人喜欢用那些超级长的方法。这通常(几乎总是)意味着你混杂了功能。用更易于管理的方法分离代码。还能使得代码更可重用。

    5.不要复制粘贴代码

    如果你有两个或两个以上相同的代码块,那么你可能做错了什么。阅读第4条。

    4java编程思想

    1. Java中的多态性理解(注意与C++区分)

    Java中除了static方法和final方法(private方法本质上属于final方法,因为不能被子类访问)之外,其它所有的方法都是动态绑定,这意味着通常情况下,我们不必判定是否应该进行动态绑定—它会自动发生。

    构造函数并不具有多态性,它们实际上是static方法,只不过该static声明是隐式的。因此,构造函数不能够被override。在父类构造函数内部调用具有多态行为的函数将导致无法预测的结果,因为此时子类对象还没初始化,此时调用子类方法不会得到我们想要的结果。

    2. is-a关系和is-like-a关系

    is-a关系属于纯继承,即只有在基类中已经建立的方法才可以在子类中被覆盖。is-like-a关系:子类扩展了基类接口。它有着相同的基本接口,但是他还具有由额外方法实现的其他特性。

    3. 运行时类型信息(RTTI + 反射)

    概念RTTI:运行时类型信息使得你可以在程序运行时发现和使用类型信息。

    使用方式:Java是如何让我们在运行时识别对象和类的信息的,主要有两种方式(还有辅助的第三种方式,见下描述):一种是“传统的”RTTI,它假定我们在编译时已经知道了所有的类型,比如Shape s = (Shape)s1;

    另一种是“反射”机制,它运行我们在运行时发现和使用类的信息,即使用()。

    其实还有第三种形式,就是关键字instanceof,它返回一个bool值,它保持了类型的概念,它指的是“你是这个类吗?或者你是这个类的派生类吗?”。而如果用==或equals比较实际的Class对象,就没有考虑继承—它或者是这个确切的类型,或者不是。

    工作原理:要理解RTTI在Java中的工作原理,首先必须知道类型信息在运行时是如何表示的,这项工作是由称为Class对象的特殊对象完成的,它包含了与类有关的信息。Java送Class对象来执行其RTTI,使用类加载器的子系统实现。

    无论何时,只要你想在运行时使用类型信息,就必须首先获得对恰当的Class对象的引用,获取方式有三种:

    (1)如果你没有持有该类型的对象,则()就是实现此功能的便捷途,因为它不需要对象信息;

    (2)如果你已经拥有了一个感兴趣的类型的对象,那就可以通过调用getClass()方法来获取Class引用了,它将返回表示该对象的实际类型的Class引用。