实例变量

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

Python 变量类型

旧城冷巷雨未停 提交于 2020-01-21 09:42:01
Python 变量类型 变量存储在内存中的值。这就意味着在创建变量时会在内存中开辟一个空间。 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。 因此,变量可以指定不同的数据类型,这些变量可以存储整数,小数或字符。 变量赋值 Python中的变量不需要声明,变量的赋值操作既是变量声明和定义的过程。 每个变量在内存中创建,都包括变量的标识,名称和数据这些信息。 每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。 等号(=)用来给变量赋值。 等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。例如: #coding=utf-8 #!/usr/bin/python counter = 100 # 赋值整型变量 miles = 1000.0 # 浮点型 name = "John" # 字符串 print counter print miles print name 以上实例中,100,1000.0和"John"分别赋值给counter,miles,name变量。 执行以上程序会输出如下结果: 100 1000.0 John 多个变量赋值 Python允许你同时为多个变量赋值。例如: a = b = c = 1 以上实例,创建一个整型对象,值为1,三个变量被分配到相同的内存空间上。 python开发IT交流群:887934385

柔情痞子 提交于 2020-01-20 07:59:03
  类是最基本的面向对象单元,是用于定义一组对象共同具有的状态和行为的模板。 类声明部分   一般的类声明格式为:[public ][abstract | final ][strictfp ]class 类名[ extends 父类名][ implements 父接口名]    访问限制符 :public属于访问限制符。没有被访问限制符修饰的类只能在当前包内被调用。     public:被public修饰的类是一个公共类。可以被任意类或对象调用。每个Java源文件只能有一个public修饰的类。    abstract :被abstract修饰的类是一个抽象类。抽象类不能实例化,其中的抽象方法需要由子类重写。    final :被final修饰的类是一个最终类。最终类不能被继承,其中的方法不能被重写。    strictfp :被strictfp修饰的类是一个精确浮点类。该类中的所有代码都将严格地进行计算。严格约束意味着所有表达式的结果都必须是IEEE-754算法对操作数预期的结果,以单精度和双精度格式表示。    extends :继承其他类。每个类只能继承一个类。每个类默认继承Object类,省略该部分则表示继承Object类。    implements :实现其他接口。每个类可以实现多个接口。省略该部分则表示没有实现任何接口。 类体部分  

Python学习笔记(六)之函数式编程

微笑、不失礼 提交于 2020-01-20 00:17:04
目录 1.函数式编程(Functional Programming) 2. 高阶函数 2.1 高阶函数是什么? 2.2 map 2.3 reduce 2.4 filter 2.5 sorted 3. 返回函数 3.1 返回函数是什么? 3.2 返回函数实例分析 4. 匿名函数(lambda) 4.1 匿名函数是什么? 4.2 匿名函数实例分析 4.3 匿名函数注意点 5. 装饰器(Decorator) 5.1 装饰器是什么? 5.2 装饰器实例分析 6. 偏函数(Partial function) 6.1 老规矩,偏函数是什么? 6.2 话不多说,直接上实例 6.3 偏函数小总结 1.函数式编程(Functional Programming) 在编程语言中(抽象程度是相对于计算机来说的): 越低级的语言,越贴近计算机,抽象程度越低,执行效率越高,如C语言; 越高级的语言,越贴近数学计算,抽象程度高,执行效率越低,如Lisp。 函数式编程就是一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量。 函数式编程 特点 : 允许将一个函数作为参数传入到另一个函数中。 允许返回一个函数。 Python对函数式编程提供部分支持,由于Python允许使用变量,所以它不是存函数式编程。 2. 高阶函数 2.1 高阶函数是什么? 首先了解两个概念 变量可以指向函数 例2.1.1: >>

java整个理解

浪尽此生 提交于 2020-01-19 18:19:31
jvm内存模型 堆内存 方法区 程序计数器 Java虚拟机栈 本地方法栈 运行时常量池 直接内存 **** 堆内存 这是jvm中最大的一块区域,基本上所有的变量和对象实例都在这一块区域存放,所有线程共享的。但是随着jdk1.6的发布,JIT即时编译技术的优化、逃逸分析技术的成熟,所有对象在堆上分配也不是那么绝对的,只要逃逸分析出对象不会逃逸出线程或者栈,那么原来在堆上分配的变量可以直接在栈上分配,这样在方法调用结束、或者线程结束的时候,栈上内存自动释放,可以大大减少堆内存上的GC收集,提高jvm整体运行效率。会抛出OutOfMemeryError错误,堆的生命周期和jvm的生命周期相同,随着JVM的启动而产生,JVM的终止而释放 **** 方法区 这一部分也是所有线程共享的。方法区存放的是类信息、常量、静态变量和即时编译器编译后的代码,方法区也叫永久代,这里存放的都是类相关的信息,还有字符变量和引用变量。会抛出OutOfMemeryError错误,生命周期和JVM相同 **** Java虚拟机栈 这一部分是线程私有的,每一个线程都会有一个虚拟机栈,虚拟机栈是Java方法执行的内存模型,每一个方法都在虚拟机栈中都对应一个栈帧,该栈帧存放的是,方法调用需要使用到的局部变量表(8大基本数据类型和reference对象引用)、方法参数、动态链接、操作数栈、方法出口的信息。Java没有c、c

