全国服务热线:400-035-8011

位置:沈阳IT培训学院 > 学校动态 > 沈阳Java培训之Java编程思想

沈阳Java培训之Java编程思想

来源:沈阳IT培训学院时间:2019/8/9 16:49:15

  沈阳Java培训之Java编程思想

  Java提供了两个用于高精度技术的类:BigInteger和BigDecimal。虽然它们大体上属于"包装器类"的范畴,但二者都没有对应的基本类型。

  这两个类包含的方法,提供的操作与对基本类型所能执行的操作相似。也就是说,能作用于int或float的操作,也同样能作用于BigInteger和BigDecimal。只不过必须以方法调用的方式取代运算符方式来实现。由于这么做复杂了许多,所以运算速度会比较慢。

  以速度换取了精度

  BigInteger支持任意精度的整数。也就是说,在运算中,可以地表示任何大小的整数值,而不会丢失任何信息。

  BigDecimal支持任何精度的定点数。例如,可以用它进行的货币计算。

  return

  如果在返回void的方法中没有return语句。那么在该方法的结尾处会有一个隐式的return,因此在方法中并非总是必须要有一个return语句。但是,如果一个方法声明它将返回void之外的其它东西,那么必须确保每一条代码路径都将返回一个值。

  break和continue

  在任何迭代语句的主体部分,都可用break和continue控制循环的流程。

  switch

  switch语句是实现多路选择的一种干净利落的方法。但它要求使用一个选择因子,并且必须是int或char那样的整数值。例如,假如将一个字符串或者浮点数作为选择因子使用,那么它们在switch语句里是不会工作的。对于非整数类型,则必须使用一系列if语句。Java SE5的新特性enum可以帮助我们减弱这种限制,因为enum可以和switch协调工作。

  在case语句中,使用单引号引起的字符也会产生用于比较的整数值。尽管可以用this调用一个构造器,但却不能调用两个。此外,必须将构造器调用置于起始处,否则编译器会报错。除构造器外,编译器禁止在其他任何方法中调用构造器。

  再论组合与继承

  在面向对象编程中,生成和使用程序代码有可能采用的方法就是直接将数据和方法包装进一个类中,并使该类的对象。也可以运用组合技术使用现有类来开发新的类;而继承技术其实是不太常用的。到底是该用组合还是继承,一个清晰的判断办法就是问一问自己是否需要从新类向基类进行向上转型。如果必须向上转型,则继承是必要的;但如果不需要,则应当好好考虑自己是否需要向上转型。

  编写构造器时有一条有效的准则:“用尽可能简单的方法使对象进入正常状态;如果可以的话,避免调用其他方法”。在构造器内能够安全调用的那些方法是基类中的final方法(也适用于private方法,它们自动属于final方法)。这些方法不能被覆盖,因此也就不会出现上述令人惊讶的问题。

  使用接口的核心原因:为了能够向上转型为多个(多实现)基类型(以及由此而带来的灵活性),使用接口的第二个原因却是与使用抽象基类相同:防止客户端程序员创建该类的对象,并确保这仅仅是建立一个接口。


沈阳Java培训之Java编程思想


  接口与工厂

  接口是实现多重继承的途径,而生成遵循某个接口的对象的典型方式就是工厂方法设计模式。这与直接调用构造器不同,我们在工厂对象上调用的是创建方法,而该工厂对象就生成接口的某个实现的对象。HashSet、TreeSet和LinkedHashSet都是Set类型,输出显示在Set中,每个相同的项只有保存一次,但是输出也显示了不同的Set实现存储元素的方式也不同。HashSet使用的是相当复杂的方式来存储元素的,如果存储顺序很重要,那么可以使用TreeSet,它按照比较结果的升序保存结果;或者使用LinkedHashSet,它按照被添加的顺序保存对象。

  键和值在Map中的保存顺序并不是它们的插入顺序,因为HashMap实现使用的是一种非常快的算法来控制顺序。

  本例使用了三种基本风格的Map:HashMap、TreeMap和LinkedHashMap。与HashSet一样,HashMap也提供了快的查找技术,也没有按照任何明显的顺序来保存其元素。TreeMap按照比较结果的升序保存键,而LinkedHashMap则按照插入顺序保存键,同时还保留了HashMap的查询速度。

  HashSet输出的顺序没有任何规律可循,这是因为出于速度原因的考虑,HashSet使用了散列。

  HashSet所维护的顺序与TreeSet或LinkedHashSet都不同,因为它们的实现具有不同的元素存储方式。

  TreeSet将元素存储在红-黑树数据结构中,而HashSet使用的是散列函数。LinkedHashSet因为查询速度的原因也使用了散列,但是看起来它使用了链表来维护元素的插入顺序。

  PriorityQueue

  Integer、String和Character可以与PriorityQueue一起工作,因为这些类已经内建了自然排序。

  如果你想在PriorityQueue中使用自己的类,就必须包括额外的功能以产生自然排序,或者必须提供自己的Comparator。

  Map是一种将对象(而非数字)与对象相关联的设计。HashMap设计用来访问;而TreeMap保持"键"始终处于排序状态,所以没有HashMap快。LinkedHashMap保持元素插入的顺序,但是也通过散列提供了访问能力。

领取试听课
每天限量名额,先到先得

尊重原创文章,转载请注明出处与链接:http://www.peixun360.com/2005/news/58185/违者必究! 以上就是沈阳IT培训学院 小编为您整理 沈阳Java培训之Java编程思想的全部内容。

温馨提示:提交留言后老师会第一时间与您联系!热线电话:400-035-8011