java的数据类型是强类型意思就是要求每一个变量或常量都要有明确的数据类型
2.为什么要转换?
java编译器在编译时都会对每一个变量或常量进行检查,相同的数据类型才能进行一些操作
比如说//i为整形inti=0;
//c为char类型charc='1';
这个时候对i和c做相加操作,就会抛出异常
Byteb=1,c=2;Bytea=b+c;b+c的结果是int型,存储时需要2个字节,byte存储时为1个字节。Bytea=b+c是指把一个int型的数装在byte里面。这相当于把一个卡车放在一个只能允许小汽车进入的停车厂,它装不进去。所以引起了异常。
3.什么是存储单位?字位(bit)是计算机存储信息的最小单位,存放一位二进制数,即0或1。1个字节(byte)=8位一个数字1个占字节一个英文占1个字节一个汉字占2个字节1KB(Kilobyte千字节)=1024B,1MB(Megabyte兆字节简称“兆”)=1024KB,1GB(Gigabyte吉字节又称“千兆”)=1024MB,1TB(Trillionbyte万亿字节太字节)=1024GB,1PB(Petabyte千万亿字节拍字节)=1024TB,1EB(Exabyte百亿亿字节艾字节)=1024PB,1ZB(Zettabyte十万亿亿字节泽字节)=1024EB,1YB(Jottabyte一亿亿亿字节尧字节)=1024ZB,1BB(Brontobyte一千亿亿亿字节)=1024YBByte有1个字节Short有2个字节Int有4个字节Long有8个字节Float有4个字节Double有8个字节Character有2个字节Boolean有1个位4.Java语言的数据类型有哪几类,java的可移植能力?Java决定了每种简单类型的大小。这些大小并不随着机器结构的变化而变化。这种大小的不可更改正是Java程序具有很强移植能力的原因之一。以int和Integer为例来说,虽然从本质上它们都代表一个32位的整数,但它们却是不同的数据类型。事实上,Java中直接使用的整数都为int(就int和Integer而言),只有当数据必须作为对象的身份出现时,才必须用int对应的封装器Intege将整数值封装成对象。简单类,二进制位数,封装器类;1.byte,1,Byte;2.short,8,Short;3.int,16,Int;4.long,16,Long;5.float,32,Flaot;6.double,64,Double;7.character,32,Character;8.boolean,64,boolean;引用类5.简单数据类型之间的转换?自动转换:一个较“小”数据与一个较“大”的数据一起运算时,系统将自动将“小”数据转换成“大”数据,再进行运算。一个较“小”数据与一个较“大”的数据一起运算时,系统将自动将“小”数据转换成“大”数据,再进行运算。一个较“小”数据与一个较“大”的数据一起运算时,系统将自动将“小”数据转换成“大”数据,再进行运算。Byte->short(char)->int->long->float->double①下面的语句可以在Java中直接通过:byteb;inti=b;longl=b;floatf=b;doubled=b;②如果低级类型为char型,向高级类型(整型)转换时,会转换为对应ASCII码值,例如charc='c';inti=c;System.out.println(\"output:\"+i);输出:output:99;③对于byte,short,char三种类型而言,他们是平级的,因此不能相互自动转换,可以使用下述的强制类型转换。shorti=99charc=(char)i;System.out.println(\"output:\"+c);输出:output:c;④对象多态中若有方法:f(bytex){……};f(shortx){……};f(intx){……};f(longx){……};f(floatx){……};f(doublex){……};又有:chary=’A’;那么,语句f(y)会调用哪一个方法呢?答案是:f(intx){……}方法,因为它的形参比实参“大”且是最“接近”的。而对于方法:f(floatx){……};f(doublex){……};又有:longy=123L;那么,语句f(y)调用的方法则是f(floatx){……}。强制转换:将“大”数据转换为“小”数据时,你可以使用强制类型转换。即你必须采用下面这种语句格式:intn=(int)3.14159/2;可以想象,这种转换肯定可能会导致溢出或精度的下降。①当字节类型变量参与运算,java作自动数据运算类型的提升,将其转换为int类型。byteb;floatb=3;b=(byte)(b*3);//必须声明byte。f;f=1.3f;//必须声明f。②带小数的变量默认为double类型。包装类过渡类型转换:一般情况下,我们首先声明一个变量,然后生成一个对应的包装类,就可以利用包装类的各种方法进行类型转换了。例如:①当希望把float型转换为double型时:floatf1=100.00f;FloatF1=newFloat(f1);doubled1=F1.doubleValue();//F1.doubleValue()为Float类的返回double值型的方法②当希望把double型转换为int型时:doubled1=100.00;DoubleD1=newDouble(d1);inti1=D1.intValue();简单类型的变量转换为相应的包装类,可以利用包装类的构造函数。即:Boolean(booleanvalue)、Character(charvalue)、Integer(intvalue)、Long(longvalue)、Float(floatvalue)、Double(doublevalue)而在各个包装类中,总有形为××Value()的方法,来得到其对应的简单类型数据。利用这种方法,也可以实现不同数值型变量间的转换,例如,对于一个双精度实型类,intValue()可以得到其对应的整型变量,而doubleValue()可以得到其对应的双精度实型变量。####################3.字符串与其它类型间的转换⑴其它类型向字符串的转换1调用类的串转换方法:X.toString();2②自动转换:X+“”;③使用String的方法:String.volueOf(X);⑵字符串作为值,向其它类型的转换①先转换成相应的封装器实例,再调用对应的方法转换成其它类型例如,字符中“32.1”转换double型的值的格式为:newFloat(“32.1”).doubleValue()。也可以用:Double.valueOf(“32.1”).doubleValue()②静态parseXXX方法Strings=\"1\";byteb=Byte.parseByte(s);shortt=Short.parseShort(s);inti=Integer.parseInt(s);longl=Long.parseLong(s);Floatf=Float.parseFloat(s);Doubled=Double.parseDouble(s);③Character的getNumericValue(charch)方法具体可查阅api。4.Date类与其它数据类型的相互转换整型和Date类之间并不存在直接的对应关系,只是你可以使用int型为分别表示年、月、日、时、分、秒,这样就在两者之间建立了一个对应关系,在作这种转换时,你可以使用Date类构造函数的三种形式:①Date(intyear,intmonth,intdate):以int型表示年、月、日②Date(intyear,intmonth,intdate,inthrs,intmin):以int型表示年、月、日、时、分③Date(intyear,intmonth,intdate,inthrs,intmin,intsec):以int型表示年、月、日、时、分、秒在长整型和Date类之间有一个很有趣的对应关系,就是将一个时间表示为距离格林尼治标准时间1970年1月1日0时0分0秒的毫秒数。对于这种对应关系,Date类也有其相应的构造函数:Date(longdate)。获取Date类中的年、月、日、时、分、秒以及星期你可以使用Date类的getYear()、getMonth()、getDate()、getHours()、getMinutes()、getSeconds()、getDay()方法,你也可以将其理解为将Date类转换成int。而Date类的getTime()方法可以得到我们前面所说的一个时间对应的长整型数,与包装类一样,Date类也有一个toString()方法可以将其转换为String类。有时我们希望得到Date的特定格式,例如20020324,我们可以使用以下方法,首先在文件开始引入,importjava.text.SimpleDateFormat;importjava.util.*;java.util.Datedate=newjava.util.Date();//如果希望得到YYYYMMDD的格式SimpleDateFormatsy1=newSimpleDateFormat(\"yyyyMMDD\");StringdateFormat=sy1.format(date);//如果希望分开得到年,月,日SimpleDateFormatsy=newSimpleDateFormat(\"yyyy\");SimpleDateFormatsm=newSimpleDateFormat(\"MM\");SimpleDateFormatsd=newSimpleDateFormat(\"dd\");Stringsyear=sy.format(date);Stringsmon=sm.format(date);Stringsday=sd.format(date);
因篇幅问题不能全部显示,请点此查看更多更全内容