赋值

装箱和取消装箱

为君一笑 提交于 2020-03-27 06:36:43
装箱和取消装箱使值类型能够被视为对象。对值类型装箱将把该值类型打包到 Object 引用类型的一个实例中。这使得值类型可以存储于垃圾回收堆中。取消装箱将从对象中提取值类型。在此示例中,整型变量 i 被“装箱”并赋值给对象 o 。 int i = 123; object o = (object)i; // boxing 然后,可以对对象 o 取消装箱并将其赋值给整型变量 i : o = 123; i = ( int )o; // unboxing 性能: 相对于简单的赋值而言,装箱和取消装箱过程需要进行大量的计算。对值类型进行装箱时,必须分配并构造一个全新的对象。次之,取消装箱所需的强制转换也需要进行大量的计算。 来源: https://www.cnblogs.com/abcdwxc/archive/2007/11/23/970075.html

JS语法糖总结----JS语法糖大全----一直更新

跟風遠走 提交于 2020-03-26 17:04:21
一:关于语法糖和语法盐的概念 二.JS的语法糖 ES6疯狂给JS,添加语法糖,最常见的ES6语法糖有以下多个(不停更新) 参考链接: https://segmentfault.com/a/1190000010159725 总结如下: ###对象字面量的简写属性和计算的属性名不可同时使用,原因是简写属性是一种在编译阶段的就会生效的语法糖,而计算的属性名则在运行时才生效; 主要是针对对象的一些简写     1。K和V,重名时,可以简写,为一个,这个简写的。     2.使用[XXX]来表示动态的属性。) ###箭头函数本身已经很简洁,但是还可以进一步简写;   主要是箭头函数的细分和简化。   1.按参数的个数,0参,1参,N参等等,可以对小括号进行相应的省略或不省略。   2.按语句个数,对大括号,进行省略或者不省略。 ###解构也许确实可以理解为变量声明的一种语法糖,当涉及到多层解构时,其使用非常灵活;   结构赋值,针对数组和对象,快速赋值。   基于快速赋值,还能达到其他的快速目的。 ###学会模板字符串的高级用法--标记模板字符串;   使用反引号,包裹字符串,加上${XXX},减少字符串拼接时的混乱 ###let,const声明的变量同样存在变量提升,理解TDZ机制   这两个是最基础的。 ###SET,map,symbol 三:ES6之前,也有一些语法糖   1

作业10总结

孤人 提交于 2020-03-25 08:43:54
一、知识点:   1.指针表量的概念:     变量可以用来存放数值(如整数、实数等),也可以用来存放地址(另一个变量的地址),这种专门用于储存指针(地址)的变量就称为指针变量。   2.指针变量的定义:     在定义指针变量时,需要用指针声明符“*”表示此变量并非一般变量,而是用来存放其他变量地址的指针变量。由于每一个变量都属于一个特定类型 ,因此在定义指针变量时,需要声明该变量的类型,以便能够通过指针正确访问特定类型的数据。     定义一个指针的语法格式为:       基类型标识符 *指针变量名;   (1)“基类型”就是指针所指数据的类型。   (2)定义指针变量的时,在指针变量名前加符号“*”。“*”称为指针声明符,用于说明其后的名字是一个指针变量名。   3.指针变量名的初始化和赋值:     和其他变量一样,指针变量也可以进行初始化。可以用变量的地址对指针变量进行初始化,但必须注意:该变量的类型必须和指针变量的基类型相同。也可以用一个指针变量的值给另一个指针变量赋值,但它们应该具有相同的基类型。   4.引用指针变量:     当一个指针变量被初始化或被赋值之后,它就指向一个特定的变量。这时,就可以使用指针访问它所指向的内存空间。使用指针访问它所指向的内存空间的方法是在指针变量名前加一个“*”号。此处的“*”号是“指针运算符”。又称为“间接访问运算符”,它作用于

ES6 数组的解构赋值

