引用类型

.NET Framework学习笔记(八)

廉价感情. 提交于 2019-11-27 22:49:45
13. 枚举类型与位标记 枚举类型定义了一组符号名称和数值对。它属于值类型,但不能定义任何的方法、属性或事件。 // 枚举类型实际就是一个定义了一组常数字段的结构而已。 struct Color : System.Enum{ public const Color Red = (Color) 0; public const Color Blue = (Color) 1; } GetUnderlyingType ( Type enumType )方法返回枚举类型实例的基础类型。 C# 默认为 int System.Enum.ToString 方法将器数值映射为四种字符串表达形式 枚举类型表示单个数值,而位标记表示一组标记。 14. 数组 数组是分配在托管堆上的引用类型,并且应用程序中的数组变量包含的是一个指向数组的引用,而非数组本身。 C# 支持交错数组 Point[][] myPolygons = new Point[2][]; myPolygons[0] = new Point[10]; myPolygons[1] = new Point[30]; 对于引用类型的数组,且维数相同, CLR 允许它们进行类型转换。 CLR 不允许将元素为值类型的数组转型为任何其他类型,但可以使用 Array.Copy ,创建一个新数组来达到期望的效果。 Int32 [] music=new

类型断言、type-switch、反射

限于喜欢 提交于 2019-11-27 22:29:43
类型断言 检测使用多态时指向对象的引用类型是否能变为更加具体的引用类型 AB接口内嵌入的A和B两个接口 number结构体实现了AB接口。 A num = new (number) numab,err := num.(AB)//类型断言,判断A接口引用类型是否可以变为AB(更具体的引用类型) 类型断言事不能转为结构体类型的引用的,只能是接口类型的引用,而且,只能是内嵌了此时的接口类型的接口的引用。,numab是转换成功以后的AB类型的引用(指向那个对象) if v, ok := varI.(T); ok { // checked type assertion Process(v) return } // varI is not of type T type-switch(这是个特殊的switch): //对象的具体数据类型 switch t := areaIntf.(type) { case *Square: fmt.Printf("Type Square %T with value %v\n", t, t) case *Circle: fmt.Printf("Type Circle %T with value %v\n", t, t) case nil: fmt.Printf("nil value: nothing to check?\n") default: fmt

C# 值类型和引用类型的区别

