引用类型

对象类型的参数传递

喜欢而已 提交于 2019-11-26 16:48:07
Java中只有值传递 基本数据类型作为参数,直接引用; 引用类型作为参数,操作的是引用指向的堆内存中的对象 Java的八种基本数据类型 序号 数据类型 位数 默认值 所占字节 1 byte(位) 8 0 1 2 short(短整数) 16 0 2 3 int(整型) 32 0 4 4 long(长整型) 64 0 8 5 float(单精度) 32 0.0 4 6 double(双精度) 64 0.0 8 7 char(字符) 16 2 8 boolean(布尔值) 8 false 引用类型的作用是为变量起一个别名, 例:student st=new student; 来源: https://www.cnblogs.com/dream--sky/p/11327152.html

JS变量、作用域

試著忘記壹切 提交于 2019-11-26 14:39:35
变量   可以理解成一个存放数据的容器,方便多次使用这个值   在命名的时候注意:   1.区分大小写   2.不用关键字和保留字   3.命名有意义(不用 拼音 和 带数字序号 的名称,可以用 下划线 / 驼峰 来命名,实际开发中遵从统一的命名规则) 数据类型 基本类型   数字、字符串、布尔值、null、undefined   基本类型的值 不可修改 ,类似于化学中的原子(最小单位,不可再分割)   (可能会认为Number类型的值可以修改,但实际上只是用新的数值覆盖了旧的) 1 var str = "hello world'; 2 var str1 = str.replace('o',''); 3 //str并没有改变,实际上创建了一个新的字符串并把改变后的字符串的值赋值给它 4 console.log(str); 5 console.log(str1);   基本类型调用方法时,会找到其包装对象,把属性和方法借给基本类型,之后包装对象消失   保存在 栈内存 中,有序排列, 大小固定 ,按照 值 访问   值复制时 只是把值复制了 ,复制后修改一个,另一个不变 引用类型   数组、对象   值 可以修改 ,类似于化学中的分子(由多个原子/小分子组成,可以分割) 1 var myhome = { 2 'name':'xh', 3 'age':18, 4 'sex':'male

JS基础知识记录(一)

