引用类型

Java语言学习总结 高级篇 ArrayList类的创建和使用

爷,独闯天下 提交于 2020-01-22 03:46:41
ArrayList类 什么是ArrayList类 ArrayList是可以实现长度可变的数组 存储在内的数据称为元素。此类提供一 些方法来操作内部存储的元素。 ArrayList 中可不断添加元素,其大小也自动增长 。 我们知道定义的数组长度是不可以改变了,而ArrayList就客服了这点,可以根据需要随时添加元素,加长长度。 JDK_API 中的 介绍如图: ArrayList的使用步骤 三步: 导包——创建——使用 导包: import java.util.ArrayList < E > < E >表示一种指定的数据类型,叫做泛型。 泛型只能是引用类型,不能是基本数据类型 E,取自Element (元素)的首字母。在出现E的地方,我们使用一种引用数据类型将其替换即可,表示我们将存储哪种引用类型的元素。 对于ArrayList来说,有一个尖括号< E >代表泛型。 泛型:也就是装在集合当中的所有元素,全都是统一的什么类型。 注意:泛型只能是引用类型,不能是基本类型。 注意事项: 对于ArrayList集合来说,直接打印得到的不是地址值,而是内容。 如果内容是空,得到的是空的中括号: [] 导包创建引用 示例代码: import java . util . ArrayList ; public class ArrayTestTest { public static void

C# 值类型与引用类型 (上)

吃可爱长大的小学妹 提交于 2020-01-21 12:04:46
1. 主要内容 类型的基本概念 值类型深入 引用类型深入 值类型与引用类型的比较及应用 2. 基本概念 C#中,变量是值还是引用仅取决于其数据类型。 C#的基本数据类型都以平台无关的方式来定义,C#的预定义类型并没有内置于语言中,而是内置于.NET Framework中。.NET使用通用类型系统(CTS)定义了可以在中间语言(IL)中使用的预定义数据类型,所有面向.NET的语言都最终被编译为 IL,即编译为基于CTS类型的代码, 通用类型的系统的功能: 建立一个支持跨语言集成、类型安全和高性能代码执行的框架。 提供一个支持完整实现多种编程语言的面向对象的模型。 定义各语言必须遵守的规则,有助于确保用不同语言编写的对象能够交互作用。 例如,在C#中声明一个int变量时,声明的实际上是CTS中System.Int32的一个实例。这具有重要的意义: 确保IL上的强制类型安全; 实现了不同.NET语言的互操作性; 所有的数据类型都是对象。它们可以有方法,属性,等。例如: int i; i = 1; string s; s = i.ToString(); CLR 支持两种类型: 值类型 和 引用类型, C#的所有值类型均隐式派生自System.ValueType: 结构体:struct(直接派生于System.ValueType); 数值类型: 整 型:sbyte(System

值类型与引用类型及ref修饰符与out修饰符的关系

牧云@^-^@ 提交于 2020-01-20 00:28:55
值类型与引用类型的区别; 下面我用一个例子,画一个图来说明一下值类型与引用类型的区别; 引用类型的值 当我们要使用引用类型的值的时候,我们new一个新的实体,但是该实体根本就没有创建,而是直接与被引用值的地址建立联系,也就是说,该创建的新的实体的与被引用的值其实就是一个东西。当新创建的实体改变时,被引用的值也会改变。被引用的值被改变时,新创建的实体的值也会改变。 如下图,堆中有一个引用类型的值名a,我们现在需要调用a的值,用b=new a,获得了a的值,这时b并未创建一个新的实体,而是将调用地址直接指向了a,这样当我们改变b的值的时候,a的值随之改变。同理a的值改变时b的值也随之改变。 值类型的值 值类型的值在执行b=new a 代码的时候,会在堆里面重新分出控件然后将a的值复制到新的内存空间中,这时候b指向的是新创建出来的空间b。b的值改变的时候,a的值不受影响。 ref修饰符,的作用是将值类型的参数修饰为引用类型。 out修饰符的功能主要是返回方法中的参数。 out修饰符和ref修饰符的功能都是相同的,就是将参数作为引用类型的值进行传递。 这样我们即使没有返回值,也相当于获得了该方法的返回值。 out修饰符与ref修饰符的不同之处在于: out修饰符修饰的参数在传参的时候可以不用赋值,但是在方法执行完之前一定得赋值。 ref修饰符在传值的时候需要参数有值; 来源: CSDN

JavaScript-数据类型

有些话、适合烂在心里 提交于 2020-01-20 00:03:46
简单数据类型又叫做基本数据类型,复杂类型又叫做引用类型 值类型:简单数据类型/基本数据类型,在存储时变量中存储的是值本身,因此叫做值类型比如:string、number、boolean、undefined、null。 引用类型:复杂数据类型,在存储时变量中存储的仅仅是地址(引用),因此叫做引用数据类型,通过 new 关键字创建的对象(系统对象、自定义对象),如Object、Array、Date等。 // 简单数据类型 null 返回的是一个空的对象 object var timer = null; console.log(typeof timer); // 如果有个变量我们以后打算存储为对象,暂时没想好放啥, 这个时候就给 null // 1. 简单数据类型 是存放在栈里面 里面直接开辟一个空间存放的是值 // 2. 复杂数据类型 首先在栈里面存放地址 十六进制表示 然后这个地址指向堆里面的数据 引用类型变量(栈空间)里存放的是地址,真正的对象实例存放在堆空间中。 堆和栈空间分配区别 栈(操作系统):由操作系统自动分配释放存放函数的参数值、局部变量的值等。其操作方式类似于数据结构中的栈; 简单数据类型存放到栈里面 。 堆(操作系统):存储复杂类型(对象),一般由程序员分配释放,若程序员不释放,由垃圾回收机制回收。 复杂数据类型存放到堆里面 。 注意

Typescript引用类型--数组

生来就可爱ヽ(ⅴ<●) 提交于 2020-01-19 17:56:18
ts中数据分为值类型和引用类型。 一、什么是引用类型? 引用类型是一种复合类型,引用类型中封装了很多属性,可以通过变量名和属性名来获取属性值或者调用属性的方法。 let Jude = { name: 'Jude', age: 28, saySomething: function () { console.log('行到水穷处,坐看云起时!'); } } console.log(Jude.name) // Jude 二、元祖--一种特殊的数组 数组中允许含有多种类型的元素 let arr : [number,string] arr = [123,'123'] // console.log(arr) // [123,'123] 当我们写成这个样子,是会报错的 let arr : [number,sting] arr = ['123',123] error1: Type 'string' is not assignable to type 'number'. error2: Type 'number' is not assignable to type 'string'. ![](https://img2018.cnblogs.com/blog/1912711/202001/1912711-20200119172755771-1404695424.png) 来源: https://www

【JavaScript知识点二】JavaScript 变量

最后都变了- 提交于 2020-01-19 08:05:44
【JavaScript知识点二】JavaScript 变量 1. 命名 1-1 方法 匈牙利命名法:变量名 = 类型 + 对象描述;Int整型 i 、Float浮点 fl 、Boolean布尔 b 、String字符串s 、Array数组 a 、Object对象 o、Function函数 fn、Regular Expression正则 re 驼峰命名法: ①全部小写 单词与单词间用下划线表示 ②大小写混合: 大驼峰——每个单词首字母大写 小驼峰——第一个单词首字母小写,其它单词首字母大写 1-2 规则 首字符:英文字母或下划线 组成:英文字母、数字、下划线 禁忌:JavaScript关键字与保留字 2. 声明 2-1 显式声明 var 变量名 2-2 陋习 没有类型 重复声明 隐式声明 不声明直接赋值 2-3 正解 先声明,后读写 先赋值,后运算 3. 变量类型 3-1 值类型 占用空间固定,保存在栈中 保存与复制的是值本身 使用typeof检测数据的类型 基本类型数据是值类型 3-2 引用类型 占用空间不固定,保存在堆中 保存与复制的是指向对象的一个指针 使用instanceof检测数据的类型 使用new()方法构造出的对象是引用类型 注:在js中, (1)值类型:数值、布尔值、null、undefined (2)引用类型:对象、数组、函数 4. 作用域 4-1 全局变量 包含

Java的值传递和引用传递

眉间皱痕 提交于 2020-01-19 07:10:17
行参和实参 行参:方法在被调用的时候需要传递进来的参数。如function(int a)中的参数a,只有在方法被调用的时候a才有意义。 实参:方法在被调用时,实计被传入的值。在方法被调用前已经被初始化。 JAVA中基本类型和引用类型 基本类型:byte、short、int、long、float、double、char、boolean 引用类型:类,数组等 值传递和引用传递 把实参的值赋值给行参,那么对行参的修改不会影响实参的值 把实参的地址传递给行参,行参和实参是同一个对象,只是名字不同,对行参的修改会影响实参的值。 下面我们先来看一看基本类型的操作: public static void main ( String [ ] args ) { int a = 1 ; System . out . println ( "a=" + a ) ; func ( a ) ; System . out . println ( "a=" + a ) ; } private static void func ( int a ) { a = 10 ; } 输出结果为: a = 1 a = 1 通过上面的结果可以看出,对于基本类型的数据,在实参传入形参时,都是值传递,而不是内容本身。 下面我们来看看引用类型的操作: public static void main ( String [ ] args

值类型与引用类型

Deadly 提交于 2020-01-18 14:24:05
1.值类型 C#的值类型包括:结构体(数值类型、bool型、用户定义的结构体),枚举,可空类型。 Points是个结构体;给成员赋值有两种方式1.声明Points类型的对象,然后对象.成员分别赋值. 2.用new的方式初始化赋值,不会分配内存空间,此时要注意使用结构必须对每个成员进行赋值.但它是在栈空间中直接给成员分配内存,跟托管堆没有关系. 执行Points ps2=ps1,这里是把ps1对象复制赋值给ps2,在栈中把x,y成员的值复制了一份给ps2,是复制并传递过程的一个概念.执行ps1.x=30,ps1改的是自己对象成员的值;跟ps2中的成员没有关系,所以ps2.x输出的是ps1初始化时的值10;而ps2.y是改变后的值40. 1 static void Main(string[] args)//程序的入口方法 2 { 3 Points ps1; 4 ps1.x = 10; 5 ps1.y = 20; 6 Points ps2 = ps1; 7 ps1.x = 30; 8 ps2.y = 40; 9 } 10 struct Points //定义了一个结构Points 11 { 12 public int x; //结构成员x 13 public int y; //结构成员y 14 } 2.引用类型 C#的引用类型包括:数组,用户定义的类、接口、委托,object,字符串

C#深入理解类型

点点圈 提交于 2020-01-18 07:55:11
值类型:   值类型 通常 存储在栈中,值类型管理由操作系统管理    引用类型:   引用类型存储在堆中由GC管理 引用类型嵌套定义值类型: 值类型嵌套引用类型: 值类型继承自ValueType,ValueType有继承自System.Object 引用类型直接继承自System.Object 值类型的内存不受GC控制,作用域结束后值类型会被操作系统自行释放,但是引用有GC来完成值类型性能能加存在优势 类型转换   隐式转换就是有低级别类型转换想高级别类型转换的过程,派生类可以隐式转换为他的父类。装箱过程就是属于这种隐式转换   显示类型转换:这种转换可能会倒是损失精度,或者出现异常   通过is和as运算符进行安全转换   int i =3   // 装箱   object obj = i;   // 拆箱   int y = obj; 代码的装箱过程式 1.分配onj内存空间 2.copy i变量的值放在内存中 3.返回值存放的地址给obj变量 拆箱过程: 1.检查o变量的值是否为null为null时发出异常,不为null检查拆箱后类型是否一直不一致异常 2。返回o变量实际数据地址 3。将托管堆中的数据复制到栈中 来源: https://www.cnblogs.com/-alvin/p/10905486.html

<NET CLR via c# 第4版>笔记 第5章 基元类型、引用类型和值类型

家住魔仙堡 提交于 2020-01-18 03:53:32
5.1 编程语言的基元类型 c#不管在什么操作系统上运行,int始终映射到System.Int32; long始终映射到System.Int64 可以通过checked/unchecked操作符/语句打开或关闭溢出检查,如: byte b = 100; b = checked((byte)(b + 200)); uint invalid = unchecked((uint)(-1)); checked { b += 200; } 在checked操作符或语句中调用方法,不会对该方法造成任何影响,如: checked { //假定SomeMethod试图把400加载到一个Byte中 SomeMethod(400); //SomeMethod可能会、也可能不会抛出OverflowException异常 //如果SomeMethod使用checked指令编译,就可能会抛出异常 //但这和当前的checked语句无关 } 尽量使用有符号数值类型(比如Int32和Int64)而不是无符号数值类型(比如UInt32和UInt64),这允许编译器检测更多的上溢/下溢错误.较少的强制类型转换也可以使代码更整洁,更易维护. System.Decimal在CLR中不被认为是基元类型.处理速度慢于CLR基元类型.常用于不容许舍入误差的金融计算.checked和unchecked操作符