关系运算

Java的自动装箱/拆箱

。_饼干妹妹 提交于 2020-03-21 05:37:35
概述 自JDK1.5开始, 引入了自动装箱/拆箱这一语法糖, 它使程序员的代码变得更加简洁, 不再需要进行显式转换。基本类型与包装类型在某些操作符的作用下, 包装类型调用valueOf()方法将原始类型值转换成对应的包装类对象的过程, 称之为自动装箱; 反之调用xxxValue()方法将包装类对象转换成原始类型值的过程, 则称之为自动拆箱。 实现原理 首先我们用 javap -c AutoBoxingDemo 命令将下面代码 反编译: public class AutoBoxingDemo { public static void main(String[] args) { Integer m = 1; int n = m; } } 反编译后结果: 从反编译后的字节码指令中可以看出, Integer m = 1; 其实底层就是调用了包装类Integer的valueOf()方法进行自动装箱, 而 int n = m; 则是底层调用了包装类的intValue()方法进行自动拆箱。 其中Byte、Short、Integer、Long、Boolean、Character这六种包装类型在进行自动装箱时都使用了缓存策略, 下面是Integer类的缓存实现机制: /** * This method will always cache values in the range -128 to 127

一周总结

◇◆丶佛笑我妖孽 提交于 2020-03-21 04:10:21
开发项目和所用时间:这周开发的主要程序是加减乘除运算,从两个数字的加减乘除到六位数的同级运算。 感想:我认为,程序员应该是最有活力和最有思想的一个群体,只要你不肯让自己浮于表面深入地研究一些东西,自己写一些东西,而不是这也用过,那也知道,但是多半都是局限于仅仅见过,会用,却从来没有认真思考过其代码背后蕴含的思想,更少有人研究过源码,进而体会大师们在某些问题的解决上秉承的思想和思维的风格。个人感觉,这也算是国内大部分程序员最让人悲哀的地方了,当然这也与外界浮躁氛围的蔓延不无关系。 阅读内容:阅读第一章第一节内容,发现了好多不懂的内容,希望老师课堂上多讲解书上的内容。 来源: https://www.cnblogs.com/1995i/p/5276915.html

JavaScript的基础学习(一)

只愿长相守 提交于 2020-03-19 08:55:14
一、JavaScript概述 JavaScript 的历史 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在CEnvi软件中).后将其改名ScriptEase.(客户端执行的语言) Netscape(网景)接收Nombas的理念,( Brendan Eich) 在其Netscape Navigator 2.0产品中开发出一套livescript的脚本语言.Sun和Netscape共同完成.后改名叫Javascript 微软随后模仿在其IE3.0的产品中搭载了一个JavaScript的克隆版叫Jscript. 为了统一三家,ECMA( 欧洲计算机制造协会)定义了ECMA-262规范.国际标准化组织及国际电工委员会(ISO/IEC)也采纳 ECMAScript 作为标准(ISO/IEC-16262)。从此,Web 浏览器就开始努力(虽然有着不同的程度的成功和失败)将 ECMAScript 作为 JavaScript 实现的基础。EcmaScript是规范. ECMAScript 尽管 ECMAScript 是一个重要的标准,但它并不是 JavaScript 唯一的部分,当然,也不是唯一被标准化的部分。实际上,一个完整的 JavaScript 实现是由以下 3 个不同部分组成的: 核心(ECMAScript) 文档对象模型(DOM)

javascript基础

一笑奈何 提交于 2020-03-19 08:09:38
一:引入方式 {#1 直接编写#} <script> alert('hello yuan') </script> {#2 导入文件#} <script src="hello.js"></script>  1.声明变量时不用声明变量类型. 全都使用var关键字;   var valuable;   var name="yn", age=20, job="lecturer"; 2.函数声明   funciton method_name(){} function add() { } var x=16; var y=18; alert(x+y); 3. 声明变量时 可以不用var. 如果不用var 那么它是全局变量    4. 注释 支持多行注释和单行注释. /* */ // 5.JavaScript语言中代表特定含义的词称为保留字,不允许程序再定义为标识符 数字类型(Number) 字符串(String) 布尔型(Boolean) true/false Null & Undefined Undefined 类型 Undefined 类型只有一个值,即 undefined。当声明的变量未初始化时,该变量的默认值是 undefined。 当函数无明确返回值时,返回的也是值 "undefined"; Null 类型 如果函数或方法要返回的是对象,那么找不到该对象时,返回的通常是 null。

