从零开始学Java 第4章 基本数据类型与字符串
第4章 基本数据类型与字符串
Java语言中的数据类型和其它高级编程语言很相似,若读者熟悉其他的语言,应该会熟悉其中的一些内容和不过即使读者已经知道这些概念,仍需要学习用Java方式来表达这些概念。这一章的主要内容是Java中各种基本数据类型的表示以及它们的表示范围与使用,本章还介绍了字符串类型在Java中的表示,Java中字符串的表示与其它的语言有很大区别,需要读者重点学习。
4.1 数据类型
首先读者要先记住一句话,Java是一门强类型语言。这句话的意思就是,每个变量都有一个类型。每个表达式也有一个类型,这些类型都被严格的定义了。在赋值语句和参数传递时也要进行类型检查,确保类型兼容性,如果不能匹配编译时就会报错,这很大的程度上提高了的安全性。Java定义了8种基本数据类型:byte、int、short、long、char、float、double和boolean。它们可以分为整型、浮点型、字符型、布尔型。下面对他们进行详细的介绍。
4.1.1 整型
整形表示整数数字,可以是负数,一共提供四种类型的整数类型:int、short、long、byte。如表4.1所示。这四种类型都是有符号的类型。里面并没有无符号类型。在C语言中,一个整数类型在不同的机器上可能有不同的表示范围,但在Java里面,整数类型的范围跟代码运行的机器是无关的,这就为程序的跨平台性提供了便利。
4.1.2 浮点型
浮点型用来表示带有小数部分的数值。Java提供两种浮点型:float和double,分别代表单精度和双精度类型。他们的宽度和范围如表4.2所示。
4.1.3 字符型
在Java中,用于存储字符类型的数据类型是char。char类型常量都是用单引号表示,例如,’H’表示一个字符,注意用双引号的”H”与’H’并不一样,”H”表示的是一个字符串,这个字符串只有一个字符。在C/C++里面,char类型是一个8位的整数类型,而在Java中则是用Unicode码来表示字符。
4.1.4 布尔型
在里面用布尔类型来表示逻辑条件判断,它只有两个值,真(true)和假(false)。注意在Java里并不能用1和0来表示真假。而只能用布尔型的值来进行条件判断。
4.2 变量与常量
计算机界一代宗师E.W.Dijkstra说过一句话:如果理解了编程时变量的用法,也就理解了编程的精粹。当然大师眼中的理解不是轻易能理解的,不过从这里可以看出变量的重要性。本节的主要内容就是介绍Java中的变量和常量。
4.2.1 Java变量
程序中的变量(variable)用来存储数字、字母这样的数据,读者可以把它们看成一类容器。在这些容器中存放的数字、字符或者其他数据就是变量的值。变量,顾名思义就是可以改变的。
Java的变量是作为存储单元来实现的。对每个变量,编译器都会分配一部分存储单元用来存储变量的值。
声明变量时,首先要计算机知道变量的名字外。此外还需要使计算机知道需要为这个变量预留多大的内存空间,因为不同的变量类型需要的内存空间是不同的。这些信息在变量声明的时候需要清楚的给出,而且中每个变量使用之前必须要进行声明。
4.2.2 Java中的常量
前一小节介绍了变量,之所以称之为变量就是因为它可以改变自己的值,变量的值不断的变化。与之相对应的就是常量。数字(如2),它一直是2,不能变成别的数。这样的不变的值就是常量(constant)。当然其它类型的也有常量,如’A’是一个char类型常量。
Java中,使用关键字final来表示常量。常量声明格式如下:
final 数据类型 数据名=数据值;
4.3 数据类型的转换
编程过程中,把一种类型的值转换成另一种类型是经常使用的,这就是数据类型转换。在Java中有两种类型的数据转换,自动转换和强制类型转换。本节会对这两种方式进行介绍,并有一些示例促进读者的理解。
4.3.1 自动转换
当把一种类型的变量赋给另一种类型的变量时,如果能够满足下面两个条件,就能进行自动类型转换。这种转换过程中不会有信息上的损失。
目的类型比原来的类型要大
两种类型是互相兼容的
4.3.2 强制类型转换
前面一节里讲的是自动类型转换。它重要的一个条件是目的值必须比原数据类型要“大“,可以把它称为拓宽转换。但编程过程中会遇到要把一个double类型的数赋给一个int型变量,这时就是缩小转换,这种情况下无法进行自动转换,就需要进行强制类型转换。强制类型转换的一般语法格式是在圆括号中给出要转换的目标类型,然后是需要转换的变量名。
4.4 赋值和初始化
上一节讲了中的各种基本类型。要想使用它们,当然需要让它们等于不同的值,这一节就要讲变量的赋值以及变量的初始化。
4.4.1 赋值
赋值就是给变量指定一个值或者是改变一个变量的值。需要注意的一点是赋给变量的值必须在变量类型所能表达的范围之内。
4.4.2 初始化
声明一个变量以后,必须通过明确的赋值语把它初始化,然后才可以使用它。当试图使用一个未曾初始化的变量时,编译器会报错。
4.5 字符串类型
经过前面的学习,读者可能产生疑问,为什么没有提到字符串类型。这不是因为Java不支持字符串类型,而是因为Java的字符串类型不是一种简单类型,不像C语言中需要用字符数组来描述。Java有自己的字符串类型——String类。String类用到了中类和对象以及方法的知识,这些内容要在后边才能进行详细的讲解。作者在用到一些后边的知识时,会先简要的介绍,如果读者实在不能理解,可以学习了以后的知识再回过头来复习本节。
4.5.1 字符串变量
Java中的字符串不是简单类型,然而有一个专门的String类专门来存储、处理字符串。首先说下字符串。下面的被引号包含的就是一个字符串常量:
“this is a string”
可以用标准输出语句将其输出到控制台:
System.out.println(“this is a string”);
String变量的值就是这样的用双引号包含起来的字符串。也就是说String的值是一个字符序列,这个序列可以是任意长(当然不能长过Java规定的最大长度)。它的声明跟以前的声明语句是类似的。
String name;
前面是声明类型为String类型,后边声明的这个变量的名字为name。
4.5.2 字符串的连接
在中可以用“+”来连接两个字符串。加号这里可以当作一个连接运算符,作用是把两个字符串串联起来以得到一个较大的字符串。
4.5.3 字符串处理
上一小节讲了字符串的连接。除了字符串连接操作外,还有其它几种操作会经常用到,主要有以下几种:
求子串
测试字符串是否相等
字符串编辑
有六种存储类型,分别是:
1.寄存器
2.栈
3.堆
4.静态存储区
5.常量储存区
6.其他存储位置
4.5.4 字符串其它常用操作
Java的String类提供了很多方法。这些方法都很有用,后面会经常用到,这一节介绍最常见的几种方法。
char charAt(int index)
int compareTo(String other)
String contact(String s)
int indexOf(int ch)
boolean equalsIgnoreCase(String anotherString)
String replace(CharSequence target, CharSequence replacement)
String substring(int beginIndex)
String substring(int beginIndex, int endIndex)
String toLowerCase()
String toUpperCase()
4.6 小结
这一章主要介绍了的数据类型。Java中数据类型可以划分为基本类型和引用类型两类。通过本章的学习,读者应该能了解到Java中各类常用的数据类型。这些数据类型是程序设计的基础。学完了数据类型当然要用它们,下一章将要学习的是运算符,通过运算符来完成各种数据的计算,这是程序设计的基础,希望读者可以好好体会。
浙公网安备 33010602011771号