当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:13:00  来源:本站整理

<b>Java学习杂谈(二)</b>[Java编程]

赞助商链接



  本文“<b>Java学习杂谈(二)</b>[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

鉴于上回写的一点感触大家不嫌弃,都鼓舞小弟持续写下去,好不简单等到国庆黄金周,练习总算有一个歇息的阶段,于是这就开始写第二篇了.但愿这次写的仍旧对情投意合的朋友们有所帮忙.上回讲了Java动态加载机制、classLoader原理和关于jdk和jre三个问题.这次持续着讲一些具体的类库??

1.关于调集框架类

相信学过Java的各位对这个名词并不陌生,对  java.util.*这个package必定也不陌生.不知道大家查询API的时刻怎么去审视大概解析此中的一个package,每个包最重要的两个部份就是interfaces和classes,接口代表了它能做什么,实现类则代表了它若何去做.关注实现类之前,我们应当先理解清楚它的根源接口,不管在j2se还是j2ee中,都应当是这样.那么我们先看这三个接口:List、Set、Map.大概有些人不太熟习这三个名字,但相信大部份人都熟习ArrayList,LinkedList,TreeSet,HashSet,HashMap,Hashtable等实现类的名字.它们的辨别也是满简单理解的,List放可以反复的对象调集,Set放不可反复的对象组合,而Map则放  <Key,Value  > 这样的名值对,Key不可反复,Value可以.这里有几个简单混合的问题:

到底Vector和ArrayList,Hashtable和HashMap有什么辨别?

很多面试官喜好问这个问题,其实更专业一点应当这样问:新调集框架和旧调集框架有哪些辨别?新调集框架大家可以在这些包中找since  jdk1.2的,之前的如vector和Hashtable都是旧的调集框架包含的类.那么辨别是?

a.新调集框架的命名越发科学公道.比方List下的ArrayList和LinkedList b.新调集框架下全部都是非线程安全的.倡议去jdk里面包含的源代码里面自己去亲身看看vector和ArrayList的辨别吧.当然假如是jdk5.0之后的会对比丢脸一点,因为又加入了泛型的语法,近似c++的template语法.

那么大家能否想过为什么要从旧调集框架默许全部加锁避免多线程拜候更新到新调集框架全部撤消锁,默许方法支持多线程?(当然需求的时刻可以利用collections的静态办法加锁到达线程安全)

笔者的概念是任何技术的发展都未必是遵守它们的初衷的,很多庞大改变是遭到客观环境的影响的.大家知道Java的初衷是为什么而开辟的麽?是为嵌入式程序开辟的.记得上一篇讲到classLoader机制麽?那恰是为了节俭嵌入式开辟环境下内存而计划的.而走到本日,Java成了人们心中为互联网诞生的语言.互联网意味着什么?多线程是必定的趋向.客观环境在变,Java技术也随着飞速发展,招致越来越脱离它的初衷.据说Sun公司其实主打的是J2se,后果又是由于客观环境影响,J2se几近忘记,留在大家评论核心的一向是j2ee.

技术的细节这里就不多说了,只有效了才能真正理解.注释这些恰是为了帮忙大家理解正在学的和将要学的任何技术.之后讲j2ee的时刻还会再谈论.

多扯句题外话:几十年前的IT伟人是IBM,Mainframe市场无人可比.微软若何打败IBM?恰是由于硬件飞速发展,对个人PC的需求这个客观环境,让微软通过OS称为了第二个伟人.下一个打败微软的呢?Google.若何做到的?假如微软并不和IBM争大型机,Google借着互联网飞速发展这个客观环境作为决意性因素,避开跟微软争OS,而是走搜索引擎这条路,称为第3个伟人.那么第4个伟人是谁呢?很多专家预言将在亚洲大概中国呈现,Whatever,客观环境改变趋向才是决意大方向的关键.当然笔者也但愿会呈目前中国.

2.关于Java计划情势

身边的很多在看GOF的23种计划情势,仿佛学习它无论在学校还是在职场,都成了一种风行风气.我不想摆列注释这23种Design  Pattern,我写这些的初衷一向都是谈自己的阅历和见解,但愿能帮忙大家理解.

首先我认为计划情势只是对一类问题的一种通用办理办法,只如果面向对象的编程预言都可以用得上这23种.理解它们最好的办法就是亲身去写每一种,哪怕是一个简单的利用就充足了.假如代码实现也记不住的话,记忆它们对应的UML图会是一个对比好的办法,当然前提是必须理解UML.同时最好能操纵Java自身的类库帮忙记忆,比方对比常用的察看者情势,在java.util.*有现成的Observer接口和Observable这个实现类,看看源代码相信就充足理解察看者情势了.再比方装潢器情势,大家只要写几个关于java.io.*的程序便可以完好理解什么是装潢器情势了.有很多人认为刚入门的时刻不该接触计划情势,比方图灵计划丛书系列很出名的那本《Java计划情势》,作者:  Steven  John  Metsker,大部份例子诚恳说令目前的我也很迷惑.但我仍旧差别意入门跟学习计划情势有任何冲突,只是我们需求知道每种情势的概念的和典型的利用,这样我们在第一次编写  FileOutputStream、BufferedReader、PrintWriter的时刻就可以感遭到本来计划情势离我们如此之近,并且并非多么奥秘的东西.

别的,在学习某些情势的同时,反而更能帮忙我们理解java类库的某些特点.比方当你编写原型(Prototype)情势的时刻,你必须理解的是  java.lang.Cloneable这个接口和全部类的基类Object的clone()这个办法.即深copy和浅copy的辨别:Object.clone()默许实现的是浅copy,也就是复制一份对象拷贝,但假如对象包含其他对象的引用,不会复制引用,所以原对象和拷贝共用那个引用的对象.

深copy当然就是包含对象的引用都一同复制啦.这样原对象和拷贝对象,都辨别拥有一份引用对象.假如要实现深copy就必须首先实现  java.lang.Cloneable接口,然后重写clone()办法.因为在Object中的clone()办法是protected签名的,而  Cloneable接口的作用就是把protected放大到public,这样clone()才能被重写.

那么又有个问题了?假如引用的对象又引用了其他对象呢?这样一向判断并复制下去,是不是显得很麻烦?曾经有位前辈奉告我的办法是重写clone办法的时刻直接把原对象序列化到磁盘上再反序列化回来,这样不用判断便可以得到一个深copy的后果.假如大家不理解序列化的作法倡议看一看  ObjectOutputStream和ObjectInputStream

归根结底,情势只是思惟上的东西,把它当作前人总结的经验其实一点都不为过.鼓舞大家着手自己去写,比方代理情势,可以简单的写一个Child类,Adult类.Child要买任何东西由Adult来代理实现.简单来说就是Adult里的buy()内部实际调用的是Child的buy(),但是表露在main函数的倒是Adult.buy().这样一个简单的程序就充足理解代理情势的基本含义了.


  以上是“<b>Java学习杂谈(二)</b>[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .