《java入门实验.docx》由会员分享,可在线阅读,更多相关《java入门实验.docx(92页珍藏版)》请在优知文库上搜索。
1、java入门实验1. Java的简单类型及其封装器类1.1 JaVa简单类型与封装类我们知道,Java语言是典型的支持面向对象的程序语言,但考虑到有些基本数据类型的结构简单,占内存小且存取速度快等优点,Java依然提供了对这些非面向对象的简单数据类型的支持。当然,Java在提供大量的其它类时,也提供了与简单数据类型对应的封装类,于是,Java中就有了诸如int和Integer(float和Float、double和Double)的不同的数据类型。Java语言的数据类型有两大类:一类是简单类型,也称主要类型(PrimitiVe),另一类是引用类型(ReferenCe)。简单类型变量中存储的是具体
2、的值,而引用类型的变量中存储的是对象的引用。Java决定了每种简单类型的大小。这些大小并不随着机器结构的变化而变化。这种大小的不可更改正是Java程序具有很强移植能力的原因之一。下表列出了Java中定义的简单类型、占用二进制位数及对应的封装器类。表JaVa中的简单类型简单类型booleanbytecharshortintlongfloatdoublevoid二进制位数18161632643264-封装器类BooleanByteCharaCterShortInte9rLongFloatDoubleVoid1.2为什么使用封装类以int和Integer为例来说,虽然从本质上它们都代表一个32位的整
3、数,但它们却是不同的数据类型。事实上,Java中直接使用的整数都为int(tint和Integer而言),只有当数据必须作为对象的身份出现时,才必须用int对应的封装器Intege将整数值封装成对象。例如:为给java.util包中的Vector添加一个整数,就必须如下将该整数值封装在一个Integer实例中二Vectorv=newVector();int;v.addElemt(newlnteger(k);另夕卜,Integer作为int对应的封装器类,提供了许多的方法,比如:Integer的构造方法、Integer向其它各种数值类型的转换方法等等,而这些是int类型数据所没有的。2. Jav
4、a中的常量我们需要注意以下几种类型的常量。2.1 十六进制整型常量以十六进制表示时,需以OX或OX开头,0xff,0X9Ao2.2 八进制整型常量八进制必须以0开头,如0123,034。2.3 长整型长整型必须以L作结尾,如9L,342L2.4 浮点数常量由于小数常量的默认类型是double型,所以float类型的后面一定要加f(F)。同样带小数的变量默认为double类型。floatf;f=L3f;必须声明fo2.5 字符常量字符型常量需用两个单引号括起来(注意字符串常量是用两个双引号括起来)。JaVa中的字符占两个字节。一些常用的转义字符。r表示接受键盘输入,相当于按下了回车键;n表示换行
5、;t表示制表符,相当于Table键;b表示退格键,相当于BackSpace键;表示单引号;7表示双引号;表示一个斜杠。3.简单数据类型之间的转换简单类型数据间的转换,有两种方式:自动转换和强制转换,通常发生在表达式中或方法的参数传递时。3.1自动转换具体地讲,当一个较“小”数据与一个较“大”的数据一起运算时,系统将自动将“小”数据转换成“大”数据,再进行运算。而在方法调用时,实际参数较“小”,而被调用的方法的形式参数数据又较“大”时(若有匹配的,当然会直接调用匹配的方法),系统也将自动将“小”数据转换成“大”数据,再进行方法的调用,自然,对于多个同名的重载方法,会转换成最“接近”的“大”数据并
6、进行调用。这些类型由小“到大”分别为(byte,short,char)intlong-floatdouble0这里我们所说的“大”与“小”,并不是指占用字节的多少,而是指表示值的范围的大小。请看下面的示例:下面的语句可以在JaVa中直接通过:byteb;inti=b;longl=b;floatf=b;doubled=b;如果低级类型为char型,向高级类型(整型)转换时,会转换为对应ASCII码值,例如charc=tc;inti=c;System.out.Println(oUtPUt:+i);输出:output:99;对于byte,short,char三种类型而言,他们是平级的,因此不能相互自
7、动转换,可以使用下述的强制类型转换。shorti=99;charc=(char)i;System,out.printin(,zoutput:zz+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)。3. 2强制转换将“大
8、”数据转换为“小”数据时,你可以使用强制类型转换。即你必须采用下面这种语句格式:intn=(int)3.14159/2;可以想象,这种转换肯定可能会导致溢出或精度的下降。3. 3表达式的数据类型自动提升关于类型的自动提升,注意下面的规则。所有的byte,short,char型的值将被提升为int型;如果有一个操作数是long型,计算结果是long型;如果有一个操作数是float型,计算结果是float型;如果有一个操作数是double型,计算结果是double型;例,byteb;b=3;b=(byte)(b*3);必须声明byte4. 4包装类过渡类型转换一般情况下,我们首先声明一个变量,然后
9、生成一个对应的包装类,就可以利用包装类的各种方法进行类型转换了。例如:当希望把float型转换为double型时:floatfl=100.OOf;FloatFl=newFloat(fl);doubledl=Fl.doublcValuc();FLdoUbIeValUe()为Float类的返回double值型的方法当希望把double型转换为int型时:doubledl=100.00;DoubleDl=newDouble(dl);intil=Dl.intValue();简单类型的变量转换为相应的包装类,可以利用包装类的构造函数。即:Boolean(booleanvalue)、Character(c
10、harvalue)Integer(intvalue)Long(longvalue)Float(floatvalue)Double(doublevalue)而在各个包装类中,总有形为XXVaIUe()的方法,来得到其对应的简单类型数据。利用这种方法,也可以实现不同数值型变量间的转换,例如,对于一个双精度实型类,intValue()可以得到其对应的整型变量,而doubleVaue()可以得到其对应的双精度实型变量。5. 字符串与其它类型间的转换5.1 其它类型向字符串的转换调用类的串转换方法:X.toString();自动转换:X+“”;使用String的方法:String.volueOf(X);
11、5.2 字符串作为值,向其它类型的转换先转换成相应的封装器实例,再调用对应的方法转换成其它类型例如,字符中“32.1”转换double型的值的格式为二newFIOat(“32.1).doubleValue()o也可以用:DoUble.valuef(“32.1).doubleValue()静态parseX方法StringS=T;byteb=Byte.parseByte(s);shortt=Short.parseShort(s);inti=Integer.parselnt(s);longI=Long.parseLong(s);Floatf=Float.parseFloat(s);Doubled=D
12、ouble.parseDouble(s);CharaCter的getNumericValue(charCh)方法具体可查阅apio6. Date类与其它数据类型的相互转换整型和Date类之间并不存在直接的对应关系,只是你可以使用int型为分别表示年、月、日、时、分、秒,这样就在两者之间建立了一个对应关系,在作这种转换时,你可以使用Date类构造函数的三种形式:Date(intyear,intmonth,intdate):以int型表示年、月、日Date(intyear,intmonth,intdate,inthrs,intmin):以int型表示年、月、日、时、分Date(intyear,in
13、tmonth,intdate,inthrs,intmin,intsec):以int型表示年、月、日、时、分、秒在长整型和Date类之间有一个很有趣的对应关系,就是将一个时间表示为距离格林尼治标准时间1970年1月1日。时0分0秒的毫秒数。对于这种对应关系,Date类也有其相应的构造函数:Date(Iongdate)o获取Date类中的年、月、日、时、分、秒以及星期你可以使用Date类的getYear().getMonth()gelDaleO、getHours0kgetMinutesO*getSeconds()get.Day()方法,你也可以将其理解为将Date类转换成into而Date类的ge
14、tTime()方法可以得到我们前面所说的一个时间对应的长整型数,与包装类一痒,Date赛也看一个toString6,法可以将其转换为String类。有时我们希望得到Date的特定格式,例如20020324,我们可以使用以下方法,首先在文件开始引入,importjava.text.SimpleDateFormat;importjava.util.*;java.util.Datedate=newjava.util.DateO;如果希望得到YYYYMMDD的格式SimpleDateFormatsyl=newSimpleDateFormat(yyyyMMDD*);StringdateFormat=sy
15、l.format(date);如果希望分开得到年,月,日SimpleDateFormatsy=ncwSimpleDateFormat(*yyyy*);SimpleDateFormatsm=ncwSimpleDatcFormat(*MM*);SimpleDatcFormatsd=newSimpleDateFormatCdcT);Stringsyear=sy.format(date);Stringsmon=sm.format(date);Stringsday=sd.format(date);【实验题11安装JDK步骤如下。1 .打开JDK安装程序,按照提示进行JDK的安装。.环境变量的设定1.右击【我的电脑】,选择属性命令,在高级属性里,切换到高级选项卡,点击环境变量按钮。2 .在系