一:在JAVA中,有六个不同的地方可以存储数据: 1. 寄存器(register). 这是最快的存储区,因为它位于不同于其他存储区的地方——处理器内部.但是寄存器的数量极其有限,所以寄存器由编译器根据需求进行分配.你不能直接控制,也不能在程序中感觉到寄存器存在的任何迹象. ------最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制. 2. 堆栈(stack).位于通用RAM中,但通过它的“堆栈指针”可以从处理器哪里获得支持.堆栈指针若向下移动,则分配新的内存:若向上移动,则释放那…
一般情况下,我们认为Java中了除了八种基本数据类型,其他都是对象,进行引用传递: 但是:String.包装类.枚举类作为参数传递后发现,没有达到引用传递的效果,很多人认为它是值传递! 首先,对象肯定是引用传递,为何这三类没有达到引用传递的效果呢? 以包装类Boolean为例: 会发现: 1.Boolean的值都是static.final的,说白了就是不能修改的 2.没有修改值得setter方法 因此,从表象看:枚举值都是值传递(传递副本),根本原因是被限制修改....…
对于大部分的对象而言,程序里会有一个引用变量来引用该对象,这是最常见的引用方法.除此之外,java.lang.ref包下还提供了3个类:SoftReference.WeakReference和PhantomReference.它们分别代表了系统对对象的另外3中引用方式:软引用.弱引用和虚引用. Java中四种引用的区别和关联: 强引用.这是Java中最常见的引用方式.程序创建一个对象,并把这个对象赋给一个引用变量,程序通过该引用变量来操作实际的对象.当一个对象被一个或者多个引用变量引用时,它处于…
java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?         Java中的流分为两种,一种是字节流,另一种是字符流,分别由四个抽象类来表示(每种流包括输入和输出两种所以一共四个):InputStream,OutputStream,Reader,Writer.Java中其他多种多样变化的流均是由它们派生出来的. 字符流和字节流是根据处理数据的不同来区分的. 字节流按照8位传输,字节流是最基本的,所有文件的储存是都是字节(byte)的储存,在磁盘上…
阅读本文大概需要 2.8 分钟. 来源:jianshu.com/p/e674ee68fd3f 一.为什么要用锁? 锁-是为了解决并发操作引起的脏读.数据不一致的问题. 二.锁实现的基本原理 2.1.volatile Java编程语言允许线程访问共享变量, 为了确保共享变量能被准确和一致地更新,线程应该确保通过排他锁单独获得这个变量.Java语言提供了volatile,在某些情况下比锁要更加方便. volatile在多处理器开发中保证了共享变量的“ 可见性”.可见性的意思是当一个线程修改一个共享变…
来源:jianshu.com/p/e674ee68fd3f 1.为什么要用锁? 锁-是为了解决并发操作引起的脏读.数据不一致的问题. 2.锁实现的基本原理 2.1.volatile Java编程语言允许线程访问共享变量, 为了确保共享变量能被准确和一致地更新,线程应该确保通过排他锁单独获得这个变量.Java语言提供了volatile,在某些情况下比锁要更加方便. volatile在多处理器开发中保证了共享变量的" 可见性".可见性的意思是当一个线程修改一个共享变量时,另外一个线程能读到…
1.为什么要用锁? 锁-是为了解决并发操作引起的脏读.数据不一致的问题. 2.锁实现的基本原理 2.1.volatile Java编程语言允许线程访问共享变量, 为了确保共享变量能被准确和一致地更新,线程应该确保通过排他锁单独获得这个变量.Java语言提供了volatile,在某些情况下比锁要更加方便. volatile在多处理器开发中保证了共享变量的" 可见性".可见性的意思是当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值.   image.png 结论:如果volat…
一:软件出现的目的 1:用计算机的语言描述现实世界 2:用计算机解决现实世界的问题 编程思维:  使用面向对象的思想(描述)面向对象的世界     (符合人类的思维习惯) 二:面向对象设计和开发程序的好处 1:符合人类的思维习惯 2:交流更加流畅 2:可维护性高(方便修改代码) 3: 提高设计和开发效率 三:面向对象的三大特性      1.封装性:            所谓封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏.封装…
我们经常会遇到需要java调用c++的案例,这里就java调用DLL本地动态链接库两种方式,和加载过程中遇到的问题进行详细介绍 1.通过System.loadLibrary("dll名称,不需要后缀名") 例如: System.loadLibrary("StreamParser");     System.loadLibrary("StreamPackage");     System.loadLibrary("StreamConver…
Java中对象.对象引用.堆.栈.值传递以及引用传递的详解 1.对象和对象引用的差别: (1).对象: 万物皆对象.对象是类的实例. 在Java中new是用来在堆上创建对象用的. 一个对象能够被多个引用所指向. (2).对象引用: 相似于C++中的地址.通过对象引用能够找到对象. 一个引用能够指向多个对象.操纵的标识符实际上是指向对象的引用. 就像:对象存放在屋子里,对象的引用就相当于屋子的钥匙. 2.值传递和引用传递的差别: (1).值传递:传递的是值的拷贝. 也就是说传递后就不互相关了. (…