赋值

python进阶:复制,深拷贝和浅拷贝的区别

会有一股神秘感。 提交于 2020-01-13 00:14:14
复制,深拷贝和浅拷贝的区别 在python中,对象赋值实际上是对象的引用。当创建一个对象,然后把它赋给另一个变量的时候,python并没有拷贝这个对象,而只是拷贝了这个对象的引用 一.直接赋值 默认浅拷贝传递对象的引用而已,原始列表改变,被赋值的b也会做相同的改变 a=[1,2,4,5] b=a print(b) a.append(8) print(a) print(b) 二.copy浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象。 所以原始数据改变,子对象会改变 import copy a=[1,2,3,[4,6],5] c=copy.copy(a) print(c) a.append(9) print(a) print(c) a[3].append(2) print(a) print(c) 三.深拷贝,包含对象里面的子对象的拷贝,所以原始对象的改变不会造成深拷贝里任何子元素的改变 import copy a=[1,2,3,[4,6],5] c=copy.deepcopy(a) print(c) a.append(9) print(a) print(c) a[3].append(2) print(a) print(c) 来源: https://www.cnblogs.com/python-road/p/10504741.html

JAVA零基础学习(变量)

 ̄綄美尐妖づ 提交于 2020-01-12 21:29:58
基础(数据的基础长度单位) bit Byte KB MB GB TB PB EB EB YB BB DB CB XB 简介 编写java程序先创建包,在创建类,然后写程序,程序中一个成语只有一个主函数(一个程序好比一颗树,而程序中的主函数就是树干。) //类 public class Test1 { / * * * 主函数的格式如下 * 主函数一个类中只有一个 * 主函数参数可以在执行时候添加数据 * * * / public static void main ( String args [ ] ) { } } 一.变量 概念: 计算机内存中的一块存储空间,是存储数据的基本单元。 语法: 1.先声明,再赋值,然后使用。 声明: 数据类型 变量名 赋值: 变量名=值; =(赋值运算符)意思为等号左边的值赋值给等号右边。 2.声明并赋值(常用) 数据类型 变量名 = 值 3.同时声明多个同类型的变量 数据类型 :变量名1, 变量名 2, 变量名3 , 变量名 4; //先声明再赋值 int a ; a = 10 ; / / 声明并赋值 int b = 10 ; / / 声明多个变量 int c , d , e , f , g ; 数据类型: 1.基本数据类型 1)整数: 名称 字节数 二级制长度 十进制长度 byte 1个字节 -2 7 ~2 7 -1 -128~127 short

string类和字符数组的转换

拥有回忆 提交于 2020-01-12 17:14:03
string assign函数可以用来赋值 1: basic_string &assign( const basic_string &str ); 2: //用str为字符串赋值 3: basic_string &assign( const char *str ); 4: //用字符数组进行赋值 5: basic_string &assign( const char *str, size_type num ); 6: //用str的开始num个字符为字符串赋值, 7: basic_string &assign( const basic_string &str, size_type index, size_type len ); 8: //用str的子串为字符串赋值,子串以index索引开始,长度为len 9: basic_string &assign( size_type num, char ch ); 10: // 用num个字符ch为字符串赋值 11: string s; char ch[100]; strcpy(ch, "hello,world"); s.assign(ch); //将字符数组转换成字符串 cout << s << endl; 将字符串转换成字符数组 string s; char ch[100]; s = "hello,world"; /*strcpy(ch,

C语言数组

六月ゝ 毕业季﹏ 提交于 2020-01-12 15:56:35
一维数组的定义: 1.数组的数据类型:每一元素占内存空间的字节数。 2.数组的存储类型:内存的动态、 静态存储区或CPU的寄存器。 3.一维数组在内存中占用的字节数为:数组长度X sizeof (基类型)。 一维数组的初始化: 1.静态数组和全局数组自动初始化为0值,否则,是随机数。 2.int a[5] = {62,74,56,88,90} ; 3.更高效的数组初始化方法memset(a, 0,sizeof (a)) ; 一维数组元素的访问: 1.一维数组的引用:数组名[下标] 2.允许快速随机访问:引用时下标允许是int型变量或表达式a[i] 一维数组元素的赋值: 1.方法1:逐个元素赋值。 2.方法2:通过循环语句赋值。 3.更高效的数组赋值方法memcpy(b,a,sizeof(a)) ; 二维数组的定义和初始化: 数组元素的访问与螺旋矩阵: 来源: https://www.cnblogs.com/ZengBlogs/p/12182704.html

