[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[转载教程] [PowerShell教程][03]PowerShell数据类型之整型

[PowerShell教程][01]初识PowerShellhttp://bbs.bathome.net/thread-12415-1-1.html
[PowerShell教程][02]PowerShell基础知识之一http://bbs.bathome.net/thread-12416-1-1.html
[PowerShell教程][03]PowerShell数据类型之整型http://bbs.bathome.net/thread-12417-1-1.html
[PowerShell教程][04]PowerShell面向对象基础之一http://bbs.bathome.net/thread-12418-1-1.html
[PowerShell教程][05]PowerShell面向对象基础之二http://bbs.bathome.net/thread-12419-1-1.html
[PowerShell教程][06]PowerShell中格式化命令和输出命令http://bbs.bathome.net/thread-12420-1-1.html
[PowerShell教程][07]PowerShell中Write族cmdlet的介绍和使用http://bbs.bathome.net/thread-12421-1-1.html
[PowerShell教程][08]字符串字面值http://bbs.bathome.net/thread-12422-1-1.html
[PowerShell教程][09]PowerShell中的数组使用http://bbs.bathome.net/thread-12423-1-1.html
[PowerShell教程][10]PowerShell中的HashTable的使用http://bbs.bathome.net/thread-12424-1-1.html
[PowerShell教程][11]PowerShell中的加法运算http://bbs.bathome.net/thread-12425-1-1.html

说明:教程转自 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中随便输入一些数字就创建了整数对象:
  1. PS C:\Users\Eden> 13800138000
  2. 13800138000
复制代码
PowerShell不需要像其他语言一样什么print之类的命令才能输出信息, 相反, 多数情况下, 你想到的结果就会展现在屏幕上, 就好像上面输出了整数值: 13800138000. 你需要记住, PowerShell中任何东西都是对象(Object). 对象是一种包含属性和方法的实体. 实体可以想象每个数值就好像每个人或者动物一样, 是真实存在的物体.
你可以通过使用点”.”来访问对象上的方法, 这些方法能够帮助你完成一些非常基础的操作. 我们可以使用下面的办法查看数字的类型:
  1. PS C:\Users\Eden> 13800138000.GetType()
  2. 数字常量无效: 13800138000.GetType。
  3. 所在位置
  4. 行:1
  5. 字符: 19
  6. + 13800138000.GetType <<<< ()
  7. PS C:\Users\Eden> (13800138000).GetType()
  8. IsPublic     IsSerial        Name                                     BaseType
  9. --------     --------        ----                                     --------
  10. True         True            Int64                                    System.ValueType
复制代码
注意, 第一种方法由于实现问题(词法分析或语法分析), PowerShell会产生错误信息. 我们可以在数值外面加上括号来避免. 我们可以看到PowerShell输出了很多信息, 大家只要注意看Name对应的Int64就好了, 它表名13800138000是一个64位的整数类型(.Net Framework中是System.Int64). 我们可以使用cmdlet: Get-Member来查看一个对象上的成员:
  1. PS C:\Users\Eden> 13800138000 | Get-Member | ft Name,MemberType -AutoSize
  2. Name        MemberType
  3. ----        ----------
  4. CompareTo   Method
  5. Equals      Method
  6. GetHashCode Method
  7. GetType     Method
  8. GetTypeCode Method
  9. ToString    Method
复制代码
Name表示了成员的名称, MemberType表示成员的类型. 这里我们看到了6个方法成员. 其中的Get-Type方法就是我们刚才例子中查看类型使用的, Get-Type可以返回一个表示类型的对象(过于细节了, 大家可以忽略^^).
因为数值13800138000已经很大了, 所以PowerShell选择了Int64来表示, 一般情况下PowerShell使用Int32表示大多数整数:
  1. PS C:\Users\Eden> (0).GetType().FullName
  2. System.Int32
复制代码
Int32使用4个字节表示数值, 而Int64使用8个字节表示数值, 它们的范围是有限的:
  1. PS C:Users\Eden> [System.Int32]::MaxValue
  2. 2147483647
  3. PS C:Users\Eden> [System.Int32]::MinValue
  4. -2147483648
  5. PS C:\Users\Eden> [System.Int64]::MinValue
  6. -9223372036854775808
  7. PS C:\Users\Eden> [System.Int64]::MaxValue
  8. 9223372036854775807
复制代码
如果两个Int32类型的数值的和或差超出了Int32的表示范围, PowerShell能够自动进行类型转换:
  1. PS C:\Users\Eden> ([System.Int32]::MaxValue + 1).GetType().FullName
  2. System.Double
复制代码
默认PowerShell使用双精度浮点数 (Double)来表示计算的结果, 单精度浮点数(Float)是不提倡使用的, 主要原因在于其表现精度太低, 而且现在计算机内存容量较大, 因此一般情况下, 应该避免使用单精度浮点数. 如果两个整数不能整除, PowerShell也会聪明的选择浮点数来避免精度信息的丢失:
  1. PS C:\Users\Eden> 19 / 3
  2. 6.33333333333333
  3. PS C:UsersEden> (19 / 3).GetType().FullName
  4. System.Double
复制代码
今天就为大家介绍到这里, 在下一篇文章中, 我会为大家介绍面向对象中的一些知识. 包括类, 实例属性, 实例方法, 静态属性, 静态方法等内容. 这些内容比较难, 大家先简单了解, 慢慢通过PowerShell的学习了解面向对象的一些深入知识. PowerShell是探索.Net世界的有力工具哦~
1

评分人数

返回列表