云计算之go语言——基础语法(中)

雨燕双飞 提交于 2020-01-19 14:18:32
9 Go 语言循环语句 1, 概念 在不少实际问题中有许多具有规律性的重复操作,因此在程序中就需要重复执行某些语句。 2, 分类 1. for 循环 : 重复执行语句块 a. 语法: for init; condition; post {} for condition {} for {} init: 一般为赋值表达式,给控制变量赋初值; condition: 关系表达式或逻辑表达式,循环控制条件; post: 一般为赋值表达式,给控制变量增量或减量。 b. 实例 for02.go package main import "fmt" func main() { sum := 0 for i := 0 ; i <= 10; i++ { sum += i } fmt.Println(sum) } for03.go package main import "fmt" func main() { sum :=1 for ; sum <=10 ; { sum +=sum } fmt.Println(sum) for sum <= 10 { sum +=sum } fmt.Println(sum) } c. For-each range 循环 这种格式的循环可以对字符串、数组、切片等进行迭代输出元素。 实例: for04.go package main import "fmt" func

python笔记三(面向对象)

生来就可爱ヽ(ⅴ<●) 提交于 2020-01-18 09:27:59
Python3 面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的。本章节我们将详细介绍Python的面向对象编程。 如果你以前没有接触过面向对象的编程语言,那你可能需要先了解一些面向对象语言的一些基本特征,在头脑里头形成一个基本的面向对象的概念,这样有助于你更容易的学习Python的面向对象编程。 接下来我们先来简单的了解下面向对象的一些基本特征。 面向对象技术简介 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。 类变量: 类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。 数据成员: 类变量或者实例变量用于处理类及其实例对象的相关的数据。 方法重写: 如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。 实例变量: 定义在方法中的变量,只作用于当前实例的类。 继承: 即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系(例图

python022 Python3 面向对象

末鹿安然 提交于 2020-01-18 03:29:54
Python3 面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的。本章节我们将详细介绍Python的面向对象编程。 如果你以前没有接触过面向对象的编程语言,那你可能需要先了解一些面向对象语言的一些基本特征,在头脑里头形成一个基本的面向对象的概念,这样有助于你更容易的学习Python的面向对象编程。 接下来我们先来简单的了解下面向对象的一些基本特征。 面向对象技术简介 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。 类变量: 类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。 数据成员: 类变量或者实例变量用于处理类及其实例对象的相关的数据。 方法重写: 如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。 实例变量: 定义在方法中的变量,只作用于当前实例的类。 继承: 即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系(例图

python 面向对象

跟風遠走 提交于 2020-01-18 02:43:48
Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的。 如果你以前没有接触过面向对象的编程语言,那你可能需要先了解一些面向对象语言的一些基本特征,在头脑里头形成一个基本的面向对象的概念,这样有助于你更容易的学习Python的面向对象编程。 面向对象技术简介 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。 类变量: 类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。 数据成员: 类变量或者实例变量用于处理类及其实例对象的相关的数据。 方法重写: 如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。 实例变量: 定义在方法中的变量,只作用于当前实例的类。 继承: 即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系(例图,Dog是一个Animal)。 实例化: 创建一个类的实例,类的具体对象。 方法: 类中定义的函数。 对象: 通过类定义的数据结构实例

JavaScript 赋值运算符

允我心安 提交于 2020-01-17 18:03:51
赋值运算符(assignment operator)是将右边操作数(right operator)的值赋值给左边的操作数(left operator) 如果在等号( = )前面再添加乘性操作符、加性操作符或位操作符,就可以完成复合赋值操作。这种复合赋值操作相当于是对常规表达式的简写。 var num = 10; num = num +10; //等价于 var num = 10; num += 10; 每个主要算数运算符(以及个别的其他操作符)都有对应的符合赋值操作符,这些操作符如下: 名称 简写 含义 赋值(Assignment) a = b a = b 加赋值(Addition assignment) a += b a = a + b 减赋值(Subtraction assignment) a -= b a = a - b 乘赋值(Multiplication assignment) a *= b a = a * b 除赋值(Division assigment) a /= b a = a / b 模赋值(Remainder assignment) a %= b a = a % b 指数赋值(Exponentiation assignment) a **= b a = a ** b 左移赋值(Left shift assignment) a <<= b a = a << b