引用类型

第3章 Javadoc指令使用详细介绍

笑着哭i 提交于 2020-02-04 11:30:46
本章要点: Javadoc指令使用详细介绍 关于标识符和关键字 Javadoc指令使用详细介绍 java里面的注释分单行注释、多行注释和文档注释。这里重点讨论javadoc 指令的实际使用。 1.单行注释: 使用双斜线"//"放在需要注释的内容之前 2.多行注释:使用"/ “注释开始,” /"注释结束。 3.文档注释:文档注释以"/**"开始, ​ 以"*/" 结束。 下面使用三个简单的案例介绍如何使用javadoc工具生成API文档。 案例1:javadoc命令生成简单的API文档: 1)来到JavadocTest.java和Test.java所在的路径 文件内容如下: 2)执行以下命令 $ javadoc -encoding GBK -d apidoc -windowtitle 测试 -doctitle 使用javadoc工具生成API文档 -header 我的类 *Test.java 参数解释: -encoding : javadoc执行时的编码指令,因为JavadocTest.java和Test.java中含有中文,所以要设置成GBK编码,否则会包“utf-8 不可编码”的错误 -d: 设置生成的API文档的路径,这里写“apidoc”会在当前路径处生成一个apidoc文件夹 -windowtitle:为api文档的浏览器窗口设置字符串标题。 -doctitle

C# 值类型与引用类型(详解)

烂漫一生 提交于 2020-02-04 08:09:07
C# 语言的类型系统 值类型与引用类型在内存中的分配 引用类型的变量存储着引用类型的实例在堆内存中的内存地址; 变量名表示(对应着)变量的值在内存中的存储位置; 值类型变量 引用类型变量 一个值类型变量赋给另一个值类型变量时,将复制其包含的值 引用类型变量的赋值只复制对象的引用,不复制对象本身 不能继承,所有值类型都是隐式密封的 可以继承 均派生自 System.ValueType类,System.ValueType又继承自System.Object类 派生自System.Object类 // 假设Test这个类(引用类型)或结构(值类型)中包含两个值类型字段a和b并且通过它的构造函数来获取a和b的值 Test t1 = new Test ( 1 , 2 ) ; Test t2 = t1 ; 值类型图解: 引用类型图解: 装箱与拆箱 ```csharp int x = 100 ; object obj ; obj = x ; // 装箱 int y = ( int ) obj ; // 拆箱 装箱: 把栈上的值类型的值封装成一个Object类型的实例放在堆上; 拆箱: 把堆上的Object类型的实例的值拆成目标数据类型存储在栈上; Tips: 装箱和拆箱操作损失性能。 参考资料 https://www.bilibili.com/video/av1422127/?p=7&t=3333

c#中结构与类的区别

