科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道Java入门(6)Java数据类型

Java入门(6)Java数据类型

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本章将目光聚焦在Java的数据类型上,通过本章的学习,读者应能熟练定义、使用基本数据类型、字符串类以及数组。

作者:www.jspsky.net.cn 来源:www.jspsky.net.cn 2007年9月11日

关键字: Equinox COM+ 数据类型

  • 评论
  • 分享微博
  • 分享邮件

 

  本章将目光聚焦在Java的数据类型上,通过本章的学习,读者应能熟练定义、使用基本数据类型、字符串类以及数组。

  (2002-08-29 14:09:43)

  --------------------------------------------------------------------------------

  y Wing, 出处:fjxufeng

    本章目标:

    本章将目光聚焦在Java的数据类型上,通过本章的学习,读者应能熟练定义、使用基本数据类型、字符串类以及数组。

    6.1 基本数据类型

    传授新知

    在Java语言中,数据类型可以分为两大类:

    1)基本类型;

    2)扩展类型。

    在本小节中,我们就一起来学习一下Java语言的基本数据类型。它包括:boolean、char、byte、int、short、long、float、double八种:

    类型 描述 取值范围

    Boolean 布尔型 只有两个值true、false

    Char 字符型

    Byte 8位带符号整数 -128到127之间的任意整数

    Short 16位无符号整数 -32768~32767之间的任意整数

    Int 32位带符号整数 -231到231-1之间的任意整数

    Long 64位带符号整数 -263到263-1之间的任意整数

    Float 32位单精度浮点数 根据IEEE754-1985标准

    Double 64位双精度浮点数 根据IEEE754-1985标准

    表6-1 Java基本数据类型一览表

    一些提示:

    不象其它程序设计语言,Java语言中的整型的位数是固定的,而不会根据硬件平台以及操作系统的不同而不同。

    6.1.1 boolean型

    在上一章的逻辑运算符中,我们就已经看到过了取值为true和false的变量,这种变量称为boolean型变量。

    实例说明

    1.首先,我们使用以下命令调用“写字板”程序来编辑源程序。

  c:javastudy> notepad test601.java

    在写字板中,输入下面的程序代码,然后存盘退出。

    源程序:test601.java

  public class test601

  {

  public static void main(String args[])

  {

  boolean x=true;

  boolean y=false;

  System.out.println("x&&y="+(x&&y));

  System.out.println("x||y="+(x||y));

  System.out.println("x^y="+(x^y));

  System.out.println("!x="+(!x));

  }

  }

    2.编译程序,输入命令:

  c:javastudy> javac test601.java

    3.编译完成后,执行这个程序了。输入命令:

  c:javastudy> java test601

    这个程序的输出如下图所示:

    图6-1 程序test601.java的输出

    根据逻辑运算符的计算表可以得出x&&y=true&&false=false;x||y=true||false=true;x^y=true^false=true;!x=!true=false。

    传授新知

    6.1.2 char型

    char型是用来表示字母的,它仅能表示一个单一的字母。通常char型常量必须使用单引号括起来,以与数字区分开来。下面就是一个char型变量的实例:

  char letter=’a’;

    char型在Java语言中并不是很常用,因为如果要存储字符的话,一般使用扩展的数据类型string(我们将在下一小节中说明)。

    6.1.3 整型

    在Java语言中,提供了多种整型数据类型:byte、short、int、long。它们都是定义了一个整数,唯一的区别就是它们能够表示数据的范围。

    能够表示数据的范围越大,占用的内存空间也就越大,因此,在程序设计中应该选择最合适的类型来定义整数。

    大家可以根据以下规律,记住它们所占的内存空间:

    1) int是最基本的,它占用32位(现代计算机不就是32位机嘛!);

    2) long,长的,也就是比int还长,它占用64位;

    3) short,短的,也就是比short还短,它占用16位;

    4) byte,字节,8位组成一个字节,当然byte就只占8位了。

    根据它们所占用的内存空间不同,能够表示的数字范围也不同。占用内存空间越大,能够表示的数字范围也就越广。

    实例说明

    实例一:

    1.首先,我们使用以下命令调用“写字板”程序来编辑源程序。

  c:javastudy> notepad test602.java

    在写字板中,输入下面的程序代码,然后存盘退出。

    源程序:test602.java

  public class test602

  {

  public static void main(String args[])

  {

  nt x=20;

  System.out.println(x+5);

  System.out.println(x*7);

  }

  }

    2.编译程序,输入命令:

  c:javastudy> javac test602.java

    3.编译完成后,执行这个程序了。输入命令:

  c:javastudy> java test602

    这个程序的输出如下图所示:

    图6-2 test602程序输出

    实例二:

    1.首先,我们使用以下命令调用“写字板”程序来编辑源程序。

  c:javastudy> notepad test603.java

    在写字板中,输入下面的程序代码,然后存盘退出。

    源程序:test603.java

  public class test603

  {

  public static void main(String args[])

  {

  byte x=129;

  System.out.println(x+5);

  }

  }

    2.编译程序,输入命令:

  c:javastudy> javac test603.java

    在编译这个程序时,将无法通过,出现以下问题:

    图6-3 编译test603.java时出错信息

    这是为什么呢?错在哪里呢?

    由于x是byte型数据,它占用8位空间,最大能够表示的数是128,而本例中赋给值129,超出了取值范围,所以导致了编译错误。

    传授新知

    6.1.4 浮点型

    前面我们学习了存储整数的变量数据类型,现在我们还看看存储小数的变量数据类型---浮点数。在Java语言中有两种浮点数类型:float、double。

    其中float是单精度型,占用32位内存空间,而double是双精度型,占用64位内存空间。

    浮点数:

    浮点数这个名称是相对于定点数而言的,这个点就是小数点。浮点数就是指小数点可以根据需要改位置。

    实例说明

    1.首先,我们使用以下命令调用“写字板”程序来编辑源程序。

  c:javastudy> notepad test604.java

    在写字板中,输入下面的程序代码,然后存盘退出。

    源程序:test604.java

  public class test604

  {

  public static void main(String args[])

  {

  float x1=7;

  float y1=9;

  double x2=7.0;

  double y2=9.0;

  System.out.println(x1/y1);

  System.out.println(x2/y2);

  }

  }

    2.编译程序,输入命令:

  c:javastudy> javac test604.java

    3.编译完成后,执行这个程序了。输入命令:

  c:javastudy> java test604

    这个程序的输出如下图所示:

    图6-4 test604程序输出

    同样是7/9,使用float型与使用double型,输出的结果不同,显然double型的输出的数字精度要高得多。

    自测练习

    1) 以下不属于基本数据类型的有_____________。

    a. string b.char c.double d.int

    2) 下面数据类型中___________占用的空间最大。

    a.float b.int c.long d.byte

    3) 在程序中有一表达式为short x=64589,程序能够正常编译吗?________。

    a.不能 b.能

    请说明理由:__________________________________。

    4) 请写出下列代码的输出:

  boolean x=true;

  boolean y=true;

  system.out.println(x^!y)

    ________________________________________________________________

    5) 阅读以下程序段,回答问题

  public class lianxi601

  {

  public static void main(String args[])

  {

  byte x=126;

  byte y=x+5;

  System.out.println(y);

  }

  }

    这个程序能够编译通过吗?________________

    这是因为:_______________________________________________________

    6) 请写出下列代码的输出:

  byte x=126;

  System.out.println(x+5);

    ____________________________________________________________________

    7) 假设x、y都是float型,分别等于5和7,而x1、y1则是double型,分别等于5.0和7.0,那么x/y与x1/y1的值相等吗?____________。

    a.不等 b.相等

    请说明理由:______________________________________。

    8) 假设x、y都是float型,分别等于5和8,而x1、y1则是double型,分别等于5.0和8.0,那么x/y与x1/y1的值相等吗?____________。

    a.不等 b.相等

    请说明理由:______________________________________。

    请写出检验它的程序段。

    ____________________________________________________________________

    ____________________________________________________________________

    ____________________________________________________________________

    ____________________________________________________________________

    ____________________________________________________________________

    ____________________________________________________________________

    练习答案

    1)a string型是字符串型,它不属于Java的基本数据类型。

    2)c 其中float占32位空间,int占32位空间,long占64位空间,byte占8位空间,因此是long所占的空间最大。

    3)b 不能正常编译,因为short型的取值范围是-32768-32767,而在程序中x=64589超出了这一范围,将导致编译失败。

    4)true 这个程序段将输出true,因为!运算符的优先级比^运算符优先级高,因此先计算!y,得到false,然后计算true^false,因此得到true。

    5)不能,当编译到byte y=x+5;时将会出错,这时因为这种等价于byte y=131;,而byte类型的取值范围是-127~128之间,这样的定义超出了这一范围,导致编译失败。

    6) 131

    7) a 不相等,由于5/7都将产生无限不循环小数,而float与double两种数据类型的精度不相等,因此将产生不相等的输出。

    8) b 相等,由于5/8将得到0.625,float与double两种数据类型的精度都足以表示这个值,因些将产生相等的输出。我们可以使用以下程序来检验:

  public class answer08

  {

  public static void main(String args[])

  {

  float x=5,y=8;

  double x1=5.0,y1=8.0;

  System.out.println((x/y)==(x1/y1));

  }

  }

    注意:

    我们可以使用float x=5,y=8;来代替float x=5;float y=8。

    这个程序将输出true,说明它们是相等的,验证了我们的答案。

    6.2 字符串类

    传授新知

    在上一小节中,我们讲述过字符型char,当时我们告诉大家char型变量只能存储一个字符,因此一般并不常用,而是使用string型变量来保存字符。

    string型,是一种用来存储字符串的数据类型。记得从第一章开始就见到过类似于下面的字符串型变量定义:

  String programOut;

    而且,当时我们还借用了它来说明变量的定义。

    我们可以使用两种方法来定义一个字符串:

    1) 使用变量定义的方式,例如:

  String programOut=”Hello World!!”;

    2) 使用new操作符,例如:

  String programOut=new String(”Hello World!!”);

    通常,我们使用第1种方法来定义String变量。

    实例说明

    实例一:

    1.首先,我们使用以下命令调用“写字板”程序来编辑源程序。

  c:javastudy> notepad test605.java

    在写字板中,输入下面的程序代码,然后存盘退出。

    源程序:test605.java

  public class test605

  {

  public static void main(String args[])

  {

  String firstName = “Mike”;

  String lastName = “Joeden”;

  String fullName = firstName+” “+lastName;

  System.out.println(fullName);

  }

  }

    2.编译程序,输入命令:

  c:javastudy> javac test605.java

    3.编译完成后,执行这个程序了。输入命令:

  c:javastudy> java test605

    这个程序的输出如下图所示:

    图6-5 test605程序输出

    实例二:

    1.首先,我们使用以下命令调用“写字板”程序来编辑源程序。

  c:javastudy> notepad test606.java

    在写字板中,输入下面的程序代码,然后存盘退出。

    源程序:test606.java

  public class test606

  {

  public static void main(String args[])

  {

  String programOut = “I’m enjoy java program world”;

  nt outlen = programOut.length();

  System.out.println(outlen);

  }

  }

    2.编译程序,输入命令:

  c:javastudy> javac test606.java

    3.编译完成后,执行这个程序了。输入命令:

  c:javastudy> java test606

    这个程序的输出如下图所示:

    图6-6 test606程序输出

    实例三:

    1.首先,我们使用以下命令调用“写字板”程序来编辑源程序。

  c:javastudy> notepad test607.java

    在写字板中,输入下面的程序代码,然后存盘退出。

    源程序:test607.java

  public class test607

  {

  public static void main(String args[])

  {

  String programOut = “I’m enjoy java program world”;

  nt index = programOut.indexOf(“java”);

  System.out.println(index);

  }

  }

    2.编译程序,输入命令:

  c:javastudy> javac test607.java

    3.编译完成后,执行这个程序了。输入命令:

  c:javastudy> java test607

    这个程序的输出如下图所示:

    图6-7 test607程序输出

    实例四:

    1.首先,我们使用以下命令调用“写字板”程序来编辑源程序。

  c:javastudy> notepad test608.java

    在写字板中,输入下面的程序代码,然后存盘退出。

    源程序:test608.java

  public class test608

  {

  public static void main(String args[])

  {

  String programOut = “I’m enjoy java program world”;

  String preHalf=programOut.substring(0,14);

  String backHalf=prgramOut.substring(14);

  System.out.println(preHalf);

  System.out.println(backHalf);

  }

  }

    2.编译程序,输入命令:

  c:javastudy> javac test608.java

    3.编译完成后,执行这个程序了。输入命令:

  c:javastudy> java test608

    这个程序的输出如下图所示:

    图6-8 test608程序输出

    传授新知

    字符串合并:

    通过程序test605.java,我们可以看到一个表达式:

  fullName=firstName+” “+lastName;

    通过程序的运行结果我们得知,通过这个表达式,我们可以完成字符串合并。在本例中,实现了将字符串firstName与lastName合并,并在中间加上一个空格,形成一个新的字符串fullName。

    求字符串长度:

    有时,我们需要计算出一个字符串的长度,在Java语言中提供了一个方法length()可以满足这个需求。它在Java API中定义为:

  public int length()

    其中,public代表任何外部类都可以访问它,使用它;而int则表示这个函数将返回一个整数,也就是字符串的长度值。

    例如,在程序test606.java中,我们定义了一个名为programOut的字符串变量,然后将字符串“I’m enjoy java program world”赋予了这个变量。在程序中,通过调用length得到了这个字符串的长度:28,并且打印到屏幕上。

  nt outlen=programOut.length()

    注意,在这里调用length方法的格式:programOut.length。

    在字符串中查找:

    在字符串操作的程序中,经常需要在一个字符串中查找某一个单词,我们可以使用Java语言中的一个方法indexOf()来满足这个需求。它在Java API中的定义是:

  public int indexOf(String findMe)

    同样,public代表任何外部类可以访问它,而int表示它将返回一个整数值,也就是在字符串中包含要查找的单词findMe的第一个出现位置。

    在程序test607.java中,我们就使用了这个函数在字符串:“I’m enjoy java program world”中查找单词java所在位置。那么,为什么返回值是10呢?这时因为:

    字符串中每个字符都有一个在该字符串中的位置。第一个字符的位置是0,第二个字符的位置为1,以此类推。(注意,是字符,也就是包括数字、字母、标点符号,还包括空格。)所以,java所处在的位置就是10,如下图所示:

    图6-9 字符串位置示意图

    求子串方法

    子串是字符串的一部分。在一些字符串操作的程序中,经常会需要求一个字符串的子串。我们可以通过使用Java语言提供的求子串方法substring来实现。在Java API中是这样定义它的:

  public String substring(int startIndex)

  public String substring(int startIndex,endIndex)

    这个方法的定义很明显,它是一个可供所有外部类调用的方法(public指定);它将返回一个字符串(返回值类型是String);这个方法在调用时必须给参数,参数有两种形式:

    1) 一种是给出开始位置,表示从指定的开始位置开始,直到字符串结束;

    2) 另一种是给出开始位置和结束位置,表示从指定的开始位置开始,直到结束位置。

    我们从程序test608.java的输出中就可以很明显地知道。

    自测练习

    1) 代码”Hello,”+”World!!”的结果是什么?________________。

     a. “Hello,+World!!” b.出错

     c.”Hello,World!!” d.”Hello, World!!”

    2) 返回字符串的长度(字符数)的方法是____________。

    a.width() b.size() c.length()

    3) 若有字符串test=”I love java!”,那么test.indexOf(“java”)=______。

    a. 8 b. 7 c.6 d. 5

    4) 阅读以下程序段,回答问题:

  public class lianxi602

  {

  public static void main(String args[])

  {

  String programOut=”I love java program language”;

  String key=”love”;

  nt index=programOut.indexOf(key);

  System.out.println(“Found key at “+index);

  }

  }

    这段程序将产生什么样的输出:

    ___________________________________________________________________

    如果把Key的值改为“java”,则程序将输出什么?

    ___________________________________________________________________

    编写代码,使用substring方法从字符串programOut中摘出单词“language”。

    ___________________________________________________________________

    你能想出更好的完成上一任务的方法吗?

    ___________________________________________________________________

    ___________________________________________________________________

    5) 根据给定的以下代码:

  String str01=”I’ll use java language”;

  String str02=”haha,very good”;

    写出产生以下输出的程序:

    图6-10 练习题图

    ___________________________________________________________________

    ___________________________________________________________________

    练习答案

    1)c 对于字符串而言,+号完成的功能是字符串合并。第一个答案“Hello,+World!!”多了个+,最后一个答案“Hello, World!!”多了个空格。

    2)c Java语言提供了一个叫length()的方法,能够计算字符串的长度。

    3)b 因为字符串的位置是从0算起的,所有的字母、数字、标点、空格都应计算在内,所以应该为7.

    4)§ 这个程序的输出是Found key at 2;

    § 如果将key的值改为“java”的话,程序的输出将变成:Found key at 7;

    § 可以使用程序:

  String substr=programOut.substring(20);

    § 可以使用程序:

  nt index=prograOut.indexOf(“language”)

  String substr=programOut.substring(index);

    6) 可以使用以下程序:

  System.out.println("Length of ´"+str01+"´ is: "+str01.length());

  System.out.println("Length of ´"+str02+"´ is: "+str02.length());

    6.3 数组

    实例说明

    1.首先,我们使用以下命令调用“写字板”程序来编辑源程序。

  c:javastudy> notepad arrayTest.java

    在写字板中,输入下面的程序代码,然后存盘退出。

    源程序:arrayTest.java

  public class arrayTest

  {

  public static void main(String args[])

  {

  nt intArray[ ]={30,20,10,-10};

  String stringArray[ ]={“first”,”second”,”third”};

  System.out.println(intArray[0]);

  System.out.println(intArray[1]);

  System.out.println(intArray[2]);

  System.out.println(intArray[3]);

  System.out.println(stringArray.length);

  }

  }

    2.编译程序,输入命令:

  c:javastudy> javac arrayTest.java

    3.编译完成后,执行这个程序了。输入命令:

  c:javastudy> java arrayTest

    这个程序的输出如下图所示:

    图6-11 arrayTest.java程序输出

    传授新知

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章