构造函数

C到C++ 快速过度 C 结构体到类

|▌冷眼眸甩不掉的悲伤 提交于 2020-11-10 08:32:25
<!--结构体--> 还记得C语言中的结构体么? struct Point{ double x; double y; }; 上面的代码是一个“结构体模版”,我们利用它创建了一个叫做Point的类型。 在这之后,我们就可以像声明基本类型的变量一样声明Point类型: Point ob; ob叫做结构体Point的一个“实例”。(更多被称为“对象”,下文中不再区分“实例”和“对象”这两个词。) 而当我们 int n; 的时候,会讲声明了int类型的一个“变量” n。 而当我们Point ob; 的时候,我们一般称“构建了Point的一个对象” ob。 结构体是一种复合类型,但是它和同样身为复合类型的数组不同。 数组是相同类型元素的线性集合,而一个结构体中却能含有不同类型的成员。 <!--数组操作技巧--> // 这是穿插的关于数组常用操作的讲解 和结构体与类并没有多大关系 不感兴趣的可以跳过^_^ char name[20]; 我们这样就声明了一个数组,并且每个name[i](0 <=i < 20)都是一个独立的char类型的变量。它们被称为数组的“元素”。 值得一提的是,同一个数组的各个元素所占用的内存空间是连续的。 这使得我们在遍历(检索)整个数组的时候,速度非常的快: int line[] = {2, 5, 6, 7, 8, 12, -5, -32}; // 1 int len

课后实战String的一些细节

妖精的绣舞 提交于 2020-04-08 14:40:28
String类是 字符串常量 ,是不可更改的常量。而StringBuffer是字符串变量,它的对象是可以扩充和修改的。 StringBuffer类的构造函数 public StringBuffer() 创建一个空的StringBuffer类的对象。 public StringBuffer( int length ) 创建一个长度为 参数length 的StringBuffer类的对象。 注意:如果参数length小于0,将触发NegativeArraySizeException异常。 public StringBuffer( String str ) 用一个已存在的 字符串常量 来创建StringBuffer类的对象。 if(sbf.length()==11) { sbf.replace(3, 7, "****"); System.out.println("手机号:"+number+"\n屏蔽后的效果:"+sbf.toString()); } String中的方法replace和toString方法 来源: https://www.cnblogs.com/de-ming/p/12659426.html

JS函数调用方式