ε祈祈猫儿з 提交于 2019-11-26 14:29:53
1.alt shift f格式化代码,全部重新排列 2.输出语句(不是ES标准) doucument.write alert console.log 3.输入语句 prompt("") 类似alert的弹框 4.JS数据类型 原始类型 不可再细分的类型 1.数字类型 number 2.字符串类型 string 单引号 双引号 飘`(模板字符串)支持换行 字符串中符号可以使用转义符\ \n换行 \t制表符(相当于tab) 3.布尔类型 boolean 4.undefined 5.null 引用类型 1.对象Object { name:"XXX", nickname:"aaa" 还可以再嵌套新的对象 } 2.函数 用typeof "a"检测数据类型 ##字面量 直接书写的数据,比如对象字面量 5.变量 (内存空间) 1.声明变量 可以先不存数据 var + 变量名 没存为undefined 2.变量的名称叫标识符 只能以英文字母、下划线、$开头 3.语法糖 声明赋值一起写 4.JS会进行语法提升,声明的变量会自动提升到顶部 赋值会拆分,赋值不会提到最顶部 5.JS允许同名变量 会进行语法提升,合并为同一变量 6.对象中的属性(属性会自动转化为字符串) 读取方法:对象变量名.属性名 也可以用对象变量 "属性名" 后者属性名可以用另一个变量代替 对象存在属性不存在就会得到undefined

java的浅拷贝和深拷贝

*爱你&永不变心* 提交于 2019-11-26 13:56:22
引用网上资料的定义: 浅拷贝:将对象中的所有字段复制到新的对象中。其中, 值类型 字段被复制到新对象中后,在新对象中的修改不会影响到原先对象的值。而新对象的 引用类型 则是原先对象引用类型的引用,不是引用自己对象本身 深拷贝:同样也是拷贝,但是与浅拷贝不同的是,深拷贝会对 引用类型 重新在创新一次(包括 值类型 ),在新对象做的任何修改都不会影响到源对象本身。 加上自己的一点理解,深拷贝应该与c++中函数的&功能类似。 来源: https://www.cnblogs.com/powerkeke/p/11934870.html

函数经典面试题

陌路散爱 提交于 2019-11-26 13:37:01
方式1:一个构造函数,里面有个全局变量getName 指向一个匿名函数 function Foo(){     getName = function (){     console.log(1);     }   return this; } 方式2:构造函数的一个属性getName 指向一个匿名函数 Foo.getName = function(){   console.log(2); } 方式3:构造函数的原型上有个getName方法 Foo.prototype.getName = function (){   console.log(3); } 方式4:定义一个变量指向一个匿名函数 var getName = function (){   console.log(4); } 方式5:声明一个叫getName的函数 function getName(){   console.log(5); } //请写出下面输出的结果 Foo.getName();        //2 getName();          //4 Foo().getName();        //1 getName();            //1 new Foo.getName();        //2 new Foo().getName();          //3 new new Foo()

【译】尝试使用Nullable Reference Types

冷暖自知 提交于 2019-11-26 12:56:31
随着.NET Core 3.0 Preview 7的发布,C#8.0已被认为是“功能完整”的。这意味着它们的最大亮点Nullable Reference Types,在行为方面也被锁定在.NET Core版本中。它将在C#8.0之后继续改进,但现在可以认为它与C#8.0的其余部分一样是稳定的。 目前,我们的目标是尽可能多地收集关于可空性使用过程中的反馈以发现问题,同时收集有关在.NET Core 3.0之后我们可以做的功能的进一步改进的反馈。这是有史以来为C#构建的最大功能之一,尽管我们已尽力做好它,但我们仍然需要您的帮助! 正是基于这样的交叉点,我们特别呼吁.NET库作者们尝试使用该功能并开始注解您的库。我们很乐意听取您的反馈并帮助解决您所遇到的任何问题。 熟悉该功能 我们建议您在使用该功能之前,先阅读一下 Nullable Reference Types文档 ,它包含以下功能点: 概念性概述 如何指定可为空的引用类型 如何控制编译器分析或覆盖编译器分析 如果您还不熟悉这些概念,请在继续操作之前快速阅读文档。 为您的库采用可空性的第一步是放开Nullable约束。具体步骤: 确保您使用的是C#8.0 如果您的库是基于 netcoreapp3.0的 ,默认情况下将使用C#8.0。当我们发布预览8时,如果你是基于 netstandard2.1 构建,那么默认情况也将使用C#8.0 。

C#中ref和out的原理

风格不统一 提交于 2019-11-26 10:16:49
去年在 CSDN 上写的,现在把它搬过来。 一、引发问题 用了那么久的 ref 和 out ,你真的了解它们是如何使得实参与形参的值保持同步的吗? 二、研究前提 要研究这个问题,前提是要了解 C# 中方法间参数是如何传递的: 1.CLR支持两种类型: 值类型 和 引用类型 。 a. 值类型:值一般保存在线程栈上,作为类对象的字段时保存在堆上。 b. 引用类型:对象实例保存在堆上,引用保存在线程栈上,值类型可以通过装箱变为引用类型。    1 //表示引用类型 2 class Ref 3 { 4 private int _x; 5 public int X 6 { 7 get => _x; 8 set 9 { 10 _x = value; 11 } 12 } 13 } 14 15 static void TestValAndRef() 16 { 17 //第一部分 18 int a1 = 5; 19 var ref1 = new Ref() 20 { 21 X = 5 22 }; 23 24 //第二部分 25 int a2 = a1; 26 a2 = 10; 27 var ref2 = ref1; 28 ref2.X = 10; 29 } 上述代码执行时变量的存储情况: ​ 2.参数传递方式分为 传值 和 传引用 两种。 3.对于CLR来说,使用out和ref都会生成相同的IL代码

String引用类型的一些特性

人走茶凉 提交于 2019-11-26 10:16:41
由于学String类型的时候踩了不少坑,也参考了很多网上的资料,所以也想简单做个总结。有什么不对的地方,希望大家见谅,大家也可以一起交流交流。 首先,String其实是被final修饰的一个类,是一个底层用char[]字符串数组实现对字符串进行一系列操作的类,也相当于对char[]数组封装的一个类,提供了很多方法操作char[]数组。 那么String有哪些特俗的特性: 1.String创建值不会改变,也就是一旦创建,不再改变。 比如:String name=“xyz”; name = name+“abc”; String 创建的引用name 遇上 +(字符串拼接符) 不会在原来的值上拼接 ,实际上是在常量池建了一个新的内存空间“xyzabc”,name的引用指向新的内存空间,原来的“xyz”地址现在没有引用,变成垃圾。这样的操作会产生很多内存垃圾。 一旦一个字符串在内存(堆)中被创建,它就不可以被修改。我们应该记住这一点,String的所有所有方法都不能够修改它本身的字符串,但是,可以返回一个方法操作之后的新字符串。 如果我们需要可以修改的字符串,我们应该使用StringBuffer或者StringBuilder(jdk1.8版本优化了+字符拼接符,实现底层默认使用StringBuffer或者StringBuilder)。 2.String 通过new关键字创建带参数的对象

java之API初识

做~自己de王妃 提交于 2019-11-26 09:02:33
API概念 API(Application Programming Interface),应用程序编程接口。 JavaAPI是一本程序员的字典 ,是JDK中提供给 我们使用的类的说明文档 。这些类将底层的代码实现封装了起来,我们不需要关心这些类是如何实现的,只需要学 习这些类如何使用即可。所以我们可以通过查询API的方式,来学习Java提供的类,并得知如何使用它们。 API使用步骤 打开帮助文档。 点击显示,找到索引,看到输入框。 你要找谁?在输入框里输入,然后回车。 看包。java.lang下的类不需要导包,其他需要。 看类的解释和说明。 学习构造方法。 使用成员方法。 注意: 类属于引用类型,所以符合引用类型的使用步骤 引用类型一般使用步骤 1:导包 使用import关键字导包,在类的所有代码之前导包,引入要使用的类型。 格 式: import 包名.类名; 注意: 只有java.lang包下的所有类无需导入。如果需要使用的目标类,和当前类位于同一个包下,则可以省略导包语句不写。 2:创建对象 使用该类的构造方法,创建一个该类的对象。 格式: 数据类型 变量名 = new 数据类型(参数列表); 3:调用 调用该类的成员方法,完成指定功能 格式 : 变量名.方法名(); 调用该类的成员变量,获取指定的数据 格式 :变量名.成员变量名 来源: https://www