摘要:Arrays.copyOf()方法在底层是调用了 System.arraycopy() 对于基本数据类型来说System.arraycopy() 方法是深拷贝,对于引用数据类型来说 System.arraycopy() 方法是浅拷贝。 总结: 拷贝方式数值类型引用类型推荐使用 for循环 深拷贝 浅
阅读全文
摘要:Java 中的操作符 == 如果是基本数据类型,比较的是值; 如果是引用数据类型,比较的是地址。 Kotlin中的操作符 == (structural equality) 和 (referential equality) 及 equals Kotlin 中的操作符 == 等价于 equals (除了
阅读全文
摘要:1. 可以无条件地访问外围类的所有元素 内部类虽然和外部类编译完成后, 生成各自的class文件。但是内部类通过this访问外部类的成员,因为:编译器自动为内部类添加一个成员变量, 这个成员变量是指向外部类对象(this)的引用;编译器自动为内部类的构造方法添加一个参数,参数的类型是外部类的类型;在
阅读全文
摘要:代理是一种常用的设计模式,其解决的问题是当两个类需要通信时,引入第三方代理类,将两个类的关系解耦,让客户端只了解代理类即可,从而控制对委托类对象的直接访问,隐藏和保护委托类对象。为了保持行为的一致性,代理类和委托类通常会实现相同的接口,所以在访问者看来两者没有丝毫的区别。 静态:由程序员创建代理类或
阅读全文
摘要:final 1. final修饰类: final修饰类即表示此类已经是“最后的、最终的”含义。因此,用final修饰的类不能被继承,即不能拥有自己的子类。 如果试图对一个已经用final修饰的类进行继承,在编译期间或发生错误。 2. final修饰方法: final修饰的方法表示此方法已经是“最后的
阅读全文
摘要:【区别】Thread是类,Runnable是接口。 【联系】Thread类实现了Runnable接口 【Thread示例】 class MyThread extends Thread{ private int ticket=10; public void run(){ for(int i=0;i<2
阅读全文
摘要:1. Java Class A调用Class B,Class B将运算结果回调给Class A: 1. 法I:在Class B中定义Callback接口并定义一个它的实例;法II:Class A的Callback对象通过参数传给Class B的函数, public Class B { private
阅读全文
摘要:volatile作用对象:volatile只作用于共享变量。 共享变量:在多个线程之间能够被共享的变量被称为共享变量。共享变量包括所有的实例变量,静态变量和数组元素。 volatile作用: 1、同步(可见性) 同synchronized相比(synchronized通常称为重量级锁),volati
阅读全文
摘要:1、Integer是int的包装类,int则是java的一种基本数据类型 2、Integer变量必须实例化后才能使用,而int变量不需要 3、Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值 4、Integer的默认值是null
阅读全文
摘要:JAVA线程实现的三种方式: 1. 使用内核线程(Kernel-Level Thread,KLT) 由内核来完成线程切换,内核通过操纵调度器(Scheduler)对线程进行调度,并负责将线程的任务映射到各个处理器上。 轻量级进程(Light Weight Process,LWP):内核线程的一种高级
阅读全文
摘要:JVM内存简介 JVM执行Java程序的过程:Java源代码文件(.java)会被Java编译器编译为字节码文件(.class),然后由JVM中的类加载器加载各个类的字节码文件,加载完毕之后,交由JVM执行引擎执行。 在上述过程中,JVM会用一段空间来存储执行程序期间需要用到的数据和相关信息,这段空
阅读全文
摘要:JRE,JVM,JDK的关系。JRE(Java Runtime Environment)java运行环境,我们可以把它看成是一个操作系统。也就是说JRE提供了Java执行的软件平台。JVM (Java Virtual Machine)Java虚拟机。所谓“虚拟机”顾名思义就是模拟出来的东西。JVM就...
阅读全文
摘要:钩子(Hook),是Windows消息处理机制的一个平台,钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统,以监视指定窗口的某种消息。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,在目标窗口处理函数之前处理它。Java在jvm中添加钩子的方法:Runtime.getR...
阅读全文
摘要:闭包的定义闭包可以理解为能够读取其他函数内部变量的函数。由于在Javascript语言中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成"定义在一个函数内部的函数"。 闭包的作用它的最大用处有两个,一个是前面提到的可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中。 ...
阅读全文
摘要:JSP全名为Java Server Pages,中文名叫java服务器页面。它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(*.jsp)。它实现了Html语法中的java扩展(以 <%, %>形式
阅读全文
摘要:为什么要用序列化 对于一个存在于Java虚拟机中的对象来说,其内部的状态只保持在内存中。JVM停止之后,这些状态就丢失了。在很多情况下,对象的内部状态是需要被持久化下来的。最直接的做法是保存到文件系统或是数据库之中,但这涉及到自定义存储格式以及繁琐的数据转换。序列化提供JVM中对象与字节数组织间的转
阅读全文
摘要:1. program arguments 中的值作为 主函数中的参数args[] 传入2. VM Arguments 是设置的java虚拟机的属性,这些系统属性都以-D开头, VM argument的设置方法:方法I在jsdt-ui上面点右键然后debug as->debug configurati...
阅读全文
摘要:1.泛型的意义 泛型是运用在编译时期的技术,泛型即“类型参数化”。 如果没有泛型,比如我们使用ArrayList<Object>并存入String, Integer, 等等类型的对象,然后取出对象并使用object.length,那么Integer类型的对象就会报错了,因为它不能强转成String!
阅读全文
摘要:什么时候使用Reflection: 在java语言中,创建一个类的对象通常使用new operator,但是如果预先不知道类名,类名是在程序运行过程中通过参数传递过来,就没法使用这种方法了,这种情况下就只能使用Reflection机制了。 使用 Reflection机制可以大大提高程序的可扩展性和可
阅读全文
摘要:一般我们会说Java基本类型采用值传递,对象以及数组采用引用传递。但事实上这只是表面上的现象。实质上,Java都是按值传递引用。(Java中“引用”的概念相当于C++中的指针,可以不断改变值) 一,对象 对象与变量(实例)的区别: 对象保存在heap,而变量保存在stack;对象的入口地址是不可预知
阅读全文