好久不见. 提交于 2020-04-07 19:28:29
(1)作为函数 在ECMAScript3和ECMAScript5中,调用上下文(this)是全局对象。在严格模式中,调用上下文是undefined (2)作为方法 此时方法的上下文为该函数对象 (3)作为构造函数 构造函数初始化新创建的对象,并将这个对象作为其调用上下文,并用this引用这个新创建的对象。 new o.m()中的this指向的是新创建的对象,而不是m。 构造函数中的return语句没有返回值或者返回一个原始值,则忽略这个返回值,同时使用新对象作为调用结果 var Create = function(book){ this.book = book; //return ; 还是返回新创建的对象 //return 1; 还是返回新创建的对象 //return [1]; 此时返回[1] } (4)通过它们的apply(),call()间接调用 注:作为嵌套的函数 不会从调用它的函数中继承this 。如果嵌套函数作为方法调用,this指向调用它的对象,否则this指向window或undfined。 var o = { m: function(){ var self = this; console.log(this === o); //true f(); function f() { console.log(this === o); //false console.log

C#基础笔记(第九天)

余生长醉 提交于 2020-04-07 15:27:32
1、面向过程<-->面向对象 面向过程:面向的是完成这件事儿的过程,强调的是完成这件事儿的动作。 面向对象:找个对象帮你做事儿。意在写出一个通用的代码,屏蔽差异。 每个人都有姓名,性别,身高,体重,年龄. 这些可以看做是对象的属性 对象必须是看得见摸得着的 我们把这些具有相同属性和相同方法的对象进行进一步的封装,抽象出来 类这个概念。 类就是个模子,确定了对象应该具有的属性和方法。 对象是根据类创建出来的。 2、类 语法: [public] class 类名 { 字段;(存储数据,存储多个值) 属性; 方法; } 写好了一个类之后,我们需要创建这个类的对象, 创建这个类的对象过程就叫类的实例化。 使用关键字 new. this:表示当前这个类的对象。 类是不占内存的,而对象是占内存的。 之前只有类,没有对象,当我们实例化对象,给它赋值之后(对象),对象就出现了。以后操作就针对这个对象去操作。这就是面向对象的操作。 自定义类,不是系统提供的,自己写的。 字段默认情况下有初值。字段占内存。 3、属性 属性的作用就是保护字段、对字段的赋值和取值进行限定。 属性的本质就是两个方法,一个叫get()一个叫set()。 √ get() √ set() 可读可写属性。 √ get() × set() 只读属性 × get() √ set() 只写属性 Fields 字段 Methods 方法

js高级-面向对象继承

狂风中的少年 提交于 2020-04-07 12:13:20
一、工厂模式创建对象及优缺点   继承就是把公共的部分抽象出来作为父类,基类。吃饭,跑步等   var a = {};  //批量创建不方便,不能重复设置公共属性的代码   //工厂模式出现了,创建10个Cat对象 每个对象都有年龄、姓名的属性,包括run方法   注意区分 js高级-函数的四种调用模式   function createCat(age,name){     var o = new Object();     o.age = age;     o.name = name;     o.run = function (){       console.log(o.name + 'running...')     }     return o;   }   var c = createCat(19,'xixi')   //缺点 c的原型 构造函数是Object 方法不共享 二、构造函数模式创建对象   function Cat(age,name){     this.name = name;     this.age = age;     this.run = function(){       console.log(this.name + 'running..')     }   }   var c1 = new Cat(19,'kk')  /

SpringBoot2.x基础篇:谈谈SpringBoot内提供的这几种配置绑定

妖精的绣舞 提交于 2020-04-07 11:53:50
知识改变命运,撸码使我快乐,2020继续游走在开源界<br/> 点赞再看,养成习惯<br/> 给我来个Star吧, 点击了解下基于SpringBoot的组件化接口服务落地解决方案 常见配置绑定方式 SpringBoot 在不断地版本迭代中陆续提供了不同的配置参数绑定的方式,我们可以单独获取 一个配置参数 也可以将 一系列的配置 映射绑定到 JavaBean 的属性字段,下面我们来看看这几种方式的配置绑定哪一种是你最常用到的。 示例配置参数 system: config: app-id: hengboy app-secret: yuqiyu@admin 上面是一段示例的配置参数,提供给下面的配置绑定方式来使用。 @Configuration方式绑定 当我们需要将一个配置前缀下的参数映射绑定到 JavaBean 的属性字段时,我们可以考虑使用 @ConfigurationProperties + @Configuration 注解组合的方式,使用如下所示: /** * 系统配置 * * @author 恒宇少年 */ @Configuration @ConfigurationProperties(prefix = SYSTEM_CONFIG_PREFIX) @Data public class SystemConfig { /** * 系统配置前缀 */ public static

2、Effective Java 57条

孤街浪徒 提交于 2020-04-07 10:07:56
第一条:考虑用静态工厂方法代替构造函数 1 、优点: ( 1 )、静态工厂方法的一个好处是,与构造函数不同,静态工厂方法具有名字。 ( 2 )、静态工厂方法的第二个好处是,与构造函数不同,它们每次被调用的时候,不要求非得创建一个新的对象; ( 3 )、与构造函数不同,它们可以返回一个原返回类型的子类型对象; 2 、缺点: ( 1 )、类如果不含公有的或者受保护的构造函数,就不能被子类化; ( 2 )、它们与其他的静态方法没有任何区别; 第二条 : 使用私有构造函数强化 singleton 属性 解释: singleton 是指这样的类,他只能实例化一次,通常用来代替本质上具有唯一性的系统组件; ( 1 )、提供公有静态成员是一个 final 域: Public class Elvis{ Public static final Elvis INSTANCE = new Elvis(); Private Elvis(){ …… } …… } (2)、提供一个公有的静态方法,而不是公有的静态final域: Public class Elvis{ Private static final Elvis INSTANCE = new Elvis(); Private Elvis(){ ... } Public static Elvis getInstance(){ ... } ... }

第二章JavaScript 函数和对象

坚强是说给别人听的谎言 提交于 2020-04-07 06:42:10
1 JavaScript 函数 1.1 声明函数的方式 function 关键字 匿名函数方式(表达式方式) Function 构造函数方式 1.2 参数问题 形参和实参数量问题 可选形参(参数默认值) 可变长的实参列表:实参对象 aruguments 1.3 回调函数 一个函数就可以接收另一个函数作为参数,这种函数就称之为回调函数(高阶函数) function add(x, y, f) { return f(x) + f(y); } add(-5, 6, Math.abs) 1.4 递归函数 函数内部调用自己就是递归函数, //用递归 实现阶乘 function multiply(n) { if (n == 1) { return 1 } return n * multiply(n - 1) } 1.5 自调函数 函数生声明完 直接调用 (function(){ console.log('ok') })() 1.6 闭包函数 当一个函数返回了一个函数后,其内部的局部变量还被新函数引用,形成闭包 function count() { var arr = []; for (var i=1; i<=3; i++) { arr.push((function (n) { return function () { return n * n; } })(i)); } return arr; }

C#学习笔记(一)

谁说我不能喝 提交于 2020-04-07 05:37:46
C#学习笔记(一):C#与C++语法的一些不同 1,C#中没有了"::"的域操作符,全部用了"."了。但是继承还是用的":",C#的"::"是用作命名空间别名的修饰符。 2,在C#中变量使用前必须初始化,程序员显式的或者编译器自动的。其中:变量是类或者结构中的字段,如果没有显式初始化,则在默认创建这些变量的时候其值就是0。然而方法的局部变量必须在代码 中显式初始化。(这与C++中不同)。 3,例如对于下面语句:SomeType obj;在C++这个是一个值类型,会在堆栈中创建一个SomeType的实例。但是在C#中这个只会为SomeType对象创建一个引用,这个引用还没有指向任何的对象。也就不能调用它的方法。然而C#中实例化对象要使用new关键字,将对象存储在堆上。返回一个引用。 4,下面的代码: public static in Mian() { int j = 20; for (int i = 0; i < 10; i++) { int j = 30; //....use value j... } } 与C++不同的是这个时候C#不能隐藏for循环的变量:j,前面的j还在定义域中。但是对于下面代码: static int j = 20; public static void Main() { int j = 30; //....use j } 这个就是可以的,这个是静态变量

.Net学习 第2季01 C#面向对象 基础

邮差的信 提交于 2020-04-07 02:00:06
.Net 视频学习第2季 C#面向对象 面向对象 基础 类是一个模板,不占内存,对象是根据模板生成的具象,占内存。 字段field:数据  方法method:函数  属性property:保护字段,对字段的赋值进行限定(将这部分封装在类中,外界不用理会如何实现)属性的本质就是两个方法 get() / set()  外部(甚至类内部的方法)通过属性对字段进行赋值/读取,get()/set()内部会进行限定,字段永远用private,属性才是public的。 namespace Proj { class Person { private int _age; public int Age {      get { return _age; } set { if (value < 0) { value = 0; } _age = value; } } } } 不写字段,只写属性是可以的,编译器会自动生成与属性对应的字段。写好字段后按ctrl+R+E可以生成对应属性。 创建类的对象(实例化)的关键字 new 非静态=实例,非静态类可以有静态成员,也可以有非静态成员,静态成员用类名调用(例如Console.WriteLine();),非静态成员用类的对象来调用。静态类只能有静态成员。注意成员包括字段、属性和方法。 所以对于一个静态的字段/属性,在非静态方法中用this也是访问不到的