白昼怎懂夜的黑 提交于 2020-03-24 23:34:45
数组的解构赋值 将数组的值,或者对象的属性,提取到不同的变量中 const arr=[1,2,3,4]; let [a,b,c,d]=arr; 更复杂的匹配规则: const arr=[1,2,[3,4],[5,6,7]]; let [,b]=arr; let [,,c,d]=arr; let [,,,[,,g]]=arr; 扩展运算符: ... let arr1=[1,2]; let arr2=[3,4]; let arr3=[5,6]; let arr4=[arr1,arr2,arr3];//三个数组 let arr5=[...arr1,...arr2,...arr3];//合并数组的值 数组的解构赋值与扩展运算符结合 const arr=[1,2,3,4,5]; let [a,b,c]=arr; let[a2,b2,...c2]=arr;//取到剩下的所有值 默认值 没有匹配到的值默认为undefined const arr=[1,undefined,undefined]; let [a,b,c,d]=arr; 如果是undefined,可以在解构赋值时单独再赋值(必须是undefined) const arr=[1,undefined,undefined,null]; let [a,b=2,c=3,d=4]=arr; 交换变量 let a=10,b=20; [a,b]=[b

ES6 对象的解构赋值

馋奶兔 提交于 2020-03-24 23:34:27
对象是无序的,必须使用属性名去匹配 因此解构赋值时变量名必须与对象的属性名保持一致 const obj={ a:1, b:2 }; let {a,b}=obj; 比较复杂的结构条件: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>demo</title> </head> <body> <script> const person={ name:"cyy", age:10, friends:[{ name:"cyy2", age:20 },{ name:"cyy3", age:30 },{ name:"cyy4", age:40 }] }; const {name}=person;//name "cyy" const {age}=person;//age 10 //只能取到friend1,不能取到friends const {friends:[friend1]}=person;//friend1 {name: "cyy2", age: 20} const {friends:[,friend2]}=person;//friend2 {name: "cyy3", age: 30} const {friends:[,,friend3]}=person;//friend3 {name: "cyy4",

python学习笔记 Day1

≡放荡痞女 提交于 2020-03-24 23:01:56
1.hello world程序 1.vim hello.py2.输入代码 print("Hello World!")3.保存退出 执行python hello.py4.执行结果 Hello World! 2.变量与赋值 a.变量定义的规则: 变量名只能是 字母、数字或下划线的任意组合 变量名的第一个字符不能是数字 以下关键字不能声明为变量名 ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield'] b.变量的赋值 变量的声明、赋值、含义解释 1 name = "lus" 2 name2 = name 3 4 print (name,name2) 5 lus lus 6 7 name = "lus2" 8 print (name,name2) 9 lus2 lus //变量name2值并没有改变 3.用户交互 进入跟用户交互的环境 1

Python 3.8六大新功能

僤鯓⒐⒋嵵緔 提交于 2020-03-24 12:47:32
3 月,跳不动了?>>> 近期,Python 3.8已经发布。 不过别担心,小芯已经为你总结好了Python 3.8中每个新手都应该掌握的6大新功能。 IT业日新月异,落后的Python 2将在2020年逐渐被淘汰。 2019年,随着数据科学的兴起,Python成为了最热门的程序语言。 尽管如此,面对浩如烟海的知识,应接不暇也是正常的。语法不断变化,每次Python更新,都会添加许多新的表达。有很多功能小芯只恨自己知道得太晚了。 如果读者也感同身受,这里有一个坏消息:近期,Python 3.8已经发布。 不过别担心,小芯已经为你总结好了Python 3.8中每个新手都应该掌握的6大新功能。 1. 新模块:读取元数据历 使用新的importlib.metadata模块可以读取第三方包的元数据。可以在 脚本 包中获取版本号。 2. 字典反转:排序 现在,字典可以用resersed( )在反转插入排序中实现迭代了。 3. Continue – finally 由于Python的实现问题,以前在Finally子句中添加continue语句是不合法的。现在这一问题已不复存在。 for i inrange(2): try: print(i) finally: print('A sentence.') continue print('This never shows.') # Python <=

Python 深浅拷贝