徘徊边缘 提交于 2019-11-27 18:21:48
简介 前几年的时候只是在上学的时候知道值类型是存在栈中,引用类型存在堆中,但是到底为什么这么存储以及这么存储的好处是什么不太理解,正好今年开始记录博客,以及看了一些书上的内容记录一下。 值类型 类型 默认值 说明 byte 0 8位无符号的整数(0~255) sbyte 0 8位有符号的整数(-128~127) long 0 64位有符号整数(-2 ulong 0 64位无符号整数 short 0 16位有符号整数 ushort 0 16位无符号整数 int 0 32位有符号整数 uint 0 32位无符号整数 float 0.0 表示一个单精度浮点数字 double 0.0 表示一个双精度浮点数 decimal null 28位精度 char '\0' 16位字符 bool false true或者false struct null 结构体 enum null 枚举类型 1.值类型隐式的继承了(System.ValueType),值类型一般是存放在栈当中,实例化一个值类型的时候在栈中开辟一个空间的时候已经包含了本身的字段,所以性能来说要比引用类型快(引用类型在存放的是指向对象数据的内存地址),并且值类型由于不存放在堆当中,不被gc的管控,因此值类型的使用缓解了托管堆的压力,并且减少了应用程序生存期内的垃圾回收次数。 当如下创建一个值类型的时候

基本数据类型

拜拜、爱过 提交于 2019-11-27 18:21:21
Java两大数据类型: 一、内置数据类型 八种基本类型:六种数字类型(四个整数型,两个浮点型),一种字符类型和一种布尔型。 基本类型 数据类型 默认值 例子 备注 byte 8位 0 byte a=10;byte b=-10; 在大型数组中节约空间,代替整数 short 16位 0 short s=1000;short h=-2000; int 32位 0 int i=100000;int n=-200000; 整型默认为int long 64位 0L long c=100000L;long d=-200000L; L不区分大小写,写成L是为了区分方便;少用,主要在比较大整数的系统上 float 32位 0.0f float f=12312.3f; 不可用来表示精准的值,如货币 double 64位 0.0d double d=123.4 不可用来表示精准的值,如货币 boolean 一位 false boolean b=true; 只记录true和false情况 char 16位 char c='A'; 可储存任何字符 二、引用数据类型 在Java中,引用类型的变量类是于C/C++的指针。引用类型指向一个对象,指向对象的变量是引用变量。变量在声明时指定一个特定的类型,比如Employee等。变量一旦声明类型不能改变。 对象、数组都是引用数据类型;所有引用类型的默认值都是null

java之封装继承多态

旧时模样 提交于 2019-11-27 12:41:58
封装是将对象的属性封装起来私有化,并对外提供可访问的方法来访问操作属性。 继承是在已有类的基础上创建新的类,并且子类拥有父类的公有的属性和行为。子类也可以重写父类的方法实现子类自有的一些特性。 1、子类拥有父类的非private属性和方法 2、 子类可以有自己特有的方法,即可以对父类进行扩展 3、子类可以重写父类的方法 多态是指在引用类型的变量在编译节点引用变量的具体行为是不确定的,只用在程序运行期间才能确定引用类型行为的具体执行者。(接口的实现,子类对父类方法的重写) 来源: https://blog.csdn.net/weixin_42247563/article/details/99674609

夯实JS主要知识点

。_饼干妹妹 提交于 2019-11-27 12:25:13
夯实JS主要知识点 转自:https://juejin.im/post/5d54e78be51d4561b072dce6 从事前端行业到现在,感觉自己进步最大的时候就是去年打算换工作开始学习的那段时间,特别是看 yck 大佬的掘金小册《前端面试之道》的那段时间。正是那段时间的学习,慢慢对前端知识体系有了个模糊的轮廓,而且也开始接触掘金这个有意思的技术平台。如今工作尘埃落定,倒开始懒散了,通勤路上又开始玩游戏了,晚上回家又开始玩游戏不看书了,闲的时候开始在微信群QQ群注水了。可是距离30岁越来越近,眼前的路却越来越模糊。我知道留给我补课的时间不多了。工作的前三年已经被我挥霍掉,如果这两年不把失去的时间补回来,我可能永远都只能停留在初中级程序员的水平。谨记我还是一个半路出家的非科班出身的大龄初级前端开发工程师,自勉! 基本类型和引用类型 类型判断 强制类型转换 作用域 执行上下文 理解函数的执行过程 this 指向 闭包 原型和原型链 js 的继承 event loop 基本类型和引用类型 js中数据类型分为基本类型和引用类型,基本类型有六种: number string boolean null undefined symbol (es6) 引用类型包括对象 object 、数组 array 、函数 function 等,统称对象类型: object string 类型即字符串

重读js高程笔记二

吃可爱长大的小学妹 提交于 2019-11-27 10:42:19
引用类型的值(对象)是引用类型的一个实例,在ES中引用类型是一种数据结构,将数据和功能组织在一起。引用类型有时候也被称之为 对象定义 ,因为他们描述的是一类对象所具有的属性和方法。 Object类型 两种创建方式 1 new Object() var person = new Object(); person.name = "jing"; person,age = 20; 2 对象字面量 var person = { name:"jing", age:20 } 属性的访问两种方式,1-person.name, 2-person['name'] ,后一种方式的好处可以用来在代码中拼接属性名。 Array 创建方式 // 使用new Array() 构造函数 var arr1 = new Array(); var arr2 = new Array(20); // 长度为20 var arr3 = new Array("red","blue","yellow"); // 数组字面量表示法 var arr4 = ["red","blue","yellow"]; 检测数组方法 arr instanceof Array ,页面多个框架引起的多个全局执行环境问题。怎么理解呢(?) ES5引入的 Array.isArray(arr) 解决上面的问题 #### Array的常用方法 转换方法

final,权限,引用类型数据

匆匆过客 提交于 2019-11-27 09:47:18
1. final关键字 1.概述 为了避免子类出现随意改写父类的情况,java提供了关键字 final ,用于修饰不可改变内容 final:不可改变,可以修饰类,方法和变量 类:被修饰的类,不能用于继承 方法:被修饰的方法,不能被重写 变量:被修饰的变量,不能重新赋值 2.使用方式 修饰类 格式如下: public final class 类名{ } 含义: 当前这个类不能拥有任何的子类. (太监类) 注意: 一个类如果是final的, 那么其中的所有的成员方法都无法进行覆盖重写(没有儿子) String,Math,Scanner这些类都是被final修饰的,目的是供我们使用,而不让我们改变内容 修饰方法 格式: 修饰符 final 返回值类型 方法名(参数列表){ //方法体 } //注意: 对于类,方法来说, abstract关键字和关键字final 不能同时使用,矛盾 重写 final 修饰的方法,编译时就会报错 修饰变量 1.局部变量—基本类型 基本类型的局部变量,被 final 修饰后,只能赋值一次,不能再更改. public class FianlDemo{ public static void main(String[] args){ // 声明变量,被final修饰 final int a; //第一次赋值 a = 10; //第二次赋值直接报错 final int

.NET面试题解析(04)-类型、方法与继承

匆匆过客 提交于 2019-11-27 09:36:46
文章转载自: http://www.pythonheidong.com/blog/article/2971/ 系列文章目录地址: .NET面试题解析(00)-开篇来谈谈面试 & 系列文章索引 做技术是清苦的。一个人,一台机器,相对无言,代码纷飞,bug无情。须梦里挑灯,冥思苦想,肝血暗耗,板凳坐穿。世界繁华竞逐,而你独钓寒江,看尽千山暮雪,听彻寒更雨歇。——来自《 技术人的慰藉 》 常见面试题目: 1. 所有类型都继承System.Object吗? 2. 解释virtual、sealed、override和abstract的区别 3. 接口和类有什么异同? 4. 抽象类和接口有什么区别?使用时有什么需要注意的吗? 5. 重载与覆盖的区别? 6. 在继承中new和override相同点和区别?看下面的代码,有一个基类A,B1和B2都继承自A,并且使用不同的方式改变了父类方法Print()的行为。测试代码输出什么?为什么? public void DoTest() { B1 b1 = new B1(); B2 b2 = new B2(); b1.Print(); b2.Print(); //按预期应该输出 B1、B2 A ab1 = new B1(); A ab2 = new B2(); ab1.Print(); ab2.Print(); //这里应该输出什么呢? } public

JavaScript 的数据类型

坚强是说给别人听的谎言 提交于 2019-11-27 08:03:05
一、分类   根据 JavaScript 中的变量类型传递方式,分为基本数据类型和引用数据类型。其中基本数据类型包括Undefined、Null、Boolean、Number、String、Symbol (ES6新增,表示独一无二的值),而引用数据类型统称为Object对象,主要包括对象、数组和函数。 二、区别   在参数传递方式上,有所不同: 函数的参数如果是简单类型,会将一个值类型的数值副本传到函数内部,函数内部不影响函数外部传递的参数变量 如果是一个参数是引用类型,会将引用类型的地址值复制给传入函数的参数,函数内部修改会影响传递参数的引用对象。    基本数据类型和引用数据类型的区别: 基本类型和引用类型存储于内存的位置不同,基本类型直接存储在栈中。 引用类型的对象存储在堆中,与此同时,在栈中存储了指针,而这个指针指向正是堆中实体的起始位置。 三、举例   下面通过一个小题目,来看下两者的主要区别: // 基本类型 var a = 10 var b = a b = 20 console.log(a) // 10 console.log(b) // 20   上述代码中,a b都是值类型,两者分别修改赋值,相互之间没有任何影响。再看引用类型的例子: // 引用类型 var a = {x: 10, y: 20} var b = a b.x = 100 b.y = 200