操作数

简单工厂模式

亡梦爱人 提交于 2020-03-08 05:38:44
模拟一个简单的需求 设计一个简单的计算器,能够完成加减乘除的操作,并且能够设置运算的两个操作数(暂时不考虑计算器的界面)。 分析 思路1 可以创建一个计算器类,里面包含加减乘除的运算,以及设置获取操作数等操作,客户端直接创建一个计算器的对象,调用对应接口去执行运算。如果后续要添加新的运算,每次需要更改计算器类。 风险:由于新增操作每次要更改原来设计的类,可能会由于不小心改掉了原来的实现计算逻辑,从而导致原来正常运行的程序得不到正确的结果。 思路2 为每种运算单独设计一个类,客户端使用的时候可以根据不同的运算创建不同的对象,执行相应的操作。 由于每种运算符都有类似的操作,只是最终对数据执行的运算不一样,为了避免每个运算类写重复的代码,可以抽象出来一个运算类,包含公共的方法(设置操作数,获取操作数,获取计算结果等),具体运算类应该继承这个基类,在每个子类分别执行自己的运算。 此时,客户端需要使用运算器的时候,创建对象使用new的时候还是需要知道每个运算类的类名,若这些类分别在不同的头文件声明,使用这些类的时候还需要include一堆的头文件。如果要新增加运算符,上述的地方都要改动,很容易遗漏,非常的繁琐。 解决方案:由于创建的对象都是类似的对象(他们的父类都是同一个),可以创建一个类,提供一个静态方法,把创建具体类对象的工作都放到这个类中来完成,当客户端需要使用运算器的时候

学习java 第三天

橙三吉。 提交于 2020-03-07 17:36:58
运算符分类 编辑 运算符指明对操作数的运算方式。组成表达式的Java 操作符 有很多种。运算符按照其要求的操作数数目来分,可以有 单目运算符 、 双目运算 符和 三目运算符 ,它们分别对应于1个、2个、3个操作数。运算符按其功能来分,有 算术运算符 、 赋值运算符 、 关系运算符 、 逻辑运算符 、 位运算符 和其他运算符。 [1] 算术 单目:+(取正)-(取负) ++(自增1) - -(自减1) 双目:+ - * / %(取余) 三目:a>b?true:false 说明:当a大于b的时候,为true(也就是冒号之前的值),否则为false;这整个 运算符 包括一个 关系运算符 (可以是“>”"<""!="等等),一个“?”,一个“:”,冒号前后需要有两个 表达式 或者是值或者是对象。 关系 等于符号 : ==,不等于符号 : != ,大于符号 : >, 小于符号 : <,大于等于符号 : >= ,小于等于符号 : <= 。 位与逻辑 位 运算符  与(&)、非(~)、或(|)、异或(^) &:双目运算符,运算时均把运算数转换为二进制再做比较,规则:当相同的位上均为1时结果为1,否则结 果为0.如:1010&1101,转为二进制:10001001101&1111110010比较结果为:1000000转为十进制: 64所以1010&1101=64; | :当两边 操作数

sqlite3中的数据类型