吃可爱长大的小学妹 提交于 2020-03-23 07:14:30
概念普及:对象、可变类型、引用 数据拷贝会涉及到Python中 对象、可变类型、引用 这3个概念,先来看看这几个概念,只有明白了他们才能更好的理解深拷贝与浅拷贝到底是怎么一回事。 Python对象 在Python中,对对象有一种很通俗的说法,万物皆对象。说的就是构造的任何数据类型都是一个对象,无论是数字,字符串,还是函数,甚至是模块,Python都对当做对象处理。 所有Python对象都拥有三个属性:身份、类型、值。 可变与不可变对象 在Python中,按更新对象的方式,可以将对象分为2大类:可变对象与不可变对象。 可变对象: 列表、字典、集合    所谓可变是指可变对象的值可变,身份是不变的。 不可变对象:数字、字符串、元组    不可变对象就是对象的身份和值都不可变。新创建的对象被关联到原来的变量名,旧对象被丢弃,垃圾回收器会在适当的时机回收这些对象。 引用 在 Python 程序中,每个对象都会在内存中申请开辟一块空间来保存该对象,该对象在内存中所在位置的地址被称为引用。在开发程序时,所定义的变量名实际就对象的地址引用。 引用实际就是内存中的一个数字地址编号,在使用对象时,只要知道这个对象的地址,就可以操作这个对象,但是因为这个数字地址不方便在开发时使用和记忆,所以使用变量名的形式来代替对象的数字地址。 在 Python 中,变量就是地址的一种表示形式,并不开辟开辟存储空间。

php 魔术方法__get()和__set()理解

孤街浪徒 提交于 2020-03-22 18:50:11
__get()方法,官方手册上是这样解释的 : ' 当调用(自己加的:或设置|赋值)当前环境下未定义或不 可见 的类属性或方法时,重载方法会被调用。本节后面将使用" 不可访问属性(inaccessible properties)"和" 不可访问方法(inaccessible methods)"来称呼这些未定义或不可见的类属性或方法 '。'未定义'容易理解。我们知道类权限控制有三个关键字分别是'public','private','protected',其中除了'public'对于__get()和__set()方法来说都是不可见性,当访问和设置未定义和已经订定义但关键字为'private,protected'属性时会自动调用__get(),__set()方法。 正常情况下__get()默认返回的是第二个参数value的值,而__set()默认返回的第一个参数name的值(注意:这里有点歧义,上面说php会忽略__set()的返回值,这里指的是会忽略__set()方法体里自定义返回值而默认的返回值照常返回,也即是说__set()方法无论如何返回的都是默认返回值,而__get()不会忽略任何返回值,当方法体内有返回值会返回,无返回值返回默认的返回值), 还有注意点就是: 因为 PHP 处理赋值运算的方式, __set() 的返回值将被忽略 。类似的, 在下面这样的 链式赋值中, _

JavaScript函数

℡╲_俬逩灬. 提交于 2020-03-22 17:28:37
函数就是对一段代码的封装,在我们想调用的时候调用 函数的几个优点: 1. 封装代码,使代码更加简洁 2. 复用,在重复功能的时候直接调用就好 3. 代码执行时机,随时可以在我们想要执行的时候执行 函数的创建 函数有两种创建方式:声明式函数、赋值式函数 声明式函数语法:function 函数名() {} 赋值式函数语法:var 函数名 = function () {} 函数的执行 一个函数创建出来后,是不会自动执行的,需要我们来调用这个函数,那么这个函数里面的代码才会执行。有两种调用方式:1.直接执行 2.依赖行动执行 1.直接执行 语法:函数名() 2.依赖行动执行 语法:指定页面元素.onclick = 函数名 函数调用上的区别:声明式函数可以在声明之前调用, 也可以在声明之后调用;赋值式函数只能在声明之后调用, 声明之前调用会报错 函数的参数 函数的参数分为形参和实参两种 形参:函数定义的时候写在小括号里面的内容,就是一个在函数里面使用的变量。一个函数定义形参, 可以写多个,多个形参之间用 逗号 分隔 实参:函数调用的时候写在小括号里面的内容,就是在调用函数的时候给形参进行赋值的。一个函数调用的时候, 也可以给形参写多个,多个实参之间用 逗号 分隔,和形参一一对应 函数的返回值 返回值就是一个函数的结果。函数调用本身也是一个表达式,表达式就应该有一个值出现,但函数执行完毕之后