标题: [转载教程] [PowerShell教程][03]PowerShell数据类型之整型 [打印本页]
作者: wankoilz 时间: 2011-5-22 10:01 标题: [PowerShell教程][03]PowerShell数据类型之整型
说明:教程转自 http://bbs.winos.cn/thread-35543-1-1.html
作者: Edengundam(马涛)
因为一些原因, 之前的教程之写了两篇, 教程将会从现在继续开始, 并且不会再发生间断, 尽量做到每周能够发两篇. 在02中已经为大家介绍了一些基本概念, 所以从03开始, 将真正接触使用PowerShell的例子.
PowerShell是建立在.Net Framework之上的, .Net Frameword的好处和坏处争论不休, 多数人认为.Net Framework最大的弊端在于性能问题. 这句话的确不假, 但是目前计算机硬件无论从速度还是存储空间来说, 都为.Net Framework的推广提供了足够的硬件环境. 所以我们不需要害怕.Net Framework带来的性能损失, 相反, 我们应该能够认清.Net Framework究竟能够让我们在实现一些复杂任务中节省了多少人力.
我相信这样一句话: 我们应该学会花时间来节省时间. 这话的意思类似于: 磨刀不误砍柴工. 也就是说, 有时候我们虽然花费了时间, 但实际上我们确节省了时间. 这也是一些中型和大型企业需要完善, 甚至说琐碎的管理制度一样. 另一个例子就是计算机中的操作系统, 如果每个程序自己去操作硬件(假设是可行的), 那么每个人都需要做很多同样的事情, 不如将这些操作交给操作系统去处理, 我们利用操作系统提供的更加友善的接口, 完成更复杂的功能.
PowerShell充分利用了现有的.Net Framework环境, 虽然PowerShell的开发者也承认PowerShell中还有很多很多没有完成的部分, 但是这些部分几乎都可以通过.Net Framework来解决. 在学习PowerShell的过程中, 你将会了解更多关于.Net Framework中的知识, 能够让你完成更多用其他工具无法完成的工作.
好了, 废话差不多了, 我们先来学习最常用的数据类型: 整数. 你只要在PowerShell.exe中随便输入一些数字就创建了整数对象:- PS C:\Users\Eden> 13800138000
- 13800138000
复制代码
PowerShell不需要像其他语言一样什么print之类的命令才能输出信息, 相反, 多数情况下, 你想到的结果就会展现在屏幕上, 就好像上面输出了整数值: 13800138000. 你需要记住, PowerShell中任何东西都是对象(Object). 对象是一种包含属性和方法的实体. 实体可以想象每个数值就好像每个人或者动物一样, 是真实存在的物体.
你可以通过使用点”.”来访问对象上的方法, 这些方法能够帮助你完成一些非常基础的操作. 我们可以使用下面的办法查看数字的类型:- PS C:\Users\Eden> 13800138000.GetType()
- 数字常量无效: 13800138000.GetType。
- 所在位置
- 行:1
- 字符: 19
- + 13800138000.GetType <<<< ()
-
-
- PS C:\Users\Eden> (13800138000).GetType()
-
- IsPublic IsSerial Name BaseType
- -------- -------- ---- --------
- True True Int64 System.ValueType
复制代码
注意, 第一种方法由于实现问题(词法分析或语法分析), PowerShell会产生错误信息. 我们可以在数值外面加上括号来避免. 我们可以看到PowerShell输出了很多信息, 大家只要注意看Name对应的Int64就好了, 它表名13800138000是一个64位的整数类型(.Net Framework中是System.Int64). 我们可以使用cmdlet: Get-Member来查看一个对象上的成员:- PS C:\Users\Eden> 13800138000 | Get-Member | ft Name,MemberType -AutoSize
-
- Name MemberType
-
- ---- ----------
- CompareTo Method
- Equals Method
- GetHashCode Method
- GetType Method
- GetTypeCode Method
- ToString Method
复制代码
Name表示了成员的名称, MemberType表示成员的类型. 这里我们看到了6个方法成员. 其中的Get-Type方法就是我们刚才例子中查看类型使用的, Get-Type可以返回一个表示类型的对象(过于细节了, 大家可以忽略^^).
因为数值13800138000已经很大了, 所以PowerShell选择了Int64来表示, 一般情况下PowerShell使用Int32表示大多数整数:- PS C:\Users\Eden> (0).GetType().FullName
- System.Int32
复制代码
Int32使用4个字节表示数值, 而Int64使用8个字节表示数值, 它们的范围是有限的:- PS C:Users\Eden> [System.Int32]::MaxValue
- 2147483647
- PS C:Users\Eden> [System.Int32]::MinValue
- -2147483648
- PS C:\Users\Eden> [System.Int64]::MinValue
- -9223372036854775808
- PS C:\Users\Eden> [System.Int64]::MaxValue
- 9223372036854775807
复制代码
如果两个Int32类型的数值的和或差超出了Int32的表示范围, PowerShell能够自动进行类型转换:- PS C:\Users\Eden> ([System.Int32]::MaxValue + 1).GetType().FullName
- System.Double
复制代码
默认PowerShell使用双精度浮点数 (Double)来表示计算的结果, 单精度浮点数(Float)是不提倡使用的, 主要原因在于其表现精度太低, 而且现在计算机内存容量较大, 因此一般情况下, 应该避免使用单精度浮点数. 如果两个整数不能整除, PowerShell也会聪明的选择浮点数来避免精度信息的丢失:- PS C:\Users\Eden> 19 / 3
- 6.33333333333333
- PS C:UsersEden> (19 / 3).GetType().FullName
- System.Double
复制代码
今天就为大家介绍到这里, 在下一篇文章中, 我会为大家介绍面向对象中的一些知识. 包括类, 实例属性, 实例方法, 静态属性, 静态方法等内容. 这些内容比较难, 大家先简单了解, 慢慢通过PowerShell的学习了解面向对象的一些深入知识. PowerShell是探索.Net世界的有力工具哦~
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |