实习javaweb前准备:第八天Eclipes和Jdk5.0新特性

付费节点推荐


免费节点


节点使用教程


bestcoder_java
反射原理:
bcoder_cn_反射原理1

bcoder_cn_反射原理2

[cc lang=”java”]
1. myeclipse的安装和使用

2.debug 的调试模式(断点调试模式)
使用这种模式调试程序(可以看到程序里数据的变化)
使用debug第一步需要设置一个断点(让程序运行停止在这一行)
-双击行号,出现一个圆点,表示设置了一个断点
使用debug as方式,运行程序
-提示是否进入到调试界面,yes
-在断点那一个,有一个绿色条,表示程序停止在这一行,没有向下运行
可以让程序向下执行,
-使用setp over 快捷键是F6 (单步执行)
-resume F8:表示调试结束,直接向下运行
比如当前的断点之后还有断点就跳到下一个断点
如果当前断点后面没有断点,程序直接运行结束
debug另外一个用途
查看程序的源代码
F7 setp into:进入到方法
step return: 返回
代码:
int [] arr1={10,2,3,6,7,1,56};
//排序
Arrays.sort(arr1); //我们可以查看sort()的源代码
System.out.println(“Arrays.toString(arr1)”);

3.myeclipse的快捷键使用
代码提示 alt /
快速导包 ctrl shift o
单行注释(去掉单行注释) ctrl /
多行注释 ctrl shift /
去掉多行注释 ctrl shift \
删除行 ctrl d

4.junit的使用
单元测试
测试对象 是一个类中的方法
junit不是javase的一部分,想要使用导入jar包
但是,在myeclipse中自带了junit的jar包
首先junit版本3.x 4.x
单元测试方法时候,方法命名规则public void 方法名() {}
使用注解方式运行测试方法,在方法的上面
@Test
代码1:
package cn.bcoder.JunitTest;

public class JunitTest {
public void testAdd(int a,int b){
System.out.println(a+b);

}

}
代码2:
//在src目录下新建一个和JunitTest类相同的包名cn.bcoder.JunitTest
package cn.bcoder.JunitTest;

import org.junit.Test;

public class TestDemo {
//测试方法
@Test
public void testAdd(){
JunitTest test1=new JunitTest();
test1.testAdd(1, 2);

}

}
-选中当发名称,右键运行,点击run as—junit test
-当出现绿色条,表示方法测试成功
-要运行类中的多个测试方法,点击类中的其他位置,run as—junit test

@Ignore 表示这个方法不进行单元测试

@After 在每个方法之后运行

@Before 在每一个方法之前运行