痴心易碎 提交于 2020-03-07 06:42:33
大多数的数据库引擎(到现在据我们所知的除了 sqlite 的每个 sql 数据库引擎)都使用静态的、刚性的类型,使用静态类型,数据的类型就由它的容器决定,这个容器是这个指被存放的特定列。 Sqlite 使用一个更一般的动态类型系统, sqlite 中, 值的数据类型跟值本身相关,而不是与它的容器相关 。 Sqlite 的动态类型系统和其他数据库的更为一般的静态类型系统相兼容,但同时, sqlite 中的动态类型允许它能做到一些传统刚性类型数据库所不可能做到的事。 1. 存储类和数据类型 每个存放在 sqlite 数据库中(或者由这个数据库引擎操作)的值 都有下面中的一个存储类 : l NULL ,值是 NULL l INTEGER ,值是有符号整形,根据值的大小以 1,2,3,4,6 或 8 字节存放 l REAL ,值是浮点型值,以 8 字节 IEEE 浮点数存放 l TEXT ,值是文本字符串,使用数据库编码( UTF-8 , UTF-16BE 或者 UTF-16LE )存放 l BLOB ,只是一个数据块,完全按照输入存放(即没有准换) 从上可以看出存储类比数据类型更一般化。比如 INTEGER 存储类,包括 6 中不同长度的不同整形数据类型,这在磁盘上造成了差异。但是只要 INTEGER 值被从磁盘读出进入到内存进行处理,它们被转换成最一般的数据类型( 8- 字节有符号整形

又能扯皮了!没内存了还能看片?

拥有回忆 提交于 2020-03-06 15:35:58
虚拟内存 尽管基址寄存器和变址寄存器用来创建地址空间的抽象,但是这有一个其他的问题需要解决: 管理软件的膨胀(managing bloatware) 。虽然内存的大小增长迅速,但是软件的大小增长的要比内存还要快。在 1980 年的时候,许多大学用一台 4 MB 的 VAX 计算机运行分时操作系统,供十几个用户同时运行。现在微软公司推荐的 64 位 Windows 8 系统至少需要 2 GB 内存,而许多多媒体的潮流则进一步推动了对内存的需求。 这一发展的结果是,需要运行的程序往往大到内存无法容纳,而且必然需要系统能够支持多个程序同时运行,即使内存可以满足其中单独一个程序的需求,但是从总体上来看内存仍然满足不了日益增长的软件的需求(感觉和xxx和xxx 的矛盾很相似)。而交换技术并不是一个很有效的方案,在一些中小应用程序尚可使用交换,如果应用程序过大,难道还要每次交换几 GB 的内存?这显然是不合适的,一个典型的 SATA 磁盘的峰值传输速度高达几百兆/秒,这意味着需要好几秒才能换出或者换入一个 1 GB 的程序。 SATA(Serial ATA)硬盘,又称串口硬盘,是未来 PC 机硬盘的趋势,已基本取代了传统的 PATA 硬盘。 那么还有没有一种有效的方式来应对呢?有,那就是使用 虚拟内存(virtual memory) ,虚拟内存的基本思想是,每个程序都有自己的地址空间

Java入门基础知识之变量

不羁岁月 提交于 2020-03-04 22:34:48
1、变量 指计算机内存中的一块存储空间,是存储数据的基本单元 例: 酒店–内存 酒店中包含房间每个房间就相当于是一个变量 房间号-变量名 房间的类型-变量的数据类型 房间的客人-变量值 2、变量的使用 声明:数据类型 变量名;例如: int money; 赋值:变量名=值;例如: money=100;//将数值赋给money 3、变量的声明 定义变量的方法: 先声明,再赋值:数据类型 变量名; 变量名=值; 声明并赋值:数据类型 变量名=值; //变量未赋值不能使用 多个同类型变量的声明与赋值:数据类型 变量1,变量2,变量3=值3,变量4,变量5=值5; PS:Java是强类型语言,变量的类型必须与值的类型一致 4、数据类型 数据类型分为基本数据类型和引用数据类型 基本数据类型:整数、小数、字符、布尔 ①整数 字节(byte)类型 1Byte=8bit 一共可存2^8=256个整数 0000 0000 0~127 128个正数 1111 1111 -1~128 128个负数 高位表示符号位1负0正 byte类型的数据标示的数据范围:-128~127 如需为long类型,需在后面加L或l ②小数、浮点型 小数/浮点型:采用科学计数法表示 2E3等价于2 10^3=2000.0; 3E5等价于3 10^5=300000.0; double为浮点数的默认类型,如需为float类型赋值

Python——变量,运算,条件,循环

我是研究僧i 提交于 2020-03-04 16:29:32
注释 1.注释是什么 注释就是给代码做的一些简短的说明,让我们更好的去理解代码,注意程序执行的时候,不会去执行它 第一种注释 #开头接一个空格就完事 多行注释,"""开头"""结尾 代码实例: # 这是第一个单行注释 print("hello python") """ print("hello python") """ 变量 程序就是用来处理数据的,而变量就是用来存储数据的 1.代码实例,使用变量 # 定义 qq_number 的变量用来保存 qq 号码 qq_number = "1234567" # 使用print可以查看它 print(qq_number) 注意,如果你不想通过print查看变量的值,你可以在ipython中定义变量之后,直接输入变量就行。 2.变量中都包含些什么呢? 在内存中创建一个变量,会包括: 变量的名称 变量保存的数据 变量存储数据的类型 变量的地址(标示) 变量的赋值值得是使用'='好给变量赋值,它总是从右边赋值给左边 2.什么时候需要使用注释? 注释不是越多越好 ,对于一目了然的代码,不需要添加注释 对于 复杂的操作 ,应该在操作开始前写上若干行注释 对于 不是一目了然的代码 ,应在其行尾添加注释(为了提高可读性,注释应该至少离开代码 2 个空格) 绝不要描述代码,假设阅读代码的人比你更懂 Python,他只是不知道你的代码要做什么

js语法入门

孤人 提交于 2020-03-04 07:36:53
完整的JavaScript是由ECMAScript(语法)、Browser Objects(DOM、BOM)(特性)组成的。 可以在head或body中使用 标识符命名规则 1、由字母、数字、下划线(_)或者美元符号(💲)组成 2、不能以数字开头 3、不能使用关键字、保留字等作为标识符 ECMAScript的变量是松散类型 松散类型:可以用来保存任何类型的数据 换句话说,每个变量仅仅是一个用于保存值的占位符而已。 1、变量的声明要使用var操作符, 语法:var变量名 2、变量赋值 声明的同时赋值:var变量名=值 先声明后赋值:变量名=值 一次声明多个变量,用逗号隔开,如:var id,sex,age,name=“marry”; 注意⚠️:1、省略var声明的变量是全局变量 2、不推荐省略var操作符来定义全局变量 typeof 功能是用来检测变量类型 语法:typeof变量或者typeof(变量) 返回值:string类型,有可能是:string、number、boolean、object、undefined、function console.log() //在控制台中打印 观察打印ctrl+shift+i undefined:没有定义 undefined类型只有一个值,即特殊的undefined。 说明:一般而言,不存在需要显式地把一个变量设置为undefined值的情况

【软件测试】4.编程数据结构python学习day01、day02

痞子三分冷 提交于 2020-03-03 17:28:52
1.3 Python 语言介绍 1.3.4 Python 语言的优缺点 易学. Python 有极其简单的语法, 学习极其容易上手 开源 可移植性. Python 已经被移植在许多平台上. 这些平台包括 Linux、 Windows、 Mac OS、Windows 甚至还有Android 平台 丰富的库. Python 标准库确实很庞大. 除了标准库以外,还有许多其他高质量的库 1.4 Python 开发环境搭建 编辑 Python 代码的编辑器 运行 Python 代码的解释器 1.4.3 Python 解释器 + 集成开发环境 (IDE) 我们使用 PyCharm hello print('hello world') 2. Python 基础语法 学习目标 : 1. 能够说出注释的作用以及使用注释的语法 2. 能够说出什么是标识符、什么是关键字 3. 能够说出变量的作用 4. 能够说出变量类型的作用 5. 能够说出不同类型的数据之间的运算规则 6. 能够说出 Python 中的运算符的种类 7. 能够说出 print 函数的作用 8. 能够说出 input 函数的作用 9. 能够说出为什么要进行类型转换 10. 能够说出在 Python 中如何定义变量 11. 能够说出 if 分支语句的作用 12. 能够说出 if 语句的语法格式 13. 能够说出 while 循环语句的作用

JAVA学习笔记

删除回忆录丶 提交于 2020-03-03 17:18:01
Java教程 一.java简介 Java分为三个体系: JavaSE(J2SE)(Java2 Platform Standard Edition,java平台标准版) JavaEE(J2EE)(Java 2 Platform,Enterprise Edition,java平台企业版) JavaME(J2ME)(Java 2 Platform Micro Edition,java平台微型版)。 在正式学习java并安装配置开发环境之前,有必要了解一些有关Java的专业术语: JDK(Java Development Kit ):编写Java程序的程序员使用的软件 JRE(Java Runtime Environment):运行Java程序的用户使用的软件 Server JRE (Java SE Runtime Environment):服务端使用的 Java 运行环境 SDK(Software Development Kit):软件开发工具包,在Java中用于描述1998年~2006年之间的JDK DAO(Data Access Object):数据访问接口,数据访问,顾名思义就是与数据库打交道 MVC(Model View Controller):模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范

C#中 ??、 ?、 ?: 、?.、?[ ] 问号

僤鯓⒐⒋嵵緔 提交于 2020-03-03 13:36:42
C#中 ??、 ?、 ?: 、?.、?[ ] 问号 1. 可空类型修饰符(?) 引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空。 例如:string str=null; 是正确的,int i=null; 编译器就会报错。 为了使值类型也可为空,就可以使用可空类型,即用可空类型修饰符"?“来表示,表现形式为"T?” 例如:int? 表示可空的整形,DateTime? 表示可为空的时间。 T? 其实是System.Nullable(泛型结构)的缩写形式, 也就意味着当你用到T?时编译器编译时会把T?编译成System.Nullable的形式。 例如:int?,编译后便是System.Nullable的形式。 2. 三元(运算符)表达式(?: ) 例如:x?y:z 表示如果表达式x为true,则返回y; 如果x为false,则返回z,是省略if{}else{}的简单形式。 3. 空合并运算符(??) 用于定义可空类型和引用类型的默认值。 如果此运算符的左操作数不为null,则此运算符将返回左操作数,否则返回右操作数。 例如:a??b 当a为null时则返回b,a不为null时则返回a本身。 空合并运算符为右结合运算符,即操作时从右向左进行组合的。 如,“a??b??c”的形式按“a??(b??c)”计算。 4.NULL检查运算符(?.)