随笔分类 -  Java学习

这里是Java基础知识
摘要: 阅读全文
posted @ 2017-07-23 20:52 alittlecomputer 阅读(195) 评论(0) 推荐(0)
摘要:本文主要来介绍一下Java中的不可变对象,以及Java中String类的不可变性,那么为什么Java的String类是不可变对象?让我们一起来分析一下。 答案一: 最流行的Java面试题之一就是:什么是不可变对象(immutable object),不可变对象有什么好处,在什么情况下应该用,或者更具 阅读全文
posted @ 2017-07-23 20:31 alittlecomputer 阅读(280) 评论(0) 推荐(0)
摘要:方法的重写(override)两同两小一大原则: 方法名相同,参数类型相同 子类返回类型小于等于父类方法返回类型, 子类抛出异常小于等于父类方法抛出异常, 子类访问权限大于等于父类方法访问权限。 阅读全文
posted @ 2017-06-08 17:31 alittlecomputer 阅读(348) 评论(0) 推荐(0)
摘要:stream结尾都是字节流,reader和writer结尾都是字符流 两者的区别就是读写的时候一个是按字节读写,一个是按字符。 实际使用通常差不多。 在读写文件需要对内容按行处理,比如比较特定字符,处理某一行数据的时候一般会选择字符流。 只是读写文件,和文件内容无关的,一般选择字节流。 阅读全文
posted @ 2017-06-08 17:30 alittlecomputer 阅读(125) 评论(0) 推荐(0)
摘要:桥接模式 阅读全文
posted @ 2017-06-08 17:28 alittlecomputer 阅读(4879) 评论(0) 推荐(1)
摘要:Java中的多线程是一种抢占式的机制,而不是分时机制。抢占式的机制是有多个线程处于可运行状态,但是只有一个线程在运行。 共同点 : 1. 他们都是在多线程的环境下,都可以在程序的调用处阻塞指定的毫秒数,并返回。 2. wait()和sleep()都可以通过interrupt()方法 打断线程的暂停状 阅读全文
posted @ 2017-06-08 16:56 alittlecomputer 阅读(232) 评论(0) 推荐(0)
摘要:getParameter()是获取POST/GET传递的参数值;getInitParameter获取Tomcat的server.xml中设置Context的初始化参数 getAttribute()是获取对象容器中的数据值;getRequestDispatcher是请求转发。 如何获取ServletC 阅读全文
posted @ 2017-06-08 15:05 alittlecomputer 阅读(155) 评论(0) 推荐(0)
摘要:输出结果为goodandgbc 首先说下String确实是个不可变对象,这个不可变是JDK特有的,写JAVA的人特意针对的 但是这与本题无关,题目中的形参str只是原引用ex.str的一个引用副本,传的是一个副本地址值,这个值与ex.str地址值是不一样的,但是它们同时指向了堆中的对象new Str 阅读全文
posted @ 2017-06-08 14:46 alittlecomputer 阅读(450) 评论(0) 推荐(0)
摘要:看下面的代码: 答案是: 1.子父类存在同名成员时,子类中默认访问子类的成员,可通过super指定访问父类的成员,格式:super.xx (注:xx是成员名); 2.创建子类对象时,默认会调用父类的无参构造方法,可通过super指定调用父类其他构造方法,格式:s uper(yy) (注:yy是父类构 阅读全文
posted @ 2017-06-08 14:16 alittlecomputer 阅读(183) 评论(0) 推荐(0)
摘要:编译错误 在调用子类构造器之前,会先调用父类构造器,当子类构造器中没有使用"super(参数或无参数)"指定调用父类构造器时,是默认调用父类的无参构造器,如果父类中包含有参构造器,却没有无参构造器,则在子类构造器中一定要使用“super(参数)”指定调用父类的有参构造器,不然就会报错 阅读全文
posted @ 2017-06-08 14:08 alittlecomputer 阅读(296) 评论(0) 推荐(0)
摘要:从Java虚拟机的角度来讲,只存在两种不同的类加载器:一种是启动类加载器(Bootstrap ClassLoader),这个类加载器使用C++语言实现,是虚拟机自身的一部分,另外一种就是所有其他的类加载器,这些类加载器都由Java语言实现,独立于虚拟机外,并且全都继承自抽象类java.lang.Cl 阅读全文
posted @ 2017-05-12 15:20 alittlecomputer 阅读(306) 评论(0) 推荐(0)
摘要:Java虚拟机规范中并没有进行强制玉树什么情况下需要开始类加载过程。但是对于初始化阶段,虚拟机规范则是严格规定了有且仅有5种情况必须立即对类进行“初始化”(而加载,验证,准备自然需要在此之前开始): 1.遇到new,getstatic,putstatic,或invokestatic这4条字节码指令时 阅读全文
posted @ 2017-05-12 11:07 alittlecomputer 阅读(5011) 评论(2) 推荐(2)
摘要:如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。 虽然我们在对各种收集器进行比较,但是并非为了挑出一个最好的收集器。因为直到现在为止还没有最好的收集器出现,更加没有万能的收集器,所以我们选择的只是对具体应用最合适的收集器。 1.Serial收集器(串行收集器) 这个收集器是一 阅读全文
posted @ 2017-05-11 18:05 alittlecomputer 阅读(310) 评论(0) 推荐(0)
摘要:1.标记-清除算法 概念 标记阶段:先通过根节点,标记所有从根节点开始的可达对象,因此,未被标记的对象就是未被引用的垃圾对象; 清除阶段:清除所有未被标记的对象。 缺点: 标记和清除的过程效率不高(标记和清除都需要从头便利到尾) 标记清除后会产生大量不连续的碎片。 2.复制算法 概念: 将原有的内存 阅读全文
posted @ 2017-05-10 09:57 alittlecomputer 阅读(316) 评论(0) 推荐(0)
摘要:当对象不馁引用的时候,这个对象就是死亡的,等待GC进行回收。 1.引用计数法 概念: 给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就增加1;当应用失效时,计数器值就减1;任何时刻计数器为0是对象就是不可能再被使用的。 但是: 主流的java虚拟机并没有选用引用计数器算法,其中一个最主 阅读全文
posted @ 2017-05-09 15:08 alittlecomputer 阅读(1323) 评论(0) 推荐(0)
摘要:可达的/可触及的 Java对象呗创建后,如果被一个或者多个变量引用,那就是可达的,即从根节点可以触及到这个对象。 其实就是从根节点扫描,只要这个对象在引用链中,那就是可触及的。 可恢复的 Java对象不再被任何变量引用就进入了可恢复状态。 在回收该对象之前,该对象的finalize()方法进行资源整 阅读全文
posted @ 2017-05-09 09:39 alittlecomputer 阅读(671) 评论(0) 推荐(0)
摘要:Java程序在运行时,需要在内存中分配空间。为了提高运行效率,就对数据进行了不同的空间划分。因为每一片区域都有特定的数据处理方式和内存管理方式。 具体分为5种内存空间: 程序计数器:保证线程切换后能恢复到原来的执行位置。 虚拟机栈:(栈内存)为虚拟机执行java方法服务,方法被调用时,创建栈帧- 本 阅读全文
posted @ 2017-05-09 09:29 alittlecomputer 阅读(3564) 评论(0) 推荐(1)
摘要:强引用 用的最广,我们平时写代码时,new一个Object存放在堆内存,然后用一个引用指向它。它就是强引用。 如果一个对象具有强引用,那么垃圾回收期绝不会回收它,当内存空间不足,java虚拟机宁愿抛出OutOfMemoryError错误,使程序终止异常,也不会随意回收具有强引用的对象来解决内存不足问 阅读全文
posted @ 2017-05-08 11:34 alittlecomputer 阅读(250) 评论(0) 推荐(0)
摘要:多态==晚绑定 不要把函数重载理解为多态。 因为多态是一种运行期的行为,不是编译期的行为。 多态:父类型的引用可以指向子类型的对象。 比如 Parent p = new Child(); 当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误; 如果有,再去调用子类的该同名方法。 阅读全文
posted @ 2017-03-13 21:57 alittlecomputer 阅读(195) 评论(0) 推荐(0)
摘要:下面看例子: 阅读全文
posted @ 2017-02-27 17:48 alittlecomputer 阅读(7107) 评论(0) 推荐(0)