四、包装类:
当引用的时候,引用实体放在堆中,引用名放在栈中。
每一个基本数据类型都对应一个包装类。
- 包装类的使用
1、代码段里有知识点的彩蛋呦
package com.atguigu.cn03;
import org.junit.Test;
//包装类8种基本数据类型对应着一个类,此类即为包装类。
//基本数据类型 & 包装类 & String之间的相互转换
public class TestWrapper {
//2、基本数据类型 & 包装类 与String类间的转换
@Test
public void test2() {
//基本数据类型 & 包装类-->String类;调用String类的静态的重载的valueOf(类型 变量)方法
int i1=10;
String str1=i1+"";
String str2=String.valueOf(i1); //int型-->String类型
String str3=String.valueOf(true); //boolean类型-->String类
//String类-->基本数据类型 & 包装类:调用包装类的parseXxxx(String str)方法。
int i3=Integer.parseInt(str2);
System.out.println(i3);
boolean b1=Boolean.parseBoolean(str3);
System.out.println(b1);
}
//1、基本数据类型与包装类之间的转换
@Test
public void test1() {
int i=10;
boolean b=false;
Integer i1=new Integer(i);
//1-1、将基本数据类型转换为对应的包装类后,可以调用包装类的构造器,调用toString等方法。
System.out.println(i1.toString());
Float f=new Float("12.56"); //括号还可以是12.3f
System.out.println(f);
//java.lang.NumberFormatException
// i1=new Integer("12abc");
// System.out.println(i1);
//对于Boolean类型来讲,当形参是"true"返回true,除此之外返回false
Boolean b1=new Boolean("false");
System.out.println(b1);
b1=new Boolean("truea");
System.out.println(b1);
//1-2、包装类转换为基本数据类型
int i2=i1.intValue();
System.out.println(i2);
float f1=f.floatValue();
boolean b2=b1.booleanValue();
//JDK5.0以后,有自动装箱和拆箱
Integer i3=12; //自动装箱//即:int i4; Integer i3=i4;
int i5=i3; //自动拆箱
}
}
2、包装类的练习测试:
代码详解:
package com.atguigu.cn03;
import java.util.Scanner;
import java.util.Vector;
public class TestWrapExercise {
public static void main(String[] args) {
//1、创建Scanner的对象,提示从键盘输入学生的成绩(以负数代表输入结束)
Scanner s=new Scanner(System.in);
System.out.println("请输入学生的成绩,(以负数结束)");
//2、for(;;),从键盘依次获取学生成绩,并填入由Vector v=new Vector()创建的对象v中。
Vector v=new Vector();
int maxScore=0;//记录最高分
for(;;) {
int score=s.nextInt();
if(score<0) {
break;
}
//3、求出所有输入的正的成绩中的最高分
//获取学生成绩中的最高分
if(maxScore<score) {
maxScore=score;
}
//依次将学生成绩存入V中
Integer score1=new Integer(score);
v.addElement(score1); //自动装箱
}
//4、通过v.elementAt(i)依次获取填入v中的元素,同时判断一下各个分数的等级并输出。
for(int i=0;i<v.size();i++) {
Integer score=(Integer)v.elementAt(i);
char level;
if(maxScore-score<=10) {
level='A';
}else if(maxScore-score<=20) {
level='B';
}else if(maxScore-score<=30) {
level='C';
}else {
level='D';
}
System.out.println("学生成绩为:"+score+",成绩等级为:"+level);
}
}
}
-
五、单元测试:
使用方法:(1)、当前工程下右键àBuild Path;àAdd Libraries…;àJunit点击”next”;à选择”Junit4”;àfinish.
(2)、当前工程下右键àBuild Path;àConfigure Build Path;à左侧栏找到”Java Build Path”à右侧顶部的Librariesà右侧的第四个Add Libraries…;àJunit点击”next”;à选择”Junit4”;àfinish.
单元测试在自定义的函数上方加@Test,这样的话自定义函数就相当于一个main()函数;也可以调用其他函数。
实例观察:
package com.atguigu.cn03;
import org.junit.Test;
public class JunitTest {
public static void main(String[] args) {
System.out.println("Hello");
}
@Test
public void test01() {
String str="Hello";
System.out.println(str+",World!");
say();
}
public void say() {
System.out.println("L!O!V!E!");
}
}
项目上Run As àJunit Testà
结果:
Hello,World!
L!O!V!E!