精华内容
下载资源
问答
  • 引用是Java面向对象的一个特点,在Java入门中,我们会接触到四种Java的引用类型,具体包括这几个:1、强引用强引用是一种最常见的引用形式,同时也较为普遍。如果内存空间不足,Java虚拟机将会抛出OutOfMemoryError...

    Java类型一般有两种,即基本数据类型与引用数据类型。其中,引用数据类型在存储堆中对需要引用的对象进行引用。引用是Java面向对象的一个特点,在Java入门中,我们会接触到四种Java的引用类型,具体包括这几个:

    1、强引用

    强引用是一种最常见的引用形式,同时也较为普遍。如果内存空间不足,Java虚拟机将会抛出OutOfMemoryError错误,从而程序将异常停止。把一个对象赋给一个引用类型变量,则为强引用。强引用的对象是不可以GC回收的,不可以随意回收具有强引用的对象来解决内存不足的问题。在Java中,强引用是一种默认的状态,除非JVM虚拟机停止工作。

    2、弱引用

    弱引用的特点就是引用对象的生命周期较短。G回收器在扫描内存区域是若发现弱引用,即便是内存空间还足够使用,弱引用对象都会被回收。但弱引用对象也可以加入队列,这样就可以不被回收。

    3、软引用

    软引用和强引用不同,如果内存空间足够多,一个对象被软引用,则垃圾回收器不会将其回收;如果内存空间不足,这些引用对象就会被回收。它可用来较为敏感的高速缓存,虚拟机可以将软引用加入到与之向关联的队列。

    4、虚引用

    虚引用的对象可以说是形同虚设。为什么这么说?因为虚引用不会决定对象的生命周期,并且虚引用等于没有引用,随时都可以被GC回收。

    了解Java的四种引用类型是Java入门学习的重要部分。在粤嵌进行Java培训的过程中,要是对这部分不清楚,一定要多与老师或者同学进行交流,这样才能不断提高自己的能力,对Java后期的进阶学习也会有帮助。

    展开全文
  • JavaScript数据类型,包括原始类型和引用类型哪些? 原始类型有五个 Number类型 专门保存数字的类型,可用于进行数学计算等的数值 String类型 专门用来保存字符串的类型;” “,用来存储字符串类型的文本. ...

    问题 : http://bbs.daxiangclass.com/?thread-334.htm

    JavaScript数据类型,包括原始类型和引用类型有哪些?

    原始类型有五个
    • Number类型 专门保存数字的类型,可用于进行数学计算等的数值
    • String类型 专门用来保存字符串的类型;” “,用来存储字符串类型的文本.
    • Boolean类型 专门用来保存真或者假的类型,值二选一,true or false
    • Null类型 不知向任何地址,手动赋值,清空内容等….
    • Undefined 表示未定义,这个值的变量不含有值。

    引用类型有一个 object其中object包括

    • Array类型 数组的每一项可以用来保存任何类型的数据
    • Object类型 我们看到的大多数类型值都是Object类型的实例
    • Function 每个函数都是Function类型的实例
    展开全文
  • java中的引用类型是指除了基本数据类型之外的所有类型。java中有四种引用类型,...引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型...

    java中的引用类型是指除了基本数据类型之外的所有类型。java中有四种引用类型,分别是强引用、软引用、弱引用和虚引用。引用类型和原始类型具有不同的特征和用法。

    ef8fe710386ef5a9b1faa54251aa8df7.png

    Java 提供两种不同的类型:引用类型和原始类型(或内置类型)

    引用类型和原始类型的行为完全不同,并且它们具有不同的语义。

    引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型

    用作某个类的实例数据时所指定的缺省值。

    对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。同时为了面向对象操作的一致性。

    这些基本类型都有相应的封装类型:Integer、Short、Long、Byte、Float、Double、Character等。

    Java的4种引用类型:

    他们分别是强引用(StrongReference),软引用(SoftReference),弱引用(WeakReference)以及PhantomReference(虚引用),他们被

    GC回收的可能性从大到小排列。

    强引用(StrongReference)

    只要强引用存在,垃圾回收器将永远不会回收被引用的对象,哪怕内存不足时,JVM也会直接抛出OutOfMemoryError,不会去回收。如

    果想中断强引用与对象之间的联系,可以显示的将强引用赋值为null,这样一来,JVM就可以适时的回收对象了

    软引用(SoftReference)

    软引用是用来描述一些非必需但仍有用的对象。在内存足够的时候,软引用对象不会被回收,只有在内存不足时,系统则会回收软引用对

    象,如果回收了软引用对象之后仍然没有足够的内存,才会抛出内存溢出异常。这种特性常常被用来实现缓存技术,比如网页缓存,图片

    缓存等。

    在 JDK1.2 之后,用java.lang.ref.SoftReference类来表示软引用。

    弱引用(WeakReference)

    弱引用的引用强度比软引用要更弱一些,无论内存是否足够,只要 JVM 开始进行垃圾回收,那些被弱引用关联的对象都会被回收。

    在 JDK1.2 之后,用 java.lang.ref.WeakReference 来表示弱引用。

    PhantomReference(虚引用)

    虚引用是最弱的一种引用关系,如果一个对象仅持有虚引用,那么它就和没有任何引用一样,它随时可能会被回收,在 JDK1.2 之后,用 PhantomReference 类来表示,通过查看这个类的源码,发现它只有一个构造函数和一个 get() 方法,而且它的 get() 方法仅仅是返回一个null,也就是说将永远无法通过虚引用来获取对象,虚引用必须要和 ReferenceQueue 引用队列一起使用。

    展开全文
  • 本文漏的图片已经补上,请放心...Java中一共有四类八种基本数据类型,看下表:除掉这四类八种基本类型,其它的都是对象,也就是引用类型包括数组。来看一段示例代码:一个Person类,提供了一个构造方法,一些get/...

    本文漏的图片已经补上,请放心阅读。

    前面的文章有时候会留一些思考题,主要是想让大家多想想文章的内容,所以没留答案,评论区回复也是五花八门。写这篇文章是想再帮大家巩固一下之前的内容,子曾经说过:“温故而知新,可以上王者”。Java中一共有四类八种基本数据类型,看下表:

    fb00dfa4823469a0791344dc3a5a7091.png

    除掉这四类八种基本类型,其它的都是对象,也就是引用类型,包括数组。

    来看一段示例代码:

    一个Person类,提供了一个构造方法,一些get/set方法:

    d9332ae43b2d51fc16b4792497567ce2.png

    下面是测试的main方法:

    9e1931ebe794958869dbe7a4f14dc169.png

    先看第一句代码:

    1238238e02cc0c94a6fd3e45f6864c44.png

    方法体里声明的基本数据类型在栈内存里,我们画一下

    0a50dcddadaf0eaa0f2f3f851d921490.png

    继续执行以下代码

    c719ddd213364318eeee3063a845a4a5.png

    对于基本数据类型来说,赋值(=号)就相当于拷贝了一份值,把int1的值100,拷贝给int2,继续画图

    fbd1ef77c8b6474740c1518150bddcc8.png

    int1=500,直接修改int1的值为500,表现如下图

    0992255bcea25d82bb648540e6e33613.png

    分别打印int1,int2的值,相信没有人会答错,分别是500,100。

    再来看数组的初始化

    9a4bc02f3c63c1b1f172425db7ea7b7a.png

    先初始化arr1,当执行到new这个关键字,会在堆内存分配内存空间,并把该内存空间的地址赋值给arr1。

    a8aaf1ff644765edd3c1e986445d47d3.png

    继续执行以下代码

    37a6f4f2abc90e1c0da49d381bbb3381.png

    这儿arr2初始化时并没有new关键字,并不会在堆内存里新开辟一块空间,而是把arr1里存的堆内存地址直接赋值给了arr2,对于引用类型来说,赋值(=号)就相当于拷贝了一份内存地址,也就是说arr1,arr2现在指向了同一块堆内存,表现形势如下图

    9890ab6e8954197a9c559118bf38ec2f.png

    这时候执行如下代码

    df3d05a9ad64b80d71fbea2d272da63f.png

    虽然只是修改arr1数组下标位置为3的值

    3df61b98951d35ce1ac8f6cc92a3f1fa.png

    但由于数组arr1和数组arr2指向同一块堆内存,打印arr1[3]和arr2[3]的值,都是8。你答对了吗?

    再来看对象的初始化

    7ae1c6181acdc0e0c982a743b73dbf62.png

    当看到这个new,这货肯定在堆内存里开辟了一块内存空间,Person里有一个叫name的String对象,String这个对象有点特殊,虽然没有new这个关键字,但还是在堆内存中开辟了一块空间,在String是一个很普通的类一文中已经讲解过了,这里就不再细讲了,String底层是数组实现的,数组也是引用类型,age为基本数据类型,表现如下图

    74a013401fc9baed317ababf0e701435.png

    上图中大框里的内容就是整个Person对象在堆内存中的体现,继续执行以下代码

    4f7f3d816a045aa873132dc7c6584f56.png

    没有new关键字,per2不会在堆内存中新开辟空间,和数组一样,也是把per1的内存地址直接赋值给了per2

    ad4bbc96d2071b9dfc52d6ff921de737.png

    当我们修改per1的属性的时候

    29b3163799b3785551520df989d91640.png

    如下图两个红框里的内容,给对象(数组也是对象)赋值其实就是相当于引用重新指向一块堆内存,基本数据类型是直接修改值,表现如下图

    9b8d41d6c7a93480d9b896d08d079195.png

    所以,不管打印per1还是per2的name、age,打印出来的结果都是“李四”、35,这个你也答对了吗?最后,我们来验证一下,结果是不是和文中说的一致。

    2067dee121194c7cdbf18ce43c8d00f6.png

    结果完全一致,回过头来看看Java里的“==”比较符,结果就不难理解了,代码如下

    69c146b76b10e543bddcacc6cb018719.png

    结果分别是false,true,true,当==两边是基本数据类型时,==于比较的是两边的两个值是否相等,当==两边是引用类型时比较的是两个内存地址,也可以看成是看这两个引用是否指向堆内存里的同一块地址,如下图

    97c432a1c7146054d487be572f85e054.png

    新手在学习Java时,在引用类型上可能经常容易犯错误,如本文中所讲的arr1,arr2,很多人在写代码的时候是想拷贝一份值来用,却不知道在修改arr1的时候,arr2的值也变了。

    展开全文
  • 从一开始学习Java我们就知道Java的数据类型一般有两种,一种是基本数据类型,另一种是引用...Java中主要包括了四种引用类型,分别是:强引用,软引用,弱引用以及虚引用。 一、强引用 强引用是一种最常见的引用形式,
  • C#中引用类型和值类型分别有哪些

    千次阅读 2018-06-15 02:12:58
    C#的引用类型包括:数组,用户定义的类、接口、委托,object,字符串。 数组的元素,不管是引用类型还是值类型,都存储在托管堆上。 引用类型在栈中存储一个引用,其实际的存储位置位于托管堆。为了方便,本文简称...
  •  当我们把变量赋值给一个变量时,解析器首先要确认的就是这个值是基本类型值还是引用类型值。 2、常见的基本数据类型:  Number、String 、Boolean、Null和Undefined。 基本数据类型是按值访问的,因为可以直接...
  • js基本数据类型:js基本数据类型包括:undefined,null,number,boolean,string.基本数据类型是按值访问的,就是说我们可以操作保存在变量中的实际的值1. 基本数据类型的值是不可变的任何方法都无法改变一个基本类型的...
  • js 引用类型

    2019-11-22 22:41:30
    前言:引用类型包括哪些? 一、Object类型 1、Object实例的创建方式 (1)、Object 构造函数法 (2)、对象字面量表示法(广泛使用) 2、对象字面量可以传递可选参数 3、访问对象属性的两种方法 (1)、点...
  • c# 引用类型与值类型的区别有哪些 解析:CLR支持两种类型:值类型和引用类型。用Jeffrey Richter(《CLR via C#》作者)的话来说,“不理解引用类型和值类型区别的程序员将会把代码引入诡异的陷阱和...
  • php数据类型哪些?PHP有八种不同的数据类型。下面就给大家介绍PHP的8种数据类型,其中前五种称为基础数据类型,后三种称为复合数据类型。1、整型(Integer )整型仅包含整数,包括正数和负数,即没有小数部分或...
  • C#的引用类型包括:数组,用户定义的类、接口、委托,object,字符串。 数组的元素,不管是引用类型还是值类型,都存储在托管堆上。 引用类型在栈中存储一个引用,其实际的存储位置位于托管堆。为了方便,本文...
  • 值类型、引用类型

    2016-05-08 16:54:00
     引用类型包括:数组,用户定义的类、接口、委托,object,字符串。 二、值类型和引用类型的区别  1、它们存储的位置不一样  2、如果是引用类型,当两个对象指向同一个地方,修改某一个的时候,其它对象的值会...
  • 首先,我们看看在C#中哪些类型是值类型,哪些类型是引用类型。 值类型: 基础数据类型(string类型除外):包括整型、浮点型、十进制型、布尔型。  整型(sbyte、byte、char、short、ushort、int、uint、...
  • 今日内容内部类引用类型内部类以前2个类是独立分开定义的概述把类定义在另一个类的内部,该类就被称为内部类。举例:把类Inner定义在类Outer中,类Inner就被称为内部类。class Outer { class Inner { } }内部类的...
  • 一、Java支持的数据类型有哪些?什么是自动拆装箱? 基本数据类型(8种): 整数值型:byte (8位)、short(16位)、 int (32位)、 long(64...引用类型包括 类、接口、数组等。String类还是final修饰的。 自动拆..
  • golang 值类型与引用类型的区别

    千次阅读 2019-01-07 13:39:35
    1最本质的区别 值类型:内存中变量存储的是具体的值 比如: var num int num存放的是具体的int值  但是变量在内存中的地址可以通过 &...2.值类型,引用类型包括哪些 基本的数据类型 int系列,float系列,b...
  • 最本质的区别 值类型:内存中变量存储的是具体的值 比如: var num int num存放的是具体的int值 但是变量在内存中的地址可以通过 &...值类型,引用类型包括哪些 基本的数据类型 int系列,float系列,bool,string...
  • java中的数据类型哪些

    千次阅读 2020-09-07 16:17:07
    java中的数据类型哪些? 数据类型主要分为基本数据类型引用数据类型。 基本数据类型主要包括: 整数类型: byte、short、int、long 浮点数:float、double 布尔类型:boolean 字符类型:char 引用数据类型主要...
  • ● 常用的基本数据类型包括undefined、null、number、boolean、string; ● 引用数据类型也就是对象类型,比如:Object、array、function、data等; 基本数据类型详解: 1、number类型 ① number类型包含整数和...
  • c# 值类型与引用类型的区别 参考资料:《C#程序设计》 1、首先我们先了解一下c#的基本数据类型包含哪些。 c#的数据类型可分为两种,分别是值类型和引用类型。关系如下图: 2、什么是值类型呢? 值类型直接存储数据...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 487
精华内容 194
关键字:

引用类型包括哪些