详解C语言的类型转换

ぐ巨炮叔叔 提交于 2020-01-12 15:17:26
1.自动类型转换 字符型变量的值实质上是一个8位的整数值,因此取值范围一般是-128~127,char型变量也可以加修饰符unsigned,则unsigned char 型变量的取值范围是0~255(有些机器把char型当做unsighed char型对待, 取值范围总是0~255)。 如果一个运算符两边的运算数类型不同,先要将其转换为相同的类型,即较低类型转换为较高类型,然后再参加运算,转换规则如下图所示。 图中 横向箭头表示必须的转换 ,如两个float型数参加运算,虽然它们类型相同,但仍要先转成double型再进行运算,结果亦为double型。 纵向箭头表示当运算符两边的运算数为不同类型时的转换 ,如一个long 型数据与一个int型数据一起运算,需要先将int型数据转换为long型, 然后两者再进行运算,结果为long型。 所有这些转换都是由系统自动进行的, 使用时你只需从中了解结果的类型即可。 这些转换可以说是自动的,当然,C语言也提供了以显式的形式强制转换类型的机制。 当较低类型的数据转换为较高类型时,一般只是形式上有所改变, 而不影响数据的实质内容, 而较高类型的数据转换为较低类型时则可能有些数据丢失。 在进行自动类型转换的时候,如果原来的数是无符号数,那么在扩展的时候,高位填充的是0;如果是有符号数,那么高位填充的时符号位! 2.赋值中的类型转换

基本运算符

北战南征 提交于 2020-01-12 11:07:29
基本运算符 计算机的本质就是用来计算和存储数据. 那java如何计算呢? 使用 一些基本运算符就可以了 算数运算 符号 含义 + 求和运算 - 减法运算 * 乘法运算 / 除法运算 % 余数运算 int a = 20; int b = 10; // 加法运算 System.out.println(a + b); // 30 // 减法运算 System.out.println(a - b); // 10 // 乘法运算 System.out.println(a * b); // 200 // 除法运算 System.out.println(a / b); // 2 除法 // 取余运算 System.out.println(a % b); // 0 余数 System.out.println(10 / 3); // 3 System.out.println(10 % 3); // 1 赋值运算 符号 含义 = 赋值操作 += 累加 -= 累减 *= 累乘 /= 累除 %= 累计取余 先说赋值(=)操作. 这个等号和我们数学上的等号是不一样的. 数学中, 等号表示左右两端计算出来的结果是相同的. 但是在编程的世界里. =表示赋值. 把等号右边的结果赋值给等号左边的变量. 赋值操作的计算顺序: 先计算右边. 然后把右边的结果给左边的变量 int a = 10; int b = a +

赋值中的强制类型转换

被刻印的时光 ゝ 提交于 2020-01-12 07:17:27
赋值中的类型转换 当 赋值运算符 两边的运算对象类型不同时,将要发生类型转换, 转换的规则是:把赋值运算符右侧 表达式 的类型转换为左侧 变量 的类型。具体的转换如下: (1) 浮点型 与 整型 ● 将浮点数(单双精度)转换为整数时,将舍弃浮点数的小数部分(是直接舍弃,编译器不会自动四舍五入), 只保留整数部分。将 整型 值赋给 浮点型 变量,数值不变,只将形式改为浮点形式, 即小数点后带若干个0。注意:赋值时的类型转换实际上是强制的。 (2) 单、 双精度浮点型 ● 由于C语言中的浮点值总是用双精度表示的,所以float 型数据只是在尾部加0延长为double型数据参加运算,然后直接赋值。double型数据转换为float型时,通过截尾数来实现,截断前要进行四舍五入操作。 (3) char型与int型 ● int型数值赋给char型 变量 时,只保留其最低8位,高位部分舍弃。 ● char型数值赋给int型 变量 时, 一些 编译程序 不管其值大小都作正数处理,而另一些编译程序在转换时,若char型数据值大于127,就作为负数处理。对于使用者来讲,如果原来char型数据取正值,转换后仍为正值;如果原来char型值可正可负,则转换后也仍然保持原值, 只是数据的内部表示形式有所不同。 (4) int型与long型 ● long型数据赋给int型 变量 时,将低16位值送给int型变量

