一、数据类型基础
3.1什么是数据类型?
数据类型是一组性质相同的值的集合以及定义在这个值集合上的一组操作的总称(集合是指具有某种特定性质的具体的或抽象的对象汇总而成的集体。)
3.2数据类型的分类?
一、基本数据类型:基本数据类型有八种(byte,short,int,long,float,double,char,boolean)
1.byte(字节型):内存占一个字节,取值范围 -128~127
2.short(短整型):内存占一个字节,取值范围 -32768~32767
http://3.int(整型):内存占4个字节,取值范围 取值范围:-2的31次方~2的31次方减1读作:负二十一亿四千七 百四十八万三千六百四十八~读作:二十一亿四千七百四十八万三千六百四十七)
4.long(长整型):内存占8个字节,取值范围 取值范围:-2的63次方~2的63次方-1
5.float(单精度浮点型):内存占4个字节, 取值范围:1.4013E-45~3.4028E+38
6.double(双精度浮点型):内存占8个字节,取值范围:4.9E-324~1.7977E+308
7.char(字符型):内存占2个字节,取值范围:0~65535
8.boolean(布尔型):内存占1个字节,取值范围:true或flase
二、引用数据类型
除八种基本数据类型以外的数据类型都属于引用数据类型 如:类,数组,接口,字符串
3.3数据类型的注意事项?
1.Java中的默认类型:整数类型是 int 、浮点类型是 double 。
2.char类可以存储一个汉字,一个汉字占2个字节
二、数据类型的转换
3.4为什么要进行数据类型转换?
由于Java程序中要求参与的计算的数据,必须要保证数据类型的一致性,如果数据类型不一致将发生类型转换异常。
3.5数据类型转换的方式?
数据类型的转换方式有2种:自动类型转换和强制类型转换
自动类型转换:将 取值范围小的类型 自动提升为 取值范围大的类型 (范围小的类型向范围大的类型提升, byte 、short、char 运算时直接提升为 int 。) byte、short、char‐‐>int‐‐>long‐‐>float‐‐>double
强制类型转换:将 取值范围大的类型 强制转换成 取值范围小的类型 。如:int i = (int)1.5;
3.6强制类型转换的注意事项
- 强制类型转换一般不推荐使用,因为有可能发生精度损失、数据溢出。
byte/short/char这三种类型都可以发生数学运算.
如 char zifu1 = 'A'; // 这是一个字符型变量,里面是大写字母A System.out.println(zifu1 + 1); // 66,也就是大写字母A被当做65进行处理 // 计算机的底层会用一个数字(二进制)来代表字符A,就是65 // 一旦char类型进行了数学运算,那么字符就会按照一定的规则翻译成为一个数字
- byte/short/char这三种类型在运算的时候,都会被首先提升成为int类型,然后再计算。
- boolean类型不能发生数据类型转换
Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。 Java为每个原始类型提供了封装类。 原始类型封装类 boolean Boolean char Character byte Byte short Short int Integer long Long float Float double Double 引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速 度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量 的缺省值为null,而原始类型实例变量的缺省值与它们的类型有关。
补充:有了基本类型为什么还要有包装类型呢?
我们知道Java是一个面相对象的编程语言,基本类型并不具有对象的性质,为了让基本类型也具有对象的特征,就出现了包装类型(如我们在使用集合类型Collection时就一定要使用包装类型而非基本类型),它相当于将基本类型“包装起来”,使得它具有了对象的性质,并且为其添加了属性和方法,丰富了基本类型的操作。
另外,当需要往ArrayList,HashMap中放东西时,像int,double这种基本类型是放不进去的,因为容器都是装object的,这是就需要这些基本类型的包装器类了。
2.我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,请你讲讲如何输出一个某种编码的字符串?
Public String translate (String str) { String tempStr = “”; try { tempStr = new String(str.getBytes(“ISO-8859-1″), “GBK”); tempStr = tempStr.trim(); } catch (Exception e) { System.err.println(e.getMessage()); } return tempStr; }
3.请你说明String 和StringBuffer的区别
JAVA 平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用StringBuffers来动态构造字符数据。
4.请你讲讲Java支持的数据类型有哪些?什么是自动拆装箱?
Java语言支持的8种基本数据类型是: byte short int long float double boolean char 自动装箱是Java编译器在基本数据类型和对应的对象包装类型之间做的一个转化。比如:把int转化成Integer,double转化成Double,等等。反之就是自动拆箱。