位运算

纵饮孤独 提交于 2020-03-13 06:42:23
  &(按位与)、|(按位或)、^(按位异或)、~ (按位取反)。 其中,按位取反运算符是单目运算符,其余均为双目运算符。 位运算符的优先级从高到低,依次为~、&、^、|, 其中~的结合方向自右至左,且优先级高于算术运算符,其余运算符的结合方向都是自左至右,且优先级低于关系运算符。 位运算应用口诀 清零取反要用与,某位置一可用或 若要取反和交换,轻轻松松用异或                 (2)表示二进制数 移位运算 要点 1 它们都是双目运算符,两个运算分量都是【整形】,结果也是【整形】。 2 "<<" 左移 :右边空出的位上补0,左边的位将从字头挤掉,其值相当于乘2。       按位左移。将一个运算量的各位(二进制表示)依次左移若干位,低位补0,高位舍弃不要。             注意:位移操作的右操作数必须小于左操作数的位长度,否则结果未定义。     如:     int a=10,c= a<<2;     即:         a:00000000 00000000 00000000 00001010         c:00000000 00000000 00000000 00101000         所以,c=40。 3 ">>"右移 :右边的位被挤掉。对于左边移出的空位,如果是正数则空位补0,若为负数,可能补0或补1,这取决于所用的计算机系统。    

矩阵操作(数据,数组向量,表格)