天涯浪子 提交于 2020-02-02 02:02:08
一.类与结构的示例比较:   结构示例:   public struct Person   {   string Name;   int height;   int weight   public bool overWeight()   {   //implement something   }   }   类示例:   public class TestTime   {   int hours;   int minutes;   int seconds;   public void passtime()   {   //implementation of behavior   }   }   调用过程:   public class Test   {   public static ovid Main   {   Person Myperson=new Person //声明结构   TestTime Mytime=New TestTime //声明类   }   }   从上面的例子中我们可以看到,类的声明和结构的声明非常类似,只是限定符后面是 struct 还是 class 的区别,而且使用时,定义新的结构和定义新的类的方法也非常类似。那么类和结构的具体区别是什么呢?   二 .类与结构的差别   1.值类型与引用类型   结构是值类型:值类型在堆栈上分配地址

类与结构的差别

谁说胖子不能爱 提交于 2020-02-02 01:57:10
二 .类与结构的差别 1. 值类型与引用类型 结构是值类型:值类型在堆栈上分配地址,所有的基类型都是结构类型,例如:int 对应System.int32 结构,string 对应 system.string 结构 ,通过使用结构可以创建更多的值类型 类是引用类型:引用类型在堆上分配地址 堆栈的执行效率要比堆的执行效率高,可是堆栈的资源有限,不适合处理大的逻辑复杂的对象。所以结构处理作为基类型对待的小对象,而类处理某个商业逻辑 因为结构是值类型所以结构之间的赋值可以创建新的结构,而类是引用类型,类之间的赋值只是复制引用 注: 1.虽然结构与类的类型不一样,可是他们的基类型都是对象(object),c#中所有类型的基类型都是object 2.虽然结构的初始化也使用了New 操作符可是结构对象依然分配在堆栈上而不是堆上,如果不使用“新建”(new),那么在初始化所有字段之前,字段将保持未赋值状态,且对象不可用 2.继承性 结构:不能从另外一个结构或者类继承,本身也不能被继承,虽然结构没有明确的用sealed声明,可是结构是隐式的sealed . 类:完全可扩展的,除非显示的声明sealed 否则类可以继承其他类和接口,自身也能被继承 注:虽然结构不能被继承 可是结构能够继承接口,方法和类继承接口一样 例如:结构实现接口 interface IImage { void Paint(); }

javascript中的对象拷贝

≡放荡痞女 提交于 2020-02-01 08:02:35
js中的数据类型 在介绍javascript中的对象的拷贝之前,我先介绍一个基础的东西,javascript中的数据类型。 我们做前端的应该都知到在es6 之前,javascript中的数据类型 Boolean 、 Number 、 String 、 Undefined 、 Object 、 Null ,后来在es6 中又引入了一种新的数据类型为: Symbol 。而这些数据类型又被分为基本数据类型和引用数据类型,基本数据类型存储在栈中;引用数据类型存储在堆中。其中基本数据类型包括有: Boolean 、 Number 、 String 、 Undefined 、 Null 以及刚刚提到的新的数据类型 Symbol ,引用类型包括: Object 、 Function 、 Array 。我为甚么会提到 Function 和 Array 主要是因为我么在对象的深拷贝过程中需要对这两种数据类型进行特殊处理。 什么是对象的拷贝 介绍完了js中的数据类型之后,来看一下拷贝,什么是对象的拷贝,说白了就是复制,将原来的东西给复制一份。就比如说,将磁盘上的一个文件给拷贝一份,就是将磁盘中的文件给复制了一个一模一样的新的文件。就比如说下面的例子; var a = 123; var b = a; var c = {name: 'zhangsan', age: 18}; var d = c; var

Javascript变量作用域!

孤街浪徒 提交于 2020-02-01 05:52:50
基本类型和引用类型 基本类型值指的是简单的数据段,而引用类型值指的是那个可能由多个值组成的对象 讲一个值赋值给变量时,javascript解析器首先要确定是基本类型还是引用类型,基本数据类型可以直接操作保存在变量中的值,而引用数据类型的值是保存在内存中的对象,在操作对象是,实际上操作的是对象的引用而不是实际的对象 变量的赋值 如果从一个变量上向另一个变量上复制 基本数据类型 的值,会在变量对象上创建一个新值,然后把该值复制到新变量的位置上,这个很好理解,来看下例子: javascript var num1 = 5; var num2 = num1; 这是基本数据类型,而引用类型呢?其实同样会将原来变量上的值复制一份到新的变量当中,只不过,复制的其实是原来变量的一个指针,而这个指针指向存储在堆中的一个对象。复制完成后,两个变量都指向了堆中的同一个对象,所以改变其中一个的值,会对另外一个产生影响。有以下代码 javascript var obj1 = new Object(); var obj2 = obj1; obj1.name = "Nicholas"; alert(obj2.name); //"Nicholas" 传递参数 在javascript里面,参数的传递都是按照 值类型来传递 的,即使你传入的是一个引用类型 javascript function setName(obj)

JVM垃圾回收机制之引用类型

南楼画角 提交于 2020-02-01 04:58:31
一:引用的类型   javac编译器编译源文件后,生成字节码文件,在类加载器加载字节码文件到内存中时,在内存中开辟 空间,栈、堆以及方法区,来存放对象以及引用。引用可以分为四种: 强引用:平常我们在编写程序时使用比较多的是强引用,在栈内存中有引用指向的对象,即使内存不足也不会被回收,而是 抛出OutOfMemoryException,这就是强引用,如果我们希望回收,可以手动将引用置为null。 StringBuilder sb = new StringBuilder();    软引用:在内存空间充足的情况下不会被回收,但是在内存溢出前会回收掉该引用对象,以释放内存空间,多用于高速缓存。 弱引用:无论内存空间是否充足,只要垃圾回收器扫描到就会被回收。这种情况用的比较少,主要是引入WeakHashMap类 虚引用(幽灵引用):永远都获取不到的对象,可以用来检测引用是否被回收。 具体解释可以参考: http://blog.csdn.net/qq_34280276/article/details/52863626 来源: https://www.cnblogs.com/warrior4236/p/6770635.html

javascript: 数据类型深入理解

寵の児 提交于 2020-02-01 01:52:35
1.基本类型(值类型或者原始类型): Number、Boolean、String、NULL、Undefined以及ES6的Symbol 2.引用类型:Object、Array、Function、Date等 1 、在内存中的位置不同 基本类型: 占用空间固定,保存在 栈中 ; 引用类型:占用空间不固定,保存在 堆中 ; 栈(stack)为自动分配的内存空间,它由系统自动释放;使用一级缓存,被调用时通常处于存储空间中,调用后被立即释放。 堆(heap)则是动态分配的内存,大小不定也不会自动释放。使用二级缓存,生命周期与虚拟机的GC算法有关 当一个方法执行时,每个方法都会建立自己的内存栈,在这个方法内定义的变量将会逐个放入这块栈内存里,随着方法的执行结束,这个方法的内存栈也将自然销毁了。因此,所有在方法中定义的变量都是放在栈内存中的;栈中存储的是基础变量以及一些对象的引用变量,基础变量的值是存储在栈中,而引用变量存储在栈中的是指向堆中的数组或者对象的地址,这就是为何修改引用类型总会影响到其他指向这个地址的引用变量。 当我们在程序中创建一个对象时,这个对象将被保存到运行时数据区中,以便反复利用(因为对象的创建成本通常较大),这个运行时数据区就是堆内存。堆内存中的对象不会随方法的结束而销毁,即使方法结束后,这个对象还可能被另一个引用变量所引用(方法的参数传递时很常见)

[.net 面向对象编程基础] (4) 基础中的基础——数据类型转换

别等时光非礼了梦想. 提交于 2020-02-01 00:16:10
[.net 面向对象编 程基础 ] (4) 基 础中的基础——数据类型转换 1. 为什么要进行数据转换 ? 首先,为什么要进行数据转换,拿值类型例子说明一下, 比如:我们要把 23 角零钱,换成 2.30 元,就需要把整形转换成小数型。 再比如我们转换一个引用类型的数据,前面说过我们自定义类属于引用类型,假如我们定义了两个类,一个类叫“白猫”,一个类叫“黑猫”,我们要让他们都归为“猫”这个类(不管黑猫白猫,能捉老鼠就是好猫),这种情况就需要将白猫和黑猫这两个类转换成“猫”类。 因此为了运算方便,我们经常要进行不同数据类型间的转换。而且计算机在存储数据的时候,因为数据长度等不同,占用的存储空间要根据预定义好的类型事先分配。在存取之前要进行数据类型的转换。 2.C#类型转换的方式:隐式转换、显式转换、用户自定义转换、使用帮助程序类的转换 隐式转换 :由于该转换是一种安全类型的转换,不会导致数据丢失,因此不需要任何特殊的语法。 例如,从较小整数类型到较大整数类型的转换以及从派生类到基类的转换都是这样的转换。 显式转换(强制转换) :显式转换需要强制转换运算符。 在转换中可能丢失信息时或在出于其他原因转换可能不成功时,必须进行强制转换。典型的例子包括从数值到精度较低或范围较小的类型的转换和从基类实例到派生类的转换。 用户定义的转换:可以定义一些特殊的方法来执行用户定义的转换

C++基础·笔记——引用的总结

不羁岁月 提交于 2020-01-31 11:20:14
C++基础·笔记——引用的总结 ~QQ:3020889729 ~小蔡 引用的理解(C++) 引用的定义 引用的含义 引用的使用(C++) 对变量进行引用操作 **关于必须初始化/不能进行第二次引用修改的说明(代码)** ①必须初始化: ②只能进行一次引用 一、实参与实参的引用操作: 二、实参与形参的引用操作: 返回值为引用类型的操作 返回值为引用类型的理解 总结 ~QQ:3020889729 ~小蔡 引用的理解(C++) 引用的定义 引用就是 某一变量(目标) 的一个别名,对 引用 的操作与对 变量 直接操作完全一样。 引用的含义 ①引用就是一个 指针常量 ——所谓指针常量就是,指针指向一个确定的地址,且该 地址确定不变 。 ②既然只是确定地址不变,那么 地址上的内容 就是可以 修改 / 设置 的。 ③引用作用的一个目标——该目标可以是对象或者说变量,但是不能是数组,因为数组不单一。 (ps:对数组操作,就直接使用指针就好。多级指针会在另外一篇博客上有说。) 引用的使用(C++) ps:使用引用时,必须初始化,并且初始化确定后,不可以再更改。 对变量进行引用操作 关于必须初始化/不能进行第二次引用修改的说明(代码) ①必须初始化: (代码如下) #include "iostream" using namespace std; int main() { int a=5; int &b