摘要: 如果面试官问Integer与int的区别:估计大多数人只会说道两点,Ingeter是int的包装类,int的初值为0,Ingeter的初值为null。但是如果面试官再问一下Integer i = 1;int ii = 1; i==ii为true还是为false?估计就有一部分人答不出来了,如果再问一下其他的,估计更多的人会头脑一片混乱。所以我对它们进行了总结,希望对大家有帮助。 首先看代码: 1 package com.test; 2 /** 3 * 4 * @author 刘玲 5 * 6 */ 7 public class TestInteger { 8 9 /*... 阅读全文
posted @ 2013-05-05 11:13 残剑_ 阅读(156167) 评论(16) 推荐(40) 编辑
摘要: 一、继承关系 继承指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力。在Java中继承关系通过关键字extends明确标识,在设计时一般没有争议性。在UML类图设计中,继承用一条带空心三角箭头的实线表示,从子类指向父类,或者子接口指向父接口。 二、实现关系 实现指的是一个class类实现interface接口(可以是多个)的功能,实现是类与接口之间最常见的关系。在Java中此类关系通过关键字implements明确标识,在设计时一般没有争议性。在UML类图设计中,实现用一条带空心三角箭头的虚线表示,从类指向实现的接口。 三、依赖关系 .. 阅读全文
posted @ 2013-05-03 11:30 残剑_ 阅读(73250) 评论(9) 推荐(28) 编辑
摘要: 类继承和对象组合是复用的两种最常用的技术。一:继承 继承是Is a 的关系,比如说Student继承Person,则说明Student is a Person。继承的优点是子类可以重写父类的方法来方便地实现对父类的扩展。 继承的缺点有以下几点: ①:父类的内部细节对子类是可见的。 ②:子类从父类继承的方法在编译时就确定下来了,所以无法在运行期间改变从父类继承的方法的行为。 ③:如果对父类的方法做了修改的话(比如增加了一个参数),则子类的方法必须做出相应的修改。所以说子类与父类是一种高耦合,违背了面向对象思想。二:组合 组合也就是设计类的时候把要组合的类的对象加入到该类中作为自己... 阅读全文
posted @ 2013-05-01 01:45 残剑_ 阅读(21446) 评论(6) 推荐(9) 编辑
摘要: 问题描述:这时实验心理学中的一个典型的问题,心理学家吧一只老鼠从一个无顶的大盒子的入口处赶进迷宫。迷宫设置很多隔壁,对前进方向形成了许多障碍,心理学家在迷宫的唯一出口处放置了一块奶酪,吸引老鼠仔迷宫中寻找通路以到达出口。 求解思想:回溯法是一种不断试探且及时纠正错误的搜索方法,下面的求解过程采用回溯法。从入口出发,按某一方向向前探索,若能走通(未走过的),即某处可以到达,则到达一个新点,否则试探下一个方向;若所有的方向均没有通路,则沿原路返回前一点,换下一个方向继续试探,直到所有可能的通路都搜索到,或找到一条通路,或无路可走又返回到入口点。这里可以用一个栈来实现,每走一步,将该位置压入栈... 阅读全文
posted @ 2013-04-29 01:10 残剑_ 阅读(13618) 评论(10) 推荐(1) 编辑
摘要: 昨天去面试了,面试的是java实习生的岗位,我主要是想这个暑假找个实习工作做一下,积累一下工作经验。本来昨天就像把这次面试的经历记录下来的,但是由于今天早上有个考试,所以昨天晚上看书去了,就今天晚上抽点时间来写写! 我是上个星期在前程无忧上面投简历到这家公司的---上海音达科技有限公司湖南分公司,第一个接到的电话就是这家公司。打电话给我的是一个女的,首先我还以为是电话面试,但是她并没有问我过多的问题,只是问我是否自己做过一些项目,我说自己有做过一些项目。然后她又问我现在课多不,我说现在课很多,要暑假才能去公司实习。她又接着问我是不是想就暑假实习两个月,我当时就想,如果我说是的话肯定就没机... 阅读全文
posted @ 2013-04-24 23:34 残剑_ 阅读(18999) 评论(38) 推荐(14) 编辑
摘要: 刚刚看到了一关于多线程的面试题目,就试着写了一下。 题目: 模拟妈妈做饭,做饭时发现没有盐了,让儿子去买盐。只有盐买回来之后,妈妈才能继续做饭的过程。 问题分析:既然是面向对象编程,拿到问题是首先就要分析涉及到哪些对象。显然,该问题涉及的对象有:妈妈、儿子和盐。其中妈妈和儿子都是线程类,共享资源就是盐,所以盐Salt类的方法都要设置为同步方法。具体代码如下: 1 package com.sync; 2 /** 3 * 题目: 模拟妈妈做饭,做饭时发现没有盐了,让儿子去买盐 4 * 只有盐买回来之后,妈妈才能继续做饭的过程。 5 * @author Administra... 阅读全文
posted @ 2013-04-20 22:16 残剑_ 阅读(1448) 评论(2) 推荐(1) 编辑
摘要: 今天放假,又有时间继续啃《java设计模式》这本书了。每次学会一种设计模式内心都会有一种小小的成就感,但是懂是懂了,不知道会不会用。主要是现在没有什么项目经验,设计模式学了也派不上用场。不管怎样,学了总比没学好,以后总会派上用场的。 首先,何为观察者模式?观察者模式是关于多个对象想知道一个对象中数据的变化的情况一种模式。比如说现在几乎所有的高校附近都会有大学生兼职中心,也就是兼职中介吧(大一大二的时候还去过,加会员还交了100大洋呢。),兼职中心每天都会把兼职信息通知给所有的会员。这就是一个观察者模式,这里会员也就是观察者,兼职中心就是被观察者,也称作主题。 观察者模式结构中包括四种角... 阅读全文
posted @ 2013-04-20 20:11 残剑_ 阅读(2448) 评论(3) 推荐(2) 编辑
摘要: 昨天重新学习了java多线程的使用,多线程的难点就在线程之间的协调。在《操作系统》一课中,我们学习了进程,其实多线程和多进程一样,都会涉及到多个进程或者线程对某一资源共享访问的问题,当多个线程都需要修改这个资源的时候就会出现线程安全问题。 比如说在银行开个账户会有一个存折和一张卡,如果某一天同一时间丈夫拿着存折去柜台取钱,而妻子拿着银行卡去ATM取钱。当丈夫查询余额里面有3000元,正准备取2000元,这时候妻子也到ATM里面查询也有3000,也取2000元。其实银行不可能让我们这么做,如果这样的话那我们天天取钱去了,还搞什么工作啊。其实在丈夫查询的时候已经对该账号上了锁,另外的银行卡要... 阅读全文
posted @ 2013-04-17 21:02 残剑_ 阅读(4978) 评论(7) 推荐(4) 编辑
摘要: 以前学习基础的时候学习了一段时间的多线程,上课的时候老师也讲过一遍,那时候感觉学的似懂非懂。因为到现在很长一段时间没有用到多线程的知识,所以现在基本上忘了差不多了。但是下个星期要面试了,所以今天特意又研究了一下多线程,免得被问到多线程问题时什么都不记得了那就麻烦了。现在对java比较熟悉了,所以再一次学习多线程知识,感觉没有那么难了(记得刚接触多线程的时候,感觉非常吃力)。 首先讲一下进程和线程的区别: 进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1--n个线程。 线程:同一类线程共享代码和数据空间,每个线程有独立的运行栈和程... 阅读全文
posted @ 2013-04-16 22:54 残剑_ 阅读(59373) 评论(10) 推荐(6) 编辑
摘要: Set不保存重复的元素。Set中最常被使用的是测试归属性,你可以很容易的询问某个对象是否在某个Set中。Set具有与Collection完全一样的接口,因此没有任何额外的功能。实际上Set就是Collection,只是行为不同。 实现了Set接口的主要有HashSet、TreeSet、LinkedHashSet这几个共同点就是每个相同的项只保存一份。他们也有不同点,区别如下: 1.HashSet: HashSet使用的是相当复杂的方式来存储元素的,使用HashSet能够最快的获取集合中的元素,效率非常高(以空间换时间)。会根据hashcode和equals来庞端是否是同一个对象,如果... 阅读全文
posted @ 2013-04-16 16:30 残剑_ 阅读(12687) 评论(0) 推荐(2) 编辑
摘要: 在许多设计中,经常设计一个对象请求另一个对象执行某一个操作。如果请求者无法或者不希望直接和被请求者打交道,即请求对象无法或者不希望含有被请求者的引用,那么可以使用命令模式。命令模式里称提出请求的对象为请求者,被请求者的对象为接收者。在命令模式中,当一个对象请求另一个对象调用其方法时,不和被请求者直接打交道,而是把这种“请求”封装到一个“命令”对象中,封装的手段将“请求”封装到“命令”对象的一个方法中。命令模式的核心就是使用命令对象来封装方法调用。 例如,在军队作战时,指挥官要命令三连偷袭敌人。但是指挥官这时无法或者不希望和三连直接取得联系,那么指挥官可以发出一个命令,把该命令的执行者设置... 阅读全文
posted @ 2013-04-15 20:41 残剑_ 阅读(1911) 评论(3) 推荐(3) 编辑
摘要: List承诺可以将元素维护在特定的序列中。List接口在Collection的基础上添加了大量的方法,使得可以在List的中间插入和删除元素。List与 set 不同,列表通常允许重复的元素。并且存放的顺序与插入的顺序一致。 List接口的常用方法有: add(E o) :将指定对象加入到列表中。 add(int index, E element) :将对象加入到指定位置处。 addAll(Collection<? extends E> c) :追加指定 collection 中的所有元素到此列表的结尾,顺序是指定 collection 的迭代器返回这些元素的顺序(可选操作)。 . 阅读全文
posted @ 2013-04-15 13:23 残剑_ 阅读(6563) 评论(0) 推荐(2) 编辑
摘要: 常用的算法的时间复杂度和空间复杂度排序法最差时间分析平均时间复杂度稳定度空间复杂度冒泡排序O(n2)O(n2)稳定O(1)快速排序O(n2)O(n*log2n)不稳定O(log2n)~O(n)选择排序O(n2)O(n2)稳定O(1)二叉树排序O(n2)O(n*log2n)不一顶O(n)插入排序O(n2)O(n2)稳定O(1)堆排序O(n*log2n)O(n*log2n)不稳定O(1)希尔排序OO不稳定O(1)1、时间复杂度 (1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算 阅读全文
posted @ 2013-04-14 20:48 残剑_ 阅读(1291) 评论(3) 推荐(3) 编辑
摘要: 迭代器模式遍历集合的成熟模式,迭代器模式的关键是将遍历集合的任务交给一个叫做迭代器的对象,它的工作时遍历并选择序列中的对象,而客户端程序员不必知道或关心该集合序列底层的结构。 迭代器模式的结构中包括四种角色。 一、集合:一个接口,规定了具体集合需要实现的操作。 二、具体集合:具体集合石实现了集合接口的一个实例,具体的集合按照一定的结构存储对象。具体集合应该有一个方法,该方法返回一个针对该集合的具体迭代器。 三、迭代器:一个接口,规定了遍历具体集合的方法,比如next()方法。 四、具体迭代器:实现了迭代器接口的类的实例。具体迭代器在实现迭代器接口所规定的遍历集合的方法时,比如ne... 阅读全文
posted @ 2013-04-14 20:28 残剑_ 阅读(5798) 评论(1) 推荐(2) 编辑
摘要: spring的IOC容器能够帮我们自动new对象,对象交给spring管之后我们不用自己手动去new对象了。那么它的原理是什么呢?是怎么实现的呢?下面我来简单的模拟一下spring的机制,相信看完之后就会对spring的原理有一定的了解。 spring使用BeanFactory来实例化、配置和管理对象,但是它只是一个接口,里面有一个getBean()方法。我们一般都不直接用BeanFactory,而是用它的实现类ApplicationContext,这个类会自动解析我们配置的applicationContext.xml,然后根据我们配置的bean来new对象,将new好的对象放进一个Ma... 阅读全文
posted @ 2013-04-14 00:14 残剑_ 阅读(40114) 评论(3) 推荐(11) 编辑
摘要: 在java中,除了对象适配器外,还有一种更常见的适配器,即单接口适配器,单接口适配器可以让用户更加方便的使用该接口。 例如,java.awt.event包中的MouseListener接口一共定义了五个方法:1 void mouseClicked(MouseEvent arg0) {}2 vo... 阅读全文
posted @ 2013-04-12 22:48 残剑_ 阅读(1874) 评论(2) 推荐(1) 编辑
摘要: 问题导入:比如有A型螺母和B型螺母,那么用户可以再A型螺母上直接使用按着A型螺母生产的A型螺丝,同样也可以在B型螺母上直接使用按着B型螺母标准生产的B型螺丝。但是由于A型螺母和B型螺母的标准不一样,用户在A型螺母上不能直接使用B型的螺丝,反之也一样。该如何达到这个目的呢? 使用适配器就可以解决这个问题:生产一种“A型螺母适配器”,这种A型螺母适配器的前端符合A型螺母标准要求,可以拧在A型螺母上,后端又焊接了一个B型螺母。这样用户就可以借助A型螺母适配器在A型螺母上使用B型的螺丝了。 适配器模式又称为包装器,是用来将一个类的接口转换成客户希望的另外一个接口。这可以使得原本由于接口不兼容而... 阅读全文
posted @ 2013-04-12 22:07 残剑_ 阅读(17875) 评论(4) 推荐(2) 编辑
摘要: 如果想在自己的网页上面加入百度地图的话,可以用百度地图的api.具体使用方法如下: 第一步:进入百度创建地图的网站http://api.map.baidu.com/lbsapi/creatmap/,搜索出自己要展示的位置,如下图所示。 第二步:设置地图,大家可以对网站显示地图的宽高进行设置,其余选项不动。第三步:添加标注。点击第一个图标后,在右侧找到自己的位置,单击鼠标左键可定位。标记图标处可更换图标形状,名称和备注填入位置相关信息。第四步:获取代码。将代码贴到你的网页里就OK了。代码如下: 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 阅读全文
posted @ 2013-04-10 23:44 残剑_ 阅读(4665) 评论(5) 推荐(2) 编辑
摘要: 首先需要创建一个进程,然后用该进程去打开本地应用程序,当然也可以调用cmd命令。 1 package com.test; 2 3 public class callExe { 4 5 /** 6 * @param args 7 */ 8 public static void main(String[] args) { 9 Runtime rt = Runtime.getRuntime();10 Process p = null;11 String fileLac = "";12 try {1... 阅读全文
posted @ 2013-04-10 21:58 残剑_ 阅读(7712) 评论(2) 推荐(1) 编辑
摘要: 在java中,可能使用到final关键字修饰的有数据、方法和类。 一、final 修饰数据 有final修饰的数据是用来告诉编译器一块数据是恒定不变的,有时数据恒定不变是很有用的,比如: 1.一个永不改变的编译时常量。 2.一个在运行时被初始化的值,但是又不希望它被改变。 编译时常量必须是基本数据类型,并且以关键字final修饰,在对这个常量进行定义的时候必须进行赋值,并且以后不能被改变。 对于基本类型,final使数值恒定不变;而对于对象引用,final使引用恒定不变,也就是说某个引用不能再指向其他对象了,但是当前指向的这个对象自身的数据是可以改变的。 二、fina... 阅读全文
posted @ 2013-04-09 13:02 残剑_ 阅读(2542) 评论(0) 推荐(2) 编辑