余生颓废 提交于 2020-03-11 10:07:15
一、矩阵的表示 在MATLAB中创建矩阵有以下规则: a、矩阵元素必须在”[ ]”内; b、矩阵的同行元素之间用空格(或”,”)隔开; c、矩阵的行与行之间用”;”(或回车符)隔开; A=[1 2 3 4 5; 12 12 14 56 657; 23 46 34 67 56 ]; d、矩阵的元素可以是数值、变量、表达式或函数; e、矩阵的尺寸不必预先定义。 二,矩阵的创建: 1、直接输入法 最简单的建立矩阵的方法是从键盘直接输入矩阵的元素,输入的方法按照上面的规则。建立向量的时候可以利用冒号表达式,冒号表达式可以产生一个行向量,一般格式是: e1:e2:e3,其中e1为初始值,e2为步长,e3为终止值。还可以用linspace函数产生行向量,其调用格式为:linspace(a,b,n) ,其中a和b是生成向量的第一个和最后一个元素,n是元素总数。 linspace(1,5,8) ans = 1 至 5 列 1.0000 1.5714 2.1429 2.7143 3.2857 6 至 8 列 3.8571 4.4286 5.0000 2、利用MATLAB函数创建矩阵 基本矩阵函数如下: (1) ones()函数:产生全为1的矩阵,ones(n):产生n*n维的全1矩阵,ones(m,n):产生m*n维的全1矩阵; (2) zeros()函数:产生全为0的矩阵; (3) rand(

C++冒险攻略(持续更新中。。。)

大憨熊 提交于 2020-03-09 17:40:49
我的C++冒险之旅 绪论 计算机系统基本概念 计算机硬件 计算机程序语言 计算机解决问题是 程序控制 的 程序就是 操作步骤 程序要使用 语言来表达 机器语言 计算机 能识别 的是机器语言 机器语言指令是由0和1编码的 例如:加法指令可能是"0001" 计算机指令系统 机器硬件能够识别的语言(机器语言)的 集合 ; 它是软件和硬件的主要界面。 计算软件 是一系列按照特定顺序组织的计算机数据和指令的集合。一般来讲软件被划分为 系统软件、应用软件 和介于这两者之间的 中间件 ; 软件包括程序和 文档 。 编写大型程序时,尤其要注意编写文档 计算机程序 指令的序列; 描述解决问题的方法和数据。 计算机语言和程序设计方法 最初的计算机语言——机器语言 由二进制代码构成 计算机硬件可以识别 可以表示简单的操作 例如:加法、减法、数据移动等等 汇编语言 将机器指令映射为助记符 如ADD、SUB、mov等; 抽象层次低,需要考虑机器细节。 高级语言 关键字、语句容易理解; 有含义的数据命名和算式; 抽象层次较高; 例如,算式:a+b+c/d 屏蔽了机器的细节: 例如,这样显示计算结果: cout << a + b + c / d C++语言 是高级语言 支持面向对象的观点和方法 将客观事物看做对象 对象间通过消息传送进行沟通 支持分类和抽象 面向过程的程序设计方法 机器语言、汇编语言

指针的算术运算

最后都变了- 提交于 2020-03-08 21:15:00
C++ 指针的算术运算 C++ 指针 C++ 指针 指针是一个用数值表示的地址。因此,您可以对指针执行算术运算。可以对指针进行四种算术运算:++、--、+、-。 假设 ptr 是一个指向地址 1000 的整型指针,是一个 32 位的整数,让我们对该指针执行下列的算术运算: ptr++ 在执行完上述的运算之后,ptr 将指向位置 1004,因为 ptr 每增加一次,它都将指向下一个整数位置,即当前位置往后移 4 个字节。这个运算会在不影响内存位置中实际值的情况下,移动指针到下一个内存位置。如果 ptr 指向一个地址为 1000 的字符,上面的运算会导致指针指向位置 1001,因为下一个字符位置是在 1001。 递增一个指针 我们喜欢在程序中使用指针代替数组,因为变量指针可以递增,而数组不能递增,因为数组是一个常量指针。下面的程序递增变量指针,以便顺序访问数组中的每一个元素: #include <iostream> using namespace std; const int MAX = 3; int main () { int var[MAX] = {10, 100, 200}; int *ptr; // 指针中的数组地址 ptr = var; for (int i = 0; i < MAX; i++) { cout << "Address of var[" << i << "] =

C语言指针

夙愿已清 提交于 2020-03-08 20:00:15
10 指针 指针是C语言中广泛使用的一种数据类型。运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构;能很方便地使用数组和字符串;并能象汇编语言一样处理内存地址,从而编出精练而高效的程序。指针极大地丰富了C语言的功能。学习指针是学习C语言中最重要的一环,能否正确理解和使用指针是我们是否掌握C语言的一个标志。同时,指针也是C语言中最为困难的一部分,在学习中除了要正确理解基本概念,还必须要多编程,上机调试。只要作到这些,指针也是不难掌握的。 10.1 地址指针的基本概念 在计算机中,所有的数据都是存放在存储器中的。一般把存储器中的一个字节称为一个内存单元,不同的数据类型所占用的内存单元数不等,如整型量占2个单元,字符量占1个单元等,在前面已有详细的介绍。为了正确地访问这些内存单元,必须为每个内存单元编上号。根据一个内存单元的编号即可准确地找到该内存单元。内存单元的编号也叫做地址。既然根据内存单元的编号或地址就可以找到所需的内存单元,所以通常也把这个地址称为指针。 内存单元的指针和内存单元的内容是两个不同的概念。 可以用一个通俗的例子来说明它们之间的关系。我们到银行去存取款时,银行工作人员将根据我们的帐号去找我们的存款单, 找到之后在存单上写入存款、取款的金额。在这里,帐号就是存单的指针, 存款数是存单的内容。对于一个内存单元来说,单元的地址即为指针

33-指针的运算

房东的猫 提交于 2020-03-08 19:24:44
   只有指向同一数组的两个指针变量之间才能进行运算,否则运算毫无意义。 1、两指针变量相减   两指针变量相减所得之差是两个指针所指数组元素之间相差的元素个数。   实际上是两个指针值(地址)相减之差再除以该数组元素的长度(字节数)。   (pointer2地址值 -pointer地址值) / sizeof(所指向数据类型) 2、两指针变量进行关系运算 指向同一数组的两指针变量进行关系运算可表示它们所指数组元素之间的关系。 例如: • p == p1 表示 p 和 p 1 指向同一数组元素 • p > p1 表示 p 处于高地址位置 • p < p1 表示 p 处于低地址位置。 指针变量还可以与0比较。 设p为指针变量,则 p==0表明p是空指针,它不指向任何变量; p!=0表示p不是空指针。 注意:指针可以相减,但是不能相加(相加没有意义)。 空指针是由对指针变量赋予0值而得到的。 来源: https://www.cnblogs.com/xdl745464047/p/4004286.html