课外天地 李树青学习天地Java程序语言课件 → 课件2下载——Java数据类型之一


  共有17500人关注过本帖树形打印复制链接

主题:课件2下载——Java数据类型之一

帅哥哟,离线,有人找我吗?
admin
  1楼 博客 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 管理员
等级:管理员 帖子:1939 积分:26594 威望:0 精华:34 注册:2003/12/30 16:34:32
课件2下载——Java数据类型之一  发帖心情 Post By:2006/2/26 21:12:29 [只看该作者]

Java的数据类型

Java的数据类型主要分为两种,一为基本类型,二为引用类型。前者包含整型、浮点型、字符型和布尔型,后者主要与使用类对象有关。

1、基本类型简介 1、1 整型 简单的使用如 public class exec { public static void main(String args[]) { int i=0; System.out.println(i); } } 输出为0

也可以使用其他进制的数据来赋值,如 public class exec { public static void main(String args[]) { int i=0x30; System.out.println(i); } } 输出为:48 注意:x或者X都是可以的

Java的整型包含四种子类型,分别为byte,short,int和long,各自的长度分别为1字节、2字节、4字节和8字节,用在不同的情况下,如byte类型适用于数据较小的情况,而且可以节省内存空间的占用,而long类型可以表达的整型数据显然是最大的。不同类型间的相互转换要防止精度的丢失问题,如 public class exec { public static void main(String args[]) { byte i=256; System.out.println(i); } } 编译会报错,“possible loss of precision”,但是使用强制类型转换,就可以成功运行。

public class exec { public static void main(String args[]) { byte i=(byte)256; System.out.println(i); } } 输出为0

请问下面的程序将会怎样?你知道为什么吗? public class exec { public static void main(String args[]) { byte i=128; System.out.println(i); } }

提示:byte类型只有一个字节,保存的数据却是有符号数据。

1、2 浮点型 有两种子类型,一为float,二为double。如 public class exec { public static void main(String args[]) { double i=1.25; System.out.println(i); } }

这两种类型字节数分别为4和8,所以精度并不一样,所以相互之间的转换要注意精度丢失问题。如 public class exec { public static void main(String args[]) { float i=1.25; System.out.println(i); } } 编译会报错,主要原因在于1.25作为浮点型常量,默认为double型,所以从double到float进行转换,Java认为存在“可能的精度丢失”。可以通过强制类型转换来克服,如

public class exec { public static void main(String args[]) { float i=(float)1.25; System.out.println(i); } }

更简单的做法是将常量说明成float类型,如 public class exec { public static void main(String args[]) { float i=1.25F; System.out.println(i); } } 注意:F大小写没有关系,都是可以的。

1、3 字符型 Java的字符型是两个字节,存放数据的Unicode码,因此保存汉字信息显得相当简单,如public class exec { public static void main(String args[]) { char i='南'; System.out.println(i); } } 输出为:南

注意:只能使用单引号而不能使用双引号,否则就是字符串对象了。

请问下面的程序将会怎样?你知道为什么吗? public class exec { public static void main(String args[]) { char i='\n'; System.out.println(i); } } 提示:\n表示转义字符,输出一个空换行

1、4 布尔型 用一个位来表示,值为true或者false,如 public class exec { public static void main(String args[]) { boolean i=true; System.out.println(i); } } 输出为:true

2、基本类型之间的相互转换 2、1 整型和字符型之间的转换 应该说,和C很相似,两者的转换相当简单,完全可以自由进行,不必使用强制转换,如 public class exec { public static void main(String args[]) { int i='A'; System.out.println(i); } } 输出为:65

再如: public class exec { public static void main(String args[]) { char i=65; System.out.println(i); } } 输出为:A

但是有时会产生一些其他问题,如 public class exec { public static void main(String args[]) { char i='A'; i=i+0x20; System.out.println(i); } } 编译会报错,原因并不在于字符和整型不能同时相加运算,相反,由于整型和字符型转换相当灵活,这样的相加完全可以实现。 编译的错误在于“possible loss of precision”,因为一个字符型数据再加上其他的整型数据,产生的结果值可能会大于一个字符所拥有的两字节能表达的范围,所以必须使用强制类型转换,如

public class exec { public static void main(String args[]) { char i='A'; i=(char)(i+0x20); System.out.println(i); } } 输出为:a 注意强制转换的用法。

上述程序可以写成: public class exec { public static void main(String args[]) { char i='A'; i=(char)(i+'z'-'Z'); System.out.println(i); } }

或者: public class exec { public static void main(String args[]) { char i='A'; i=Character.toLowerCase(i); System.out.println(i); } }

2、2 整型和浮点型之间的转换 由于具有不同的小数精度,所以精度的丢失问题将会产生,如 public class exec { public static void main(String args[]) { int i=0.5; System.out.println(i); } } 编译报错,“possible loss of precision”,解决方法为强制类型转换。

请问下面的程序将会怎样?你知道为什么吗? public class exec { public static void main(String args[]) { int i=1/2; System.out.println(i); } } 提示:1和2皆为整数,运算结果依然为整数

请问下面的程序将会怎样?你知道为什么吗? public class exec { public static void main(String args[]) { double i=1/2; System.out.println(i); } } 提示:道理和上例一样,输出为:0.0

2、3 整型和布尔型之间的转换 和C不一样,Java语言不再支持整型和布尔型之间的相互转换,即使使用强制类型转换也不行,如 public class exec { public static void main(String args[]) { boolean i=0; System.out.println(i); } } 编译会报错,“incompatible types”

所以在条件中不能使用整型来表达真假,如 public class exec { public static void main(String args[]) { int i=0; if(i=0) System.out.println(i); } } 编译会报错,“incompatible types”

修正为: public class exec { public static void main(String args[]) { int i=0; if(i==0) System.out.println(i); } }

请问下面的程序将会怎样?你知道为什么吗? public class exec { public static void main(String args[]) { boolean i=false; if(i=false) System.out.println(i); } } 提示:条件中可以使用赋值表达式,这本身不会出错,错误主要在于表达式的值(就是表达式中要赋给变量的值)只能是布尔型,而此例显然并不违反


 回到顶部