java基本数据类型的学习_第1页
java基本数据类型的学习_第2页
java基本数据类型的学习_第3页
java基本数据类型的学习_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java 基本数据类型介绍 Java 是一种强类型语言(Strongly typed language) ,这就意味着必须为每一个变量声明 一种类型。说到基本的数据类型,我们可以去了解下相关的 java 面向对象的思想。Java 是 以 C+为基础设计的,尽管如此,但 java 是一种更纯粹的面向对象语言。在学习或者是使 用 java 的时候,我们可以将自己置身于一个面向对象的世界里面,也就是 java 的世界, java 乃至 java 程序内的一切都是对象。在各种各样的编程语言中亦会存在着各种各样的操 作数据的方式。那在 java 中这是如何实现的呢?既然 java 把所有东西都当做了对象,那好, 我们可以举一个例子:电视机,这个对象,我们在现实世界是如何操作电视机这个现实中 的对象的呢,众所周知,我们用的是遥控器,那在 java 的世界中,我们用什么去操作电视 机这个对象呢,我们用的是 Handle,一个叫做句柄的东西,有的人把它称为“引用” ,也 有的人叫它指针。只要我们掌控住这个 handle(遥控器) ,我们就可以随意的根据电视机这 个对象所具有的功能对其进行控制。我们在屋里看电视的时候,想要对电视进行控制,例 如调频,关声音等等,我们只需要手里抓住遥控器就行了,而不需要在怀里抱着个电视。 在 java 中亦是如此,我们要操作 java 中的电视这个对象,只需要这个 handle。此外,即使 没有电视机,遥控板亦可独立存在。也就是说,只是由于拥有一个句柄,并不表示必须有 一个对象同它连接。假如我们想在 java 程序中使用电视机这个对象,我们可以创建一个电 视机的 Handle: TV tv; 但是我们在这里创建的只是一个 Handle(遥控器) ,而不是一个对象(电视机) 。若此时我 们向 tv 这个 handle 发送消息, tv.open(),就会出现运行期的错误。这是由于 tv 并没有和 任何东西进行衔接,也就是说这个遥控器没有可遥控的电视机。因此,我们一般在程序中 会采用更安全的做法,在创建一个 Handle 的时候,无论如何都会去对这个 Handle 进行初 始化: TV tv = new Tv(); 在 java 中所有对象都必须被创建,也就是说创建 Handle 的时候,我们会使它同一个对象进 行衔接。我们通常会使用 new 关键字来做到。new 的意思是: “把我变成这些对象的一种 新类型”。Java 提供了数量众多的基本类型,在这些类型之外,我们亦可以创建自己的类型, 用 new 关键字。 大概了解了 java 的面向对象,我们现在步入正题,开始我们 java 基本数据类型的学习。 Java 基本数据(Primitive )类型,这也是 java 的特殊情况,在上述中我们了解到我们可以 使用 new 关键字来在程序中创建我们自己的类型,然而在这些类型的使用中,new 关键字 却是不是非常的有效,因为 new 将对象置于“堆”中。对于这些类型,Java 采纳了与 C 和 C+相同的方法。也就是说,不是用 new 创建变量,而是创建一个并非句柄的“自动” 变量。 这个变量容纳了具体的值,并置于堆栈中,能够更高效地存取。 Java 决定了每种主要类型的大小。就像在大多数语言里那样,这些大小并不随着机器结构 的变化而变化。这种大小的不可更改正是 Java 程序具有很强移植能力的原因之一。 基本数据类型 主类型 大小 最小值 最大值 封装器类型 boolean 1-bit Boolean char 16-bit Unicode 0 Unicode 216- 1 Character byte 8-bit -128 +127 Byte11 short 16-bit -215 +215 1 Short1 int 32-bit -231 +231 1 Integer long 64-bit -263 +263 1 Long float 32-bit IEEE754 IEEE754 Float double 64-bit IEEE754 IEEE754 Double void Void1 数值类型全都是有符号(正负号)的,所以不必费劲寻找没有符号的类型。 主数据类型也拥有自己的“封装器”(wrapper)类。这意味着假如想让堆内一个非主要对象 表示那个主类型,就要使用对应的封装器。例如: char c = x; Character C = new Character(c); 也可以直接使用: Character C = new Character(x); 这样做的原因将在以后的章节里解释。 高精度数字 java 1.1 增加了两个类,用于进行高精度的计算:BigInteger 和 BigDecimal。尽管它们大致 可以划分为“封装器” 类型,但两者都没有对应的“ 主类型” 。 这两个类都有自己特殊的“方法”,对应于我们针对主类型执行的操作。也就是说,能对 int 或 float 做的事情,对 BigInteger 和 BigDecimal 一样可以做。只是必须使用方法调用,不能 使用运算符。此外,由于牵涉更多,所以运算速度会慢一些。我们牺牲了速度,但换来了 精度。 BigInteger 支持任意精度的整数。也就是说,我们可精确表示任意大小的整数值,同时在运 算过程中不会丢失任何信息。 BigDecimal 支持任意精度的定点数字。例如,可用它进行精确的币值计算。 至于调用这两个类时可选用的构建器和方法,请自行参考联机帮助文档。 今天参考课本写了一个关于二进制与十进制转换的程序,程序算法不难,但写完后测试发现不论是二转十还是十转二, 对于大于 21 亿即超过整数范围的数不能很好的转换。都会变成 0. 参考书籍发现使用使用 BigInteger 可以解决这个问题。 于是查找了下 JDK,然后测试几次终于写成功了! 使用心得如下: 1,BigInteger 属于 java.math.BigInteger,因此在每次使用前都要 import 这个类。偶开始就忘记 import 了,于 是总提示找不到提示符。 2,其构造方法有很多,但现在偶用到的有: BigInteger(String val) 将 BigInteger 的十进制字符串表示形式转换为 BigInteger。 BigInteger(String val, int radix) 将指定基数的 BigInteger 的字符串表示形式转换为 BigInteger。 如要将 int 型的 2 转换为 BigInteger 型,要写为 BigInteger two=new BigInteger(“2“); /注意 2 双引号不能省 略 3,BigInteger 类模拟了所有的 int 型数学操作,如 add()=“+”,divide()=“-”等,但注意其内容进行数学运算时 不能直接使用数学运算符进行运算,必须使用其内部方法。而且其操作数也必须为 BigInteger 型。 如:two.add(2)就是一种错误的操作,因为 2 没有变为 BigInteger 型。 4,当要把计算结果输出时应该使用.toString 方法将其转换为 10 进制的字符串,详细说明如下: String toString() 返回此 BigInteger 的十进制字符串表示形式。 输出方法:System.out.print(two.toString(); 5,另外说明三个个用到的函数。 BigInteger remainder(BigInteger val) 返回其值为 (this % val) 的 BigInteger。 BigInteger negate() 返回其值是 (-this) 的 BigInteger。 int compareTo(BigInteger val) 将此 BigInteger 与指定的 BigInteger 进行比较。 remainder 用来求余数。 negate 将操作数变为相反数。 compare 的详解如下: compareTo public int compareTo(BigInteger val) 将此 BigInteger 与指定的 BigInteger 进行比较。对于针对六个布尔比较运算符 (, =, !=, 0),其中 是六个比较运算符之一。 指定者: 接口 Comparable 中的 compareTo 参数: val - 将此 BigInteger 与之比较的 BigInteger。 返回: 当此 BigInteger 在数值上小于、等于或大于 val 时,返回 -1,0,或 1。 Java 的数组 几乎所有程序设计语言都支持数组。在 C 和 C+里使用数组是非常危险的,因为那些数组 只是内存块。若程序访问自己内存块以外的数组,或者在初始化之前使用内存(属于常规 编程错误) ,会产生不可预测的后果(注释) 。 :在 C+里,应尽量不要使用数组,换用标准模板库(Standard TemplateLibrary)里更 安全的容器。 Java 的一项主要设计目标就是安全性。所以在 C 和 C+里困扰程序员的许多问题都未在 Java 里重复。一个 Java 可以保证被初始化,而且不可在它的范围之外访问。由于系统自动 进行范围检查,所以必然要付出一些代价:针对每个数组,以及在运行期间对索引的校验, 都会造成少量的内存开销。但由此换回的是更高的安全性,以及更高的工作效率。为此付 出少许代价是值得的。 创建对象数组时,实

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论