操作数

js变量和运算符

∥☆過路亽.° 提交于 2019-11-27 13:04:45
变量 1.var 变量 声明变量 2.变量是保留数据,且值可变的量 用途:哪里有需要 哪里就声明 3.输出结果undefined 表示声明变量未赋值,该变量等待赋值 4.变量可变,所以变量赋值以最后一次赋值为主 5.变量的值可以赋给其他变量 6.初始化变量一般代表有某些数据等待变量保存 注意:在变量名相同时。要看有没有var,有则再定义一个变量,没有则重新赋值 <script> // 只要有数据,就要有数据的存储与读取 // js中所有的数据都存在变量中 // 变量:是一个可变的量,可变的指的是值可变。 var a = 123; // var 关键字,作用:声明变量 // a 变量名,已经声明就不能改变,但是值可以发送改变 // = 赋值 // 123 变量所赋的值 </script> 变量命名规范 1.可以用驼峰式命名,aBc,可以使用下划线特殊字符命名 2.不能使用中文,其他语言命名 3.不能使用js中关键字进行命名,例如 window name var for else if... 关键字包括api以及js内置对象 首字符必须是字母、下划线或美元符号。 余下的字母可以是下划线、美元符号、任意字母或者数字。 变量名不能是关键字或保留字。 变量名区分大小写。 变量名中不能有空格、回车符或其他标点字符。 为了符合编程规范,推荐使用驼峰式命名方式:当变量名由多个英文单词组成时,

Java 运算符

