八大基本数据类型及包装类(装箱拆箱)
一、八大基本数据类型
八大基本数据类型包括:整数类型(byte、short、int、long),浮点类型(float、double),字符类型(char),布尔类型(boolean)
byte:8位,占用空间为1字节,最多存储数据量是255,存放的数据范围为-128~127之间。
short:16位,占用空间为2字节,最大数据存储量为65536,数据范围为-32768~32767。
int:32位,占用空间为4字节,最大数据存储量为232-1,数据范围为-231~231-1。
long:64位,占用空间位8字节,最大数据存储量为264-1,数据范围为-263~263-1。
float:32位,占用空间为4字节,数据范围为3.4e45~1.4e38,直接赋值时必须在数字后加上f或f。
double:64位,占用空间为8字节,数据范围为4.9e324~1.8e308,赋值时可以加d或d,也可以不加。
boolean:占内存1字节,可存储true与false两个数值,分别表示逻辑的真与假。
char:16位,存储unicode码,用单引号赋值。
范围从小到大依次为:byte、short、char、int、long、float、double
二、包装类
2.1 java为每种基本数据类型分别设计了对应的类,称之为包装类。
基本数据类型 | 对应的包装类 |
byte | byte |
short | short |
int | integer |
long | long |
char | character |
float | float |
double | double |
boolean | boolean |
每个包装类的对象可以封装一个相应的基本数据类型的数据,并提供了其他一些有用的方法。包装类对象一经创建,其内容不可改变。
基本数据类型与包装类的相互交换:
由基本数据类型向对应的包装类转换称为装箱,例如把int包装成integer类的对象。
由包装类相对应的基本数据类型转换称为拆箱,例如把integer类的对象重新简化为int。
2.2 包装类的应用
1)实现int和integer的相互转换
可以通过integer类的构造方法将int装箱,通过integer类的intvalue方法对integer拆箱。
1 public static void main(string[] args) { 2 int m = 500; 3 integer iobj = new integer(m); 4 int n = iobj.intvalue(); 5 system.out.println("n=" + n); 6 7 integer iobj2 = new integer(500); 8 system.out.println("iobj 等价于 obj2 ?" + iobj.equals(iobj2)); 9 } 10 /* 11 n=500 12 iobj 等价于 obj2 ? true 13 */
2)将字符串转换为整数
integer类有一个静态的parseint()方法,可以将字符串转换为整数。
语法为parseint(string s,int radix);其中s为要转换的字符串,radix为进制(默认为十进制)。
1 public static void main(string[] args) { 2 string str[] = {"123", "123abc", "435ssa", "abcxyz", "aa", "a"}; 3 for(string elemstr : str){ 4 try{ 5 int inumber = integer.parseint(elemstr, 10); 6 system.out.println("ok."); 7 }catch(exception e){ 8 system.out.println("can not cast to int type."); 9 } 10 } 11 }
3)将整数转换为字符串
integer类有一个静态的tostring()方法,可以将整数转换为字符串。
1 int myintvalue = 999; 2 string intstr = integer.tostring(myintvalue); 3 system.out.println("value is " + intstr); 4 // value is 999
三、自动拆箱和装箱
自动拆箱:对象转换成基本数值
自动装箱:基本数值转换成对象
1 int m = 500; 2 integer obj = m; 3 int n = obj; 4 system.out.println("n = " + n); 5 integer obj1 = 500; 6 system.out.println("iobj 等价于 obj2 ?" + obj.equals(obj1)); 7 /* n = 500 8 iobj 等价于 obj2 ?true 9 */
四、小结
1.常用方法
1 public int parseint(string str):把字符串转成基本类型int 2 public static string tostring(int x):把基本类型int转成字符串 3 public static integer valueof(int x):把基本类型i字符串转成integer对象 4 public int intvalue():以 int类型返回该包装类对象的值
2.system类:系统属性信息工具
1 public static long currenttimemillis():获取当前系统时间与1970年01月01日00:00点之间的毫秒差值 2 public static void exit(int status):用来结束正在运行的java程序。参数通常传入0记为正常状态,其他为异常状态 3 public static void gc():用来运行jvm中的垃圾回收器,完成内存中垃圾的清除。 4 public static string getproperties():用来获取系统属性信息
3.arrays类:数组操作工具类
1 public static void sort方法,用来对指定数组中的元素进行排序(元素值从小到大进行排序) 2 public static string tostring方法,用来返回指定数组元素内容的字符串形式 3 public static void binarysearch方法,在有序数组中,查找给定元素值出现的位置。若没有查询到,返回位置为插入点-1。
4.math类:数字运算工具类
1 abs方法,结果都为正数 2 ceil方法,结果为比参数值大的最小整数的double值 3 floor方法,结果为比参数值小的最大整数的double值 4 max方法,返回两个参数值中较大的值 5 min方法,返回两个参数值中较小的值 6 pow方法,返回第一个参数的第二个参数次幂的值 7 round方法,返回参数值四舍五入的结果 8 random方法,产生一个大于等于0.0且小于1.0的double小数