
java基础学习
依然小黄
这个作者很懒,什么都没留下…
展开
-
大公司最喜欢问的Java集合类面试题
java.util包中包含了一系列重要的集合类,而对于集合类,主要需要掌握的就是它的内部结构,以及遍历集合的迭代模式。接口:CollectionCollection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提供直接继承自Collect转载 2015-07-08 11:01:48 · 486 阅读 · 0 评论 -
java笔记-竞考网错题
1、Set接口主要实现了两个实现类: HashSet : HashSet类按照哈希算法来存取集合中的对象,存取速度比较快。 TreeSet : TreeSet类实现了SortedSet接口,能够对集合中的对象进行排序。 Set 的用法:存放的是对象的引用,没有重复对象。 2、Set 和List 都继承了Conllection,Map没有。 3、List(列表): Li原创 2015-07-10 14:03:40 · 1202 阅读 · 0 评论 -
剑指offer习题2
逆序链表 public ListNode ReverseList(ListNode listNode){ if(listNode==null) return null; else { ArrayList<Integer> arrayList=new ArrayList<Integer>();原创 2015-09-28 16:49:13 · 263 阅读 · 0 评论 -
java中的clone
1、作用:取代C/C++中的指针。因为,java在处理基本数据类型时,采用按值传递的方式执行,而其他类型是按引用传递的。但在某些情境下,需要保证复制出来的对象进行修改后,原有的对象不发生变化。在Prototype中,就需要用clone出一个对象。 2、实现步骤:继承Cloneable接口,仅仅是标识接口,并没有任何接口方法。重写Object类中的clone()接口。在clone方法中调用su原创 2016-04-20 18:48:25 · 293 阅读 · 0 评论 -
java集合的底层实现
ArrayList (1)底层采用数组实现,若使用不带参数的构造方法,则生成长度为10的Object类型数组。 (2)若个数超过10,则生成一个新数组,长度为原数组的1.5倍+1,原数组的内容复制到新数组中。 (3)删除时,后续前移,代价高。 HashMap (1)HashMap是基于哈希表的Map接口的非同步实现(Hashtable跟HashMap很像,唯一的区别是Hashtalbe中的原创 2016-08-16 22:48:11 · 6959 阅读 · 0 评论 -
接口与抽象类
接口: (1)接口可继承多个接口; (2)成员变量默认public static final,必须显示初始化; (3)方法默认public abstract,隐式声明; (4)无构造,且不能实例化; (5)不能实现另一个接口,但可继承多个接口; (6)若某个类实现一个接口,必须实现接口里面的所有抽象方法; 抽象类: (1)只能被继承,不能实例化; (2)可以有一般的变量和方法;原创 2016-09-03 00:59:53 · 358 阅读 · 0 评论 -
java虚拟机模型
本文内容部分摘自:http://blog.youkuaiyun.com/taohuaxinmu123/article/details/24472073 java虚拟机在执行java程序的过程中会把它锁管理的内存划分为若干个不同的数据区域: (1)程序计数器:它的作用是当前线程所执行的字节码的行号指示器,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令。 多线程是通过线程轮流切换原创 2016-08-13 18:22:09 · 389 阅读 · 0 评论 -
Java虚拟机模型区溢出的处理方式
1、堆溢出 采用内存映像工具(如Eclipse Momery Analyzer)对dump出来的堆存储快照进行分析,重点hi确认内存中的对象是否是必须的,先分清楚是泄露还是溢出。 若是泄露,进一步通过工具查看泄漏对象到GC Roots的引用链,观察泄漏对象是通过怎样的路径与GC roots相关联并导致垃圾收集器无法自动回收他们,掌握了泄漏对象的类型信息,以及GC原创 2016-08-14 09:43:45 · 368 阅读 · 0 评论 -
判断对象是否已死的算法
(1)引用计数算法,给每个对象添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,就减1;任何时刻都为0的对象就不可能再被引用。 缺点:很难解决对象之间的相互循环引用问题 (2)根搜索算法 “GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径成为引用链,当从GC Roots到这个对象不可达时,则此对象是不可用的。 “GC Roots”对象包括:原创 2016-08-14 11:34:40 · 368 阅读 · 0 评论 -
java引用的类型
(1)强引用 new出来的,只要强引用还存在,收集器不会回收掉被引用的对象。 (2)软引用(还有用,非必须对象) 在系统内存溢出异常之前,将这些对象引进回收范围之中并进行第二次回收,若回收后内存仍不足,则抛溢出异常。Softreference类实现软引用。 (3)弱引用(非必须) 被弱引用关联的对象只能生存到下一次垃圾收集发生之前,不管内存是否充足。 (4)虚引用(可以无视) 无法通过原创 2016-08-14 11:54:08 · 258 阅读 · 0 评论 -
垃圾收集算法
1、标记-清除 标记所有需要回收的对象,在标记完成后统一回收掉所有被标记的对象。 缺点:效率问题;空间问题:产生了大量不连续的内存碎片,进而导致需要分配较大对象时无法找到足够的连续内存而提前触发另一次垃圾收集动作。 2、改进:复制 内存一分为二,用空一块,把活着对象复制到另一块,清空原来那块。 优点:不存在碎片;实现简单,运行高效。 缺点:将内存缩小为原来的一般,代价太高;受限于存活率,原创 2016-08-14 12:15:37 · 237 阅读 · 0 评论 -
静态内部类和非静态内部类的区别
转载地址:http://www.cnblogs.com/devinzhang/archive/2012/02/09/2344105.html转载 2015-07-16 21:57:54 · 252 阅读 · 0 评论 -
java取反运算
~:是按位取反,不区分符号位和数字位一个简单的计算法:~i = (-i)-1例如: i = 45678; ~i = -i-1= -45679转载 2015-07-15 21:33:36 · 5128 阅读 · 0 评论 -
Java内存分配和String类型的深度解析***
转载地址http://www.codeceo.com/article/java-memory-string.html转载 2015-07-08 19:44:06 · 283 阅读 · 0 评论 -
java细节总结
1、抽象类可以被多个子类继承,但每个子类之恩那个继承一个抽象类。2、java提供了一个系统级的线程,即垃圾回收器线程。用来对每一个分配出去的内存空间进行跟踪。当JVM空闲时,自动回收每块可能被回收的内存,GC是完全自动的,不能被强制执行。程序员最多只能用System.gc()来建议执行垃圾回收器回收内存,但是具体的回收时间,是不可知的。当对象的引用变量被赋值为null,可能被当成垃圾。原创 2015-07-07 15:53:49 · 566 阅读 · 0 评论 -
欢迎使用优快云-markdown编辑器
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl原创 2015-07-02 21:59:29 · 246 阅读 · 0 评论 -
java面试题集锦
参考地址:http://blog.youkuaiyun.com/jackfrued/article/details/17403101 1、TreeMap和TreeSet在排序时如何比较元素?Collections工具类中的sort()方法如何比较元素?答:TreeSet要求存放的对象所属的类必须实现Comparable接口,该接口提供了比较元素的compareTo()方法,当插入元素时会回调该方法比较元素的大转载 2015-07-09 21:20:25 · 673 阅读 · 0 评论 -
java深入解析-第1章 基本概念
1、goto和const都是c/c++的关键字,但java也将它们定义为关键字,但是却没有任何语法应用,也就是保留,因此把他们作为标识符是不允许的。 2、true、false、null这三个是字面常量,前两者是布尔类型的字面常量,后者是引用类型的。同样不可以作为标识符使用。 附录:关键字列表 abstract assert boolean break byte case catch char原创 2015-07-03 20:31:52 · 471 阅读 · 0 评论 -
java深入解析-第1章 基本概念2
1、十进制表示的浮点值只有很小一部分可以使用二进制准确存储,大多数存储的都是近似值。 2、在使用浮点类型做比较运算时需要格外小心。另外,在数量级相差很大的浮点数据间做加减运算可能也无法得到预期的结果。 3、从整型转换为浮点类型时,如果整型数据的值过大(小),就可能损失一些最低有效位,从而造成数值的不准确性。 话题7和8略过 4、加强型for循环右侧变量必须为数组类型或者Iterable类型。原创 2015-07-04 10:50:23 · 328 阅读 · 0 评论 -
java深入解析-第2章 运算符与表达式
1、编译器在分析字符时,会尽可能多地结合有效字符。并且“过度”地贪心,而不管这种结合方式是否符合语法规则。如i+++j会处理为(i++)+j;然而a–b会处理a– b,编译出错。 2、贪心规则是有用的,因为这样可以对转义字符等进行特殊处理。 3、前置++与后置++都是先将变量的值加1,而不是前置++先加1然后运算,而后置++先运算后加1。 4、从程序上说,后置++先将变量赋值给一个临时变量,然原创 2015-07-04 11:23:19 · 353 阅读 · 0 评论 -
java深入解析-第2章 运算符与表达式2
1、int类型占用4字节,32位,而long类型占用8字节,64位。3种移位运算符,<<、>>和无符号右移>>>,当左侧操作数为int类型或long类型时,如果右侧操作数大于31或63,系统会做如下处理:若左侧为int,右侧操作数如果是负数先转换成补码,与掩码0x1f做与运算,也就是只有低五位是有效的,然后左侧操作数再移动相应的位数。同理,左侧为long时,是取6位有效。2、乘除与移位不完全一样原创 2015-07-06 15:55:29 · 549 阅读 · 0 评论 -
java深入解析-第3章 String类
1、如果是在循环中对String对象进行连接,应该直接使用StringBuilder代替String的”+”连接,这样可以提高性能。 2、对于编译时常量,在编译后直接计算出字符串的值,而不会再运行时创建临时的StringBuilder对象来完成字符串连接。 3、String对象是不可变的。因为String类是final类型的,我们无法继承该类。 4、String类那些看似修改字符序列的方法实际原创 2015-07-07 14:29:30 · 347 阅读 · 0 评论 -
在线java编辑器
http://www.mcqyy.com/RunCode/java/原创 2015-07-14 20:46:21 · 9149 阅读 · 0 评论 -
java深入解析-第4章 方法、构造器与变量
1、作为应用程序入口的main方法,需要将其生命为public、static、void,并且参数为String类型的数组或可变参数。在程序启动时,由Java虚拟机调用。 2、main方法在表现行为上,与其他方法基本相同,可以重载、由其他方法调用、继承、隐藏,也可以抛出异常,带有类型参数。 3、当两个或多个方法的名称相同,而参数列表不同时,这几个方法就构成了重载。重载方法可以根据参数列表对应的类型原创 2015-07-07 15:19:36 · 357 阅读 · 0 评论 -
多线程同步的五种方法
本文参考于http://www.kuqin.com/shuoit/20150910/347986.html?url_type=39&object_type=webpage&pos=1 1、同步方法;2、同步代码块;3、使用特殊域变量(volatile)实现线程同步;volatile关键字为域变量的访问提供了一种免锁机制使用volatile修饰域相当于告诉虚拟机该域可能会被其他线程更新每次使用转载 2016-09-07 10:31:36 · 4280 阅读 · 0 评论