♀尐吖头ヾ 提交于 2019-11-27 09:44:53
计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量。我们可以把运算符分成以下几组: 算术运算符 关系运算符 位运算符 逻辑运算符 赋值运算符 其他运算符 算术运算符 算术运算符用在数学表达式中,它们的作用和在数学中的作用一样。下表列出了所有的算术运算符。 表格中的实例假设整数变量A的值为10,变量B的值为20: 操作符 描述 例子 + 加法 - 相加运算符两侧的值 A + B 等于 30 - 减法 - 左操作数减去右操作数 A – B 等于 -10 * 乘法 - 相乘操作符两侧的值 A * B等于200 / 除法 - 左操作数除以右操作数 B / A等于2 % 取余 - 左操作数除以右操作数的余数 B%A等于0 ++ 自增: 操作数的值增加1 B++ 或 ++B 等于 21(区别详见下文) -- 自减: 操作数的值减少1 B-- 或 --B 等于 19(区别详见下文) 实例 public class Test { public static void main(String[] args) { int a = 10; int b = 20; int c = 25; int d = 25; System.out.println("a + b = " + (a + b) ); System.out.println("a - b = "

重学计算机组成原理(五)- \"旋转跳跃\"的指令实现

不问归期 提交于 2019-11-27 06:21:06
CPU执行的也不只是一条指令,一般一个程序包含很多条指令 因为有if…else、for这样的条件和循环存在,这些指令也不会一路平直执行下去。 一个计算机程序是怎么被分解成一条条指令来执行的呢 1 CPU如何执行指令 CPU里差不多几百亿个晶体管 实际上,一条条计算机指令执行起来非常复杂 好在CPU在软件层面已经为我们做好了封装 对于程序员来说,我们只要知道,写好的代码变成了指令之后,是一条一条 顺序执行 不管几百亿的晶体管的背后是怎么通过电路运转起来的 逻辑上,我们可以认为,CPU其实就是由一堆寄存器组成的 而寄存器就是CPU内部,由多个触发器(Flip-Flop)或者锁存器(Latches)组成的简单电路。 触发器和锁存器,其实就是两种不同原理的数字电路组成的逻辑门 如果想要深入学习的话,可以学习数字电路的相关课程 N个触发器或者锁存器,就可以组成一个N位(Bit)的寄存器,能够保存N位的数据 比方说,我们用的64位Intel服务器,寄存器就是64位的 CPU里有很多种不同功能的 1.1 寄存器 寄存器(Register),是中央处理器内的其中组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器。在中央处理器的算术及逻辑部件中,包含的寄存器有累加器。 在计算机体系结构里

函数的调用过程与出入栈

╄→гoц情女王★ 提交于 2019-11-27 05:38:32
函数调用的过程 线程执行的基本行为是函数调用,每次函数调用的数据都是通过Java栈传递的。Java栈与数据结构上的栈有类似的含义,它是一块先进后出的数据结构,只支持入栈和出栈两种操作。Java栈的主要内容是栈帧。每次函数调用都会有一个对应的栈帧被压入Java栈,每次函数调用结束(无论是正常返回或者抛出异常),都会有一个栈帧被弹出Java栈。 如图所示,函数1中调用函数2,函数2中调用函数3,函数3调用函数4。函数1被调用,栈帧1入栈;函数2被调用,栈帧2入栈;函数3被调用,栈帧3入栈;函数4被调用,栈帧4入栈;函数4调用完毕,栈帧4出栈;函数3调用完毕,栈帧3出栈,一直到函数1出栈。 每次函数调用都会生成对应的栈帧,从而占用一定的内存。由于HotSpot虚拟机并不区分本地方法栈和Java栈,栈内存大小由-Xss参数设定。关于本地方法栈和Java栈,在Java虚拟机规范中定义了两种异常。 线程的请求栈的深度大于虚拟机所允许的深度,将抛出StackOverflowError异常 public class StackDeepTest { private static int count = 0; public static void recursionCall() { count ++; recursionCall(); } public static void main(String[

js之类型转换

喜夏-厌秋 提交于 2019-11-27 03:59:02
区别:   相等和不相等——先转换再比较 (==)   全等和不全等——仅比较而不转换 (===) 规则:  在转换不同的数据类型时,对于相等和不相等操作符:在JS高程中一书中给出如下的基本转换规则:   ①、如果有一个操作数是布尔值,则在比较相等性之前先将其转换为数值——false转换为0,而true转换为1;   ②、如果一个操作数是字符串,另一个操作数是数值,在比较相等性之前先将字符串转换为数值   ③、如果一个操作数是对象,另一个操作数不是,则调用对象的valueOf()方法,用得到的基本类型值,如果没有得到基本数据类型值就会调用toString按照前面的规则进行比较 这两个操作符在进行比较时则要遵循下列规则。   ①、null 和undefined 是相等的   ②、要比较相等性之前,不能将null 和 undefined 转换成其他任何值   ③、如果有一个操作数是NaN,则相等操作符返回 false ,而不相等操作符返回 true。重要提示:即使两个操作数都是NaN,相等操作符也返回 false了;因为按照规则, NaN 不等于 NaN   ④、如果两个操作数都是对象,则比较它们是不是同一个对象,如果两个操作数都指向同一个对象,则相等操作符返回 true;否则, 返回false 举个经典的栗子解释一下: [ ] == ![ ]; !可将变量转换成boolean类型

python字符串

爱⌒轻易说出口 提交于 2019-11-27 03:40:47
字符串 string 字符串操作 字符串的内容几乎可以包含任何字符,英文字符也行,中文字符也行。 字符串既可用单引号括起来,也可用双引号括起来 假如字符串内容中包含了单引号,则可以使用双引号将字符串括起来 语法内涵双引号,用单引号括,内涵单引号,用双引号括,否则语法错误 如果内包含单引号,双引号 使用反斜线 \ 在要转义引号前使用 拼接字符串 长字符串可以使用三引号括起来 字符串紧挨在一起,python会自动拼接,如果使用逗号会变成两个字符串,但是不能真正用于拼接字符串。 + 号来拼接字符串运算符 整数转换字符串:str()是python内置类型 repr()是函数,如果拼接整数跟字符串需要先把整数转换成字符串 str()或repr() repr()另一种功能:输出会以python表达式形式来表示值 交互式模式下python会自动使用repr()函数处理该变量或表达式。 允许使用 \ 来转义长字符串来换行,转义之后不会影响输出 对于个别算法也可以转行 原始字符串 r :由于 \ 在python中特殊的,比如路径python会把看作 \ 来处理,可以在字符串前面加入r,python就不会把反斜线当成特殊字符。 或使用 \ 原始字符串包含的引号,同样需要转义 字符串的内容几乎可以包含任何字符,英文字符也行,中文字符也行。 字符串既可用单引号括起来,也可用双引号括起来

Java运算符

六月ゝ 毕业季﹏ 提交于 2019-11-27 02:45:18
运算符 自增和自减运算符 ++ :操作数值型变量,++ 放操作数左边,操作数自身加 1,返回加 1 后的结果;++ 放操作数右边,操作数自身加 1, 返回加 1 前的结果; -- :操作数值型变量,-- 放操作数左边,操作数自身减 1,返回减 1 后的结果;-- 放操作数右边,操作数自身减 1, 返回减 1 前的结果; int c = 5; int d = ++c; System.out.println(a); //6 System.out.println(d); //6 int a = 5; int b = a++; System.out.println(a); //6 System.out.println(b); //5 位运算符 & :按位与 | :按位或 ~ :按位非(键盘数字 1 左边键) ^ :按位异或 << :左移运算符 >> :右移运算符 >>> :无符号右移运算符 需要记住一点, 位运算操作的是数值在计算机存储的二进制码(补码) System.out.println(5 & 9); //1 System.out.println(5 | 9); //13 System.out.println(~-5); //4 System.out.println(5^9); //12 左移运算符是 将操作数的二进制码整体左移指定位数,左移后右边空出来的位以 0 填充 ,左移 n

华为笔试题---仿LISP算法

百般思念 提交于 2019-11-27 02:27:25
/** * 仿LISP字符串运算 * LISP语言唯一的语法就是括号要配对。 * 形如 (OP P1 P2 …),括号内元素由单个空格分割。 * 其中第一个元素OP为操作符,后续元素均为其参数,参数个数取决于操作符类型 * 注意:参数 P1, P2 也有可能是另外一个嵌套的 (OP P1 P2 …) * 当前OP类型为add/sub/mul/div(全小写),分别代表整数的加减乘除法。 * 其中add/mul 参数个数为2个以上,sub/div参数个数为2个 * 举例 * -输入:(mul 3 -7)输出:-21 * 输入:(add 1 2) 输出:3 * 输入:(sub (mul 2 4) (div 9 3)) 输出 :5 * 输入:(sub (mul 2 (add 1 2 (sub 4 1))) (div 9 (div 9, 3))) 输出 9 * 输入:(div 1 0) 输出:error */ 实现思路:首先考虑没有括号的情况,如果是操作符是add的话,将所有的数相加即可;如果操作数是mul的话,将所有的数相乘即可;如果操作数是sub的话,第一个数减去第二个数即可;如果操作数是div的话,第一个数除以第二个数即可。为了统一处理这些情况,可以先读取操作符,然后将所有的操作数读入一个list,最后在进行统一的处理。然后考虑括号的情况:递归即可!很明显的递归问题,下面是实现代码:

表达式转化(中缀,后缀,前缀)

寵の児 提交于 2019-11-27 01:26:25
1、为什么要把中缀表达式转化为后缀,前缀? 计算机没法计算带有括号,以及区分优先级的表达式,或者说很难计算。使用后缀,前缀,消除了括号和优先级。 2、计算机如何计算后缀,前缀表达式? 计算后缀:从左到右遍历后缀表达式,遇到操作数,放进栈,遇到操作符,栈顶两个数出栈,进行运算,运算结果放进栈,直到读完后缀表达式。 计算前缀:从左到右遍历前缀表达式,遇到操作符,放进栈,遇到操作数,查看栈顶,栈顶为操作符,放进栈,栈顶为操作数,取出栈顶操作数和操作符,进行运算,运算后继续判断栈顶的情况。 3、中缀表达式如何转化为后缀,前缀表达式? 转化为后缀: 从左到右遍历中缀表达式, 遇到操作数,输出,遇到操作符,当前操作符的优先级 大于 栈顶操作符优先级,进栈,否则,弹出栈顶优先级 大于等于 当前操作符的操作符,当前操作符进栈。 转化为前缀: 从右到左遍历中缀表达式, 遇到操作数,输出,遇到操作符,当前操作符的优先级 大于等于 栈顶操作符优先级,进栈,否则,弹出栈顶优先级 大于 当前操作符的操作符,当前操作符进栈。 转载于:https://www.cnblogs.com/nzbbody/p/3335226.html 来源: https://blog.csdn.net/weixin_30826095/article/details/99234439

JVM总结(二)

怎甘沉沦 提交于 2019-11-26 22:34:25
JVM总结(2)java内存区域、字节码执行引擎 1、内存区域 程序计数器:知道线程执行位置,保证线程切换后能恢复到正确的执行位置。 虚拟机栈:存栈帧。栈帧里存局部变量表、操作栈、动态连接、方法返回地址。局部变量表又存了各种基本数据类型和对象引用(句柄)。 本地方法栈:为Native方法服务 堆:存放对象实例和数组,可以处于物理上不连续的内存空间 方法区:存类信息、常量、静态变量。有运行时常量池,存放类的符号引用 堆主要用来存放对象,栈主要用来执行程序。 2、对象的创建 虚拟机遇到一条new指令时,会先去常量池检测能否找到new对应的类的符号引用,并检测这个类是否加载、初始化。 如果加载检查通过,则分配内存。分配内存有两种方式:⑴指针碰撞,针对连续内存区域;⑵空闲列表,针对不连续内存区域。 内存分配完之后,会对内存初始化零值,保证实例字段能在java代码不赋初值也能使用。 接下来对对象信息进行设置,把类的元数据信息、对象的哈希码、对象的GC分代年龄等信息存放在对象头之中。 最后执行用户的Init方法 3、对象的内存布局 分为三部分,对象头、实例数据、对齐填充 对象头:⑴对象自身运行时数据,如哈希码、GC分代年龄、锁状态标志、线程持有的锁等。⑵类型指针,虚拟机通过这个来确定这个对象是哪个类的实例。⑶如果对象是一个Java数组,那么对象头中还必须有一块用于记录数组长度的数据。 实例数据