5. jdk5.0新特性
泛型,枚举,静态导入,自动拆装箱,增强for,可变参数,反射
为什么要使用泛型?
一般使用在集合上
比如现在把一个字符串类型的值放入到集合里面,这个时候,这个值放入到集合之后,失去本来类型,只能是Object类型。我们可以使用泛型来解决
在集合上使用泛型
常用集合 list set map
泛型语法: 集合 ,比如 List
代码:
public void testList() {
List list = new ArrayList();
list.add(“aaa”);
list.add(“bbb”);
list.add(“ccc”);
}
//遍历list集合有三种方法(for,迭代器,增强for)
for(int i=0;i it=list.iterator();
while(it.hasNext()){
System.out.println(it.next);
}
在map上使用泛型
map结构:key-value
Map map=new HashMap();
map.put(“name”,”bestcoder编程学习网”);
//遍历map
Set sets=map.keySet();
for(String key:sets){
String value=map.get(key);
System.out.println(key+”:”+value);
}
System.out.println(“=========”);
//得到key和value关系
Set> sets1=map.entrySet();
for(Entry entry : sets1){
String keyv=entry.getKey();
String valuev=entry.getValue();
System.out.println(keyv+”:”+valuev);

}

泛型使用在方法上
int arr1[]={10,4,78,23,22};
swap1(arr1,1,3); //实现1,3位置交换
System.out.println(Arrays.toString(arr1));
//代码1
private static void swap1(int []arr1,int i,int j){
int temp=arr1[i];
arr1[i]=arr1[j];
arr1[j]=temp;

}
//代码2
private static void swap1(String []arr1,int i,int j){
int temp=arr1[i];
arr1[i]=arr1[j];
arr1[j]=temp;

}
*方法逻辑相同,只是数据类型不同,这个时候我们可以使用泛型方法
//代码3
public static void swap1(T[] arr,int a,int b){
T temp=arr[a];
arr[a]=arr[b];
arr[b]=temp;
}

*使用泛型方法需要定义一个类型,使用大写字母T表示,这个T表示任意类型。
*写在返回值之前

泛型在类上的使用
在一个类上定义一个类型,这个类型可以在类里面直接使用
public class TestDemo{
//在类里面可以直接使用泛型
T aa;
public void test11(T bb){}

//在类上定义的泛型,不能在静态方法里使用
public static void test12(A cc){} //error

}

6.枚举的简介
什么是枚举?
需要在一定的范围内取值,这个值只能是这个范围内的任意一个。
现实场景,交通信号灯,有三种颜色,但每次只能亮一个。
使用关键字enum
enum{
RED,BLUE,YELLOW;
}
枚举的构造方法也是私有的。

特殊枚举的操作:
在枚举类里面有构造方法(构造方法有参数,需要在每一个实例上面都写参数)
在枚举类里有抽象方法(在枚举的每个实例里面都重写这个抽象方法)
enum Color11{
RED(“red”){
public void print1(){
System.out.println(“red”);
}
},Green(“green”){
public void print1(){
System.out.println(“green”);
},YELLOW(“yellow”){
public void print1(){
System.out.println(“yellow”);
};
private Color11(String name){} //构造方法
public abstract void print1(); //抽象方法
}

7.枚举的api操作
name() 返回枚举的名称
ordinal() 枚举的下标,下标从0开始
valieOf(Class enumType,String name) 得到枚举对象

valueof(Stirng name) 转换枚举对象
values() 获得所有枚举对象数组

练习:
package cn.bcoder.test1;

import org.junit.Test;

public class test1 {
@Test
//知道枚举对象,得到枚举名称和下标
public void test1(){
Color co=Color.RED;
String name=co.name();
int idx=co.ordinal();
System.out.println(name+” “+idx);
}
//知道枚举名称,得到枚举对象和下标
@Test
public void test2(){
String name1=”GREEN”;
Color co1=Color.valueOf(name1);
//枚举下标
int idx1=co1.ordinal();
System.out.println(idx1);

}
//知道枚举下标买得到枚举对象和名称
@Test
public void test3(){
int idx2=2;
//得到枚举对象
Color [] cs=Color.values();
//根据下标得到对象
Color c12=cs[idx2];
//得到枚举名称
String name=c12.name();
System.out.println(name);

}

}

enum Color{
RED,GREEN,YELLOW;

}

8.静态导入(用的少)
import static java.lang.System.out;
方便方法的调用

9.自动拆装箱
装箱: 把基本数据类型转换成包装类
拆箱: 把包装类转换成基本的数据类型
//自动装箱
Integer i=100;
//自动拆箱
int m=i ;
在jdk1.4里面如何实现装箱和拆箱?
public void test1(){
Integer m=new Integer(100);
int a=m.intValue();
}
*jdk是向下兼容的。

10.增强for循环
语法:for(遍历出来的值:要遍历的集合){}
for(String s: list){
System.out.println(s);
}
使用场景: 数组;实现Iterator接口的集合,可以使用增强for循环
在集合上使用增强for循环遍历
list set实现了Iterator接口,所以可以使用增强for循环
map 不能使用增强for循环,没有实现Iterator接口,所以不能使用增强for1循环
增强for循环出现目的:为了替代迭代器
增强for循环底层就是迭代器。

11.other
泛型的擦除
首先泛型只是出现在源代码阶段,当编译之后泛型不存在。

12.可变参数
可变参数可以应用在什么场景?
(1)如果实现的多个方法,这些方法里面逻辑基本相同,唯一不同的就是参数个数,这时候就可以使用可变参数。
可变参数定义: 数据类型…数组的名称
代码:
public static void add1(int…nums){
//nums可以理解为一个数组,这个数组存储传递过来的参数
//System.out.println(nums.length);
int sum=0;
//遍历数组
for(int i=0;i

未经允许不得转载:Bcoder资源网 » 实习javaweb前准备:第八天Eclipes和Jdk5.0新特性

相关推荐

更多优质资源关注微信公众号: bcoder

bcoder
赞 (0)
分享到:更多 ()

评论 0

评论前必须登录!

登陆 注册