聊聊java中final那点事

耗尽温柔 提交于 2020-01-11 23:46:43
1.final是什么 final是一个java关键字,一个修饰符,可用于修饰变量,方法,修饰类. 2.final有什么用 final可以修饰变量时,可以使其值不能改变 final修饰方法时使其不能被重写 final修饰类时,使其不能被继承. 3.final修饰成员变量 fianl最常见的用法时用来修饰成员变量,成员变量分为静态变量与普通变量. 对于final修饰的变量,不是不能被赋值,是其值不能被改变,可以理解成只能赋一次值.可以在定义时赋值,也可以在定义后在另外赋值,但无论何种方式只能被赋值一次. (1)修饰静态变量 修饰静态变量时,可以选择以下两种方式赋值: 在定义时赋值 静态初始化块内赋值 final static int a = 6; final static int b; static { b = 6; } (2)修饰普通成员变量 修饰普通成员变量时,可以选择以下三种方式赋值: 定义时赋值 初始化块内赋值 构造方法赋值 public class test { int c = 1; int d; int e; { d = 2; } public test() { e = 3; } } 根据"静态"不能访问"非静态"规则,就是说静态的方法不能访问非静态成员,static初始化块不能初始化非静态成员,普通初始化块也不能初始化静态变量. 但是,有一个"bug

静态局部变量的说明

自作多情 提交于 2020-01-11 23:32:53
用static声明静态局部变量 有时希望函数中的局部变量的值在函数调用结束后不消失而保留原值,即其占用的存储单元不释放,在下一次该函数调用时,该变量保持上一次函数调用结束时的值。这时就该指定该局部变量为静态局部变量(static local varible)。 (1) 静态局部变量在静态存储区内分配存储单元。在程序整个运行期间都不释放。而自动变量(即动态局部变量)属于动态存储类别,存储在动态存储区空间,函数调用结束后即释放。 (2) 为静态局部变量赋初值是在编译时进行的,只赋初值一次,在程序运行时已有初值。以后每次调用函数时,不再重新赋值,而只是保留上次函数调用结束时的值。而自动变量赋初值,不是在编译时进行的,而是在函数调用时进行,每调用一次函数重新给一次初值,相当于执行一次赋值语句。 (3) 如果在定义局部变量时不赋值的话,对静态局部变量来说,编译时自动赋值 0 (对数值型变量)或空字符(对字符型变量)。而对自动变量来说,如果不赋初值,则它的值是一个不确定的值。这是由于每次函数调用结束后存储单元已释放,下次调用时又重新另分配存储单元,而所分配的单元中的值是不确定的。 (4) 虽然静态局部变量在函数调用结束后仍然存在,但其他函数是不能引用它的,也就是说,在其他函数中是“不可见”的。 (5) 静态存储要多占内存(长期占用不释放,而不能像动态存储那样一个存储单元可先后供多个变量使用

C语言数据类型隐式转换

不打扰是莪最后的温柔 提交于 2020-01-11 22:28:30
举个栗子: unsigned int a = 20; signed int b = -130; a > b 还是 b > a 实验证明b > a; b = -130 int 先转化为unsigned int再与a比较 隐式转换四种情况 1:算式运算式中,低类型能够转换为高类型 2:赋值表达式中,右边表达式的值自动隐式转换为左边变量的类型,并赋值给它 3:函数调用中参数传递时,系统隐式地将实参转换为形参的类型后赋给形参。 4:函数由返回值时,系统将隐式地返回表达式类型转换为返回值类型,赋值给调用函数 char,short----->int------->unsigned ------->log-------->double<--------float 低级-------------------------------------------------------------->高级 数组是一种特殊的指针 int a = 10; int *p = &a; printf(“a=%d,*p = %d, p[0] = %d, p[1] = %d”,a, *p, p[0], p[1]); a = 10; *p = 10 p[0] = 10 p[1] = 乱码 来源: CSDN 作者: weixin_43656926 链接: https://blog.csdn.net/weixin