成员变量 1.2.2 局部变量 二、拆箱与装箱机制 一个 String 的例子 三、相互间的转换 一、Java 中变量类型 1.1 以数据类型划分 1.1.1 基本数据类型 整数型变量 变量名 说明...s6 = c2 + "bc"; 在JVM里,考虑到垃圾回收(Garbage Collection)的方便,将heap(堆)划分为三部分:young generation(新生代)、tenured generation...所以这里比较的是两个变量名实际指向的 String 对象地址。 Java 中成为“字符串驻留”:所有的字符串常量都会在编译之后自动地驻留。...逻辑表达式s3 == s4为 false 因为String s3 = new String("abc")创建一个或两个对象,由于 new 关键字的存在,会在堆中创建一个 String 类型的 s3 对象...逻辑表达式s1 == s5为 true,逻辑表达式s1 == s6为 false 因为将一个字符串连接表达式赋给字符串变量时,如果这个字符串连接表达式的值可以在编译时就确定下来,那么 JVM 会在编译时确定字符串变量的值
因此为了在泛型代码中可以支持基本类型,并且让基本数据类型也具备对象的特征,Java 给每个基本类型都对应 一个包装类型 2....(100); int value = i1;//方法1 int value2 = i1.intValue();//方法2 经过上述步骤就可以将包装类转换成基本数据类型了,这两个例子分别展示了如何将int...(i); //手动装箱 Integer y = i; // 自动装箱 3.2 拆箱 把包装类对象拆为基本数据类型 可以分为手动拆箱和自动拆箱 一般是因为需要运算,Java中的大多数运算符是为基本数据类型设计的...s2 = a + ""; (3)字符串转为基本数据类型 方式1:除了Character类之外,其他所有包装类都具有parseXxx静态方法可以将字符串参数转换为对应的基本类型,例如: public...) 比较时,只要两个的值是相等,则为true因为包装类Integer 和 基本数据类型int 比较时,java会自动拆包装为int ,然后进行比较,实际上就变为两个int变量的比较。
直接 dir 3 想在一个盘下进去一个文件夹,用cd空格目标文件 cd p 4 写文件的第一个字母后 按tab键自动补全 如果有多个p开头的则在按tab 会在所有之间切换 5 d:切盘 dir 查找目录...python的路径比较麻烦,将python加入到环境变量中则可以直接调用程序,我的电 脑--属性--高级系统设置--高级--环境变量--找到path--将python的路径加进去即可 10 将任一个程序加入环境变量...11 变量的具体要有描述性,比如mike是一个name name=‘mike'让人一看就知道是一个名字,习惯 12 变量命名当有两个单词可以用下划线_分隔 student_number 13 用全部大写的变量名来代表常量...14 用引号包起来的为字符串,他会在内存中占用一个位置,而变量名不占,它指向内存中的字符串 15 del删除变量 del age 即可 手动拆 强拆 或者指向其他内存 16 在py2x vision里...=(不等于) 4个空格 26 else不能单独出现 要与if 在同一级别 在中间不能有同一级别 27 最好每打一个tab自动成4个空格(原来tab与4个空格不一样,要空格都空个,要tab都tab,但官方
从代码风格的角度将,换行可提升代码的可读性。 ? Tcl中的命令是由一个或多个单词构成,单词之间以空格或TAB键隔开,且第一个单词为命令名,其余单词为该命令的参数。如下图所示。...该命令由3个单词构成,其中命令名为set,该命令包含两个参数,第1个参数为变量名,第2个参数为变量值。 ? 若给命令set提供额外的参数,则会报错,如下图所示。 ?...Tcl中的变量名并不遵循C语言中变量名的命名规则,如下图所示。可以看到,变量名以下划线作为开头是可以接受的。这也反应了Tcl的特征“一切都是字符串”。 ? Tcl对命令的求值过程分为两步:解析和执行。...在解析阶段,Tcl解释器运用规则把命令分解为一个个独立的单词,同时进行必要的置换(Substitution,关于置换将在下一篇文章中介绍);在执行阶段,Tcl解释器会把第一个单词当作命令名,并查看该命令是否有定义...unset命令与set命令相反,该命令将取消变量定义并释放该变量所占的内存空间,但取消未定义的变量是不合法的。如下图所示。 ?
元组(tuple) 字典(dict) 提示:在 Python 2.x 中,整数 根据保存数值的长度还分为: int(整数) long(长整数) 使用 type 函数可以查看一个变量的类型 In [1]...截取从 2 ~ 5 位置 的字符串 print(num_str[2:6]) # 2. 截取从 2 ~ `末尾` 的字符串 print(num_str[2:]) # 3....: 定义一个整数变量 a,并且赋值为 1 将变量 a 赋值为 2 定义一个整数变量 b,并且将变量 a 的值赋值给 b 在 Python 中,函数的 实参/返回值 都是是靠 引用 来传递来的 def test...在调用带有多值参数的函数时,如果希望: 将一个 元组变量,直接传递给 args 将一个 字典变量,直接传递给 kwargs 就可以使用 拆包,简化参数的传递,拆包 的方式是: 在 元组变量前,增加 一个...函数参数和返回值 技巧 在 Python 中,可以将一个元组 使用赋值语句同时赋值给 多个变量 注意:变量的数量需要和元组中的元素数量保持一致 # Python 专有,利用元组交换两个变量的值 a, b
装箱步骤: 内存分配:在托管堆中分配好内存空间以及存放赋值的实际数据 完成实际数据的复制:将值类型实例的实际数据复制到新分配的内存中 地址返回:将托管堆中的对象地址返回给引用类型变量 拆箱步骤: 检查实例...:首先检查要进行拆箱操作的引用类型变量是否为 null,如果为 null 则抛出NullReferenceException异常;如果不为null则继续检查变量是否和拆箱后的类型时同一类型,若结果为否,...会导致InvalidCastException异常 地址返回:返回已装箱变量的实际数据部分的地址 数据复制:将托管堆中的实际数据复制到栈中 理解了装箱和拆箱,我们就知道转换类型实际上对系统会产生性能影响...造成这个原因的是 string 具有不可变性,一个 string 类型被赋值,则它就是不可改变的,即不能通过代码去修改它的值 方法中的oldStr = "New String"代码表面上是对字符串的内容进行了修改...,但由于 string 的不可变性,系统会重新分配一块内存空间存放 New String 字符串,然后把分配的内存首地址赋值给 oldStr 变量 值类型和引用类型参数按引用传递 不管是值类型还是引用类型
将列表2 的数据追加到列表 2 修改 列表[索引] = 数据 修改指定索引的数据 3 删除 del 列表[索引] 删除指定索引的数据 列表.remove[数据] 删除第一个出现的指定数据 列表...(seq) 以 string 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串 字符串的切片 切片 方法适用于 字符串、列表、元组 切片 使用 索引值 来限定范围,从一个大的...cmp(item1, item2) 比较两个值,-1 小于/0 相等/1 大于 Python 3.x 取消了 cmp 函数 id(item) 变量中保存数据所在的 内存地址 hash(item) 经...hash算法后返回一个整数 接收一个不可变类型作为参数 global(item) 在函数中修改全局变量 注意 字符串 比较符合以下规则: “0” < “A” < “a” 如果变量已经被定义,当给一个变量赋值的时候...: 将一个 元组变量,直接传递给 args 将一个 字典变量,直接传递给 kwargs 就可以使用 拆包,简化参数的传递,拆包 的方式是: 在 元组变量前,增加 一个 * 在 字典变量前,增加 两个 *
最近还遇到一个面试题,也是和自动装箱和拆箱有点关系的,代码如下所示: ? 如果不明就里很容易认为两个输出要么都是true要么都是false。...首先需要注意的是f1、f2、f3、f4四个变量都是Integer对象引用,所以下面的==运算比较的不是值而是引用。装箱的本质是什么呢?...当我们给一个Integer对象赋一个int值的时候,会调用Integer类的静态方法valueOf,如果看看valueOf的源代码就知道发生了什么。 ?...用最有效率的方法计算2乘以8? ? 答: 2 3(左移3位相当于乘以2的3次方,右移3位相当于除以2的3次方)。 ? ? 数组有没有length()方法?...当类被加载后就进入连接阶段,这一阶段包括验证、准备(为静态变量分配内存并设置默认的初始值)和解析(将符号引用替换为直接引用)三个步骤。
; Integer b = 3; // 将3自动装箱成Integer类型 int c = 3; System.out.println...(a == b); // false 两个引用没有引用同一对象 System.out.println(a == c); // true a自动拆箱成int类型再和c比较...首先需要注意的是f1、f2、f3、f4四个变量都是Integer对象引用,所以下面的==运算比较的不是值而是引用。装箱的本质是什么呢?...当我们给一个Integer对象赋一个int值的时候,会调用Integer类的静态方法valueOf,如果看看valueOf的源代码就知道发生了什么。 ...String str = new String("hello"); 上面的语句中变量str放在栈上,用new创建出来的字符串对象放在堆上,而"hello"这个字面量是放在方法区的。
字符串的拘留池特性:每次对字符串变量赋值(该值只针对于常量“a”,不针对于变量a)时,会将该值放在拘留池中,下一次对另一个字符串类型的变量赋值时,先在拘留池中找有没有相同的值,如果有则将该值取出,赋值给该变量...,这就导致这两个变量变成了同一个对象。...@的用法 写文件的路径时,需要两个\\但只有\,可以在路径前加一个@“路径”。 若想声明一个标识符的变量 但系统会报错,则在前加@即可。...2.事件的关键词event在定义,在定义委托变量的时候,在访问限制符和委托名之间 3.本质:event会自动生成一个private delegate变量和两个函数: add和remove,C#编译器用这两个方法支持...赋值给.前面的东西)判断当前的类型的变量是不是可以接受c类型变量的赋值。
62 lag返回前一个观测值,lag2将返回往前数两个的观测值,不是指两个观测值。...lag的一般作用为计算两个变量的差值。将上例略微修改一下,计算两天的温度差。 ... 4 70 ; 10.Compbl:将字符串中两个或两个以上的空格删除只剩一个空格(即 compress blank)。...B C99",,'pd')删除标点符号和数字 AB C 11、连接字符串。||或者!!将连接两个字符串为一个字符串,其长度等于两个字符串长度之和。...Alfred 100 FRIEDMAN 87 当两个字符串完全匹配时,将返回0.第一个字符匹配错误,将比其它字符匹配错误所得的处罚分数更大。
; 自动装箱:将基本数据类型装箱为封装类; // 实际调用 Integer.valueOf(12) Integer x = 12; 自动拆箱:将封装类拆箱为基本数据类型; Integer x = 12;...,两个引用指向堆中不同对象 System.out.println(str3 == str4); 2.5 new String(“xxx”) 使用 new 的方式创建字符串对象,会有两种不同的情况: String...Pool 中不存在 “xxx” 此时会创建两个字符串对象,“xxx” 属于字符串字面量,因此在编译期会在 String Pool 中创建一个字符串对象,用于指向该字符串的字面量 “xxx”;然后 new...; 类名和接口:大写驼峰命名法; 变量名和函数名:多个单词组成时,第一个单词全小写,其他单词采用大写驼峰命名法; 常量名:字母全部大写,单词之间用下划线(_)分割; 3.4 访问控制符 作用域 当前类...4.5 赋值运算符 操作符 描述 例子 = 简单的赋值运算符,将右操作数的值赋给左侧操作数 C = A + B将把A + B得到的值赋给C += 加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数
3 int与Integer的深入对比 (1)由于Integer变量实际上是对一个Integer对象的引用,所以两个通过new生成的Integer变量永远是不相等的(因为new生成的是两个对象,其内存地址不同...变量和int变量比较时,只要两个变量的值是向等的,则结果为true(因为包装类Integer和基本数据类型int比较时,java会自动拆包装为int,然后进行比较,实际上就变为两个int变量的比较) Integer...= 9; } } 9是属于基本数据类型的,原则上它是不能直接赋值给一个对象Integer的。...但jdk1.5后你就可以进行这样的声明,自动将基本数据类型转化为对应的封装类型,成为一个对象以后就可以调用对象所声明的所有的方法。...5.2 Integer源码解析 给一个Integer对象赋一个int值的时候,会调用Integer类的静态方法valueOf,源码如下: public static Integer valueOf(String
1.3引用类型中嵌套定义值类型 如果类的字段类型是值类型,它将作为引用类型实例的一部分,被分配到托管堆中。但那些作为局部变量 (例如下列代码中的c变量)的值类型,则仍然会分配到线程堆栈中。...2,两大类型间的转换--装箱与拆箱 类型转换主要分为以下几种方式: 1, 隐式类型转换:由低级别类型向高级别类型的转换过程。例如:派生类可以隐式的转换为它的父类,装箱过程就输入这种隐式类型转换。...装箱操作可以具体分为以下3个步骤: (1)内存分配: 在托管堆中分配好内存空间以存放复制的实际数据 (2)完成实际数据复制:将值类型实例的实际数据复制到新分配的内存中 (3)地址返回: 将托管堆中的对象地址返回给引用类型变量...拆箱过程也可以具体分为3个步骤: (1)检查实例:首先检查要进行拆箱操作的引用类型变量是否为null,如果为null则抛出空指针异常,如果不为null则继续减产变量是否合拆箱后的类型是同一类型,若不是则会抛出...InvalidCastExce异常 (2)地址返回:返回已装箱变量的实际数据部分地址 (3)数据复制: 将托管堆中的实际数据复制到栈中 总结:对于拆箱与装箱的理解之所以是如此重要,主要是因为装箱和拆箱操作对性能有很大的影响
2.类名称的首字母大写。 3.布尔型只有两个值,不能类型转换成int。 4.int为4字节和操作系统与JVM无关。...因此我们可以很方便的使用 System.out.println 同时打印多个字符串或数字。 五、变量的命名规则 硬性指标: 1.一个变量名只能包含数字, 字母, 下划线。 2.数字不能开头。...3.变量名是大小写敏感的. 即 num 和 Num 是两个不同的变量。 注意: 虽然语法上也允许使用中文/美元符($)命名变量, 但是强烈不推荐这样做....软性指标: 1.变量命名要具有描述性, 见名知意。 2.变量名不宜使用拼音(但是不绝对)。 3.变量名的词性推荐使用名词。...4.变量命名推荐 小驼峰命名法, 当一个变量名由多个单词构成的时候, 除了第一个单词之外, 其他单词首字母都大写.
变量赋值 在 Python 中,等号 = 是赋值语句,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量。...例如: a, b, c = 1, 2, "neo" 以上实例,两个整型对象 1 和 2 的分配给变量 a 和 b,字符串对象 “neo” 分配给变量 c。...数字类型转换 int(x) 将x转换为一个整数。 float(x) 将x转换到一个浮点数。 complex(x) 将x转换到一个复数,实数部分为 x,虚数部分为 0。...转换为一个整数 f = float(a) # 将a转换为一个浮点型 g = complex(a) # 将a转换到一个复数,实数部分为 x,虚数部分为 0。...我们定义一个 s=’python’语句,它在计算机中的执行顺序是先在内存中创建一个字符串 Python ,在程序栈寄存器中创建一个变量 s,最后把 Python 的地址赋给s 。
; 这个程序的作用是,通过使用urllib的request模块,给request请求设置访问地址和请求头; 用urlopen进行访问;将获取到的服务器响应写入html变量中,再进行输出。...str3 = str1+str2 print(str3) # 输出 早上好啊你吃饭了吗? 3.字符串变量和整数之间可以通过*来重复拼接字符串 当我们要将同一个字符串重复输出一百甚至上千遍,怎么办?...大驼峰命名法:第一个和第二个单词都是首字母大写;比如:UserName。 下划线分割法:两个单词都是小写,且以下划线_进行分割;比如:user_name。...其实是可以的,我们将两个函数进行嵌套使用,即可解决。...格式化输出,就是当我们做一个软件的时候,如果我们要输出个人信息,比如姓名,但每个人的姓名都是不一样的,不可能为每一个人都做一个程序,输出“你好,欢迎你,xxx”,这个时候,我们就需要格式化输出,将xxx
这个例子中需要一个整形变量,加上托管堆上所有的对象都有的两个额外成员(类型对象指针和同步块索引)那么多的内存。类型对象指针指向int类型对象。 值类型的变量复制到新分配的堆内存。 返回对象的地址。...字符串虽然是引用类型,但如果在某方法中,将字符串传入另一方法,在另一方法内部修改,执行完之后,字符串的值并不会改变,而引用类型无论是按值传递还是引用传递,值都会发生变化。...扩容的动作分为如下几步:在内存中分配一个更大的空间,然后将现有的字符串复制过去(还余下一些空位for further use) StringBuilder有线程安全的考虑,故会拖慢一点时间 不过,如果你可以确定最终字符串长度的值...字符串的不变性指的是字符串一经赋值,其值就不能被更改。当使用代码将字符串变量等于一个新的值时,堆上会出现一个新的字符串,然后栈上的变量指向该新字符串。没有任何办法更改原来字符串的值。...如果编译器发现已经有相同值的字符串存在,则不新建字符串(在堆上),而是让新旧两字符串变量在栈上指向同一个堆上的字符串值。如果没有则在驻留池中增加一个新的成员。
我们可以将通用的方法和成员变量放在父类中,达到代码复用的目的;然后将特殊的方法和成员变量放在子类中,除此之外,子类还可以覆盖父类的方法。这样,子类也就焕发出了新的生命力。...继承可以使得子类具有父类的成员变量和方法,还可以重新定义、追加成员变量和方法等。 在设计继承的时候,可以将通用的方法和成员变量放在父类中。...Java 是不允许多继承的,为什么呢? 如果有两个类共同继承一个有特定方法的父类,那么该方法会被两个子类重写。...3)a2 == b2 和 a3 == b3 为 true是因为两个 int 值在比较。...---- 作者介绍:沉默王二,《Web 全栈开发进阶之路》作者;一个不止写代码的程序员,还写有趣有益的文字,给不喜欢严肃的你。
,就要细致去看了) var a = 1; // 压栈,1成为栈顶元素,其值赋给变量a a = 2; // 压栈,2成为栈顶元素,并赋值给变量a(内存地址变了) 堆内存 而对象类型是按引用访问的,通过指针访问对象...这就意味着,如果有两个或两个以上的引用变量指向同一个对象,那么对其中一个引用变量的对象操作,会影响指向该对象的其他引用变量。...var c = '123'; c.name = 'jack'; // 给临时对象加新属性是无效的 c.name; // undefined c.length; // 3 c.length = 2; //...var a = [1, 2, 3]; a.toString(); // 1,2,3 Function:返回一个字符串,字符串的内容是函数源代码。 Date:返回一个日期时间字符串。...如果存在valueOf()方法并且valueOf()方法返回一个原始值,javascript将这个值转换为字符串(如果这个原始值本身不是字符串),作为转换的结果。
领取专属 10元无门槛券
手把手带您无忧上云