java基础加强
来源:互联网 发布:java xss防御 编辑:程序博客网 时间:2024/06/08 08:41
软件的建议:
*建议解压到D盘根目录*激活问题: 使用java -jar me_active.jar 来运行激活软件.
1.MyEclipse快捷键 CTRL ALT SHIFT 学习
CTRL+1 解决问题快捷键CTRL+SHIFT+o 快速导包
CTRL+SHIFT+F 格式化代码
CTRL+ALT+上下 快速复制选中行
CTRL SHIFT T 快速打开某个类
CTRL SHIFT R 快速打开某个资源
CTRL +T 查看继承关系
CTRL +O 查看类中的所有属性方法.
ALT+/ 自动完成拼写
ALT+SHIFT A 切换到矩形编辑模式
F3 查看源代码
ALT + 左右 前进后退
F2 查看详情
ALT+SHIFT+S 呼出菜单
生成get/set
生成构造空参数
生成有参数的构造
重写父类方法
自动生成 比较方法()
自动生成 toString
CTRL+SHIFT+/ \ 多行注释 和取消
CTRL + / 单行注释 和 取消
CTRL+SHIFT + x /+Y 切换大小写
2.DeBUG在运行期间调试代码
resume 运行下去,直到下个断点,没有断点直到结束.step into(F5) 进入方法
step over(F6) 下一行
step return(F7) 跳出方法
3.Junit
优势1:一个测试类中可以有N个测试方法.优势2:提供了一些其他辅助测试的功能.
使用junit步骤
1.新建测试类 命名: 要测试的类名+Test结尾
2. 新建测试方法
1.测试方法必须是public的
2.测试方法必须是void
3.测试方法名称最好test开头 要测试的方法名称结尾
4.测试方法上必须加注解@Test
4.断言:
断言 第一个参数是运行结果的期望值第2个参数是运行结果
Assert.assertEquals(5,result);
只运行一个方法:
在方法上点击 运行在Junit Test
@Before:在所有测试方法运行之前调运该方法
@After // 在所有测试方法运行之后调运该方法
@BeforeClass // 在类加载之前调运该方法 一个测试类只运行一次
@AfterClass // 在类加载之后调用该方法 一个测试类只运行一次
5自动装箱,拆箱
Integer i = 10; //自动装箱 Integer i = Integer.valueOf(10);int a = i; //自动拆箱 int a = i.intValue();
印证原理
1.断点的方法
2. java ==javac==> .class ==jvm==>运行 反编译查看.class文件
自动拆箱装箱新特性,是 编译器 做的.
注意:
如果int值在-128~127之间 将会返回缓存好的Integer对象
6,可变参数
public void add(int... array,int... array2){ //变长参数的写法int result = 0 ;
for(int len = 0 ; len < array.length ; len ++){
result += array[len];
}
return result;
}
注意:
1.变长参数 必须是最后一个参数.
2.变长参数在一个方法中只能出现一次.
调用:
变长参数会被包装成一个数组.
如果调用时,没有传参数.那么相当于传了一个零长数组.
7.增强for循环
iterator ==> List Set ==> Collenction ==> Iterable增强for循环可以遍历什么?
1.可以遍历实现了Iterable接口的.
2.数组.
List list = new ArrayList();
list.add("abc");
list.add("abd");
for(Object o : list ){
System.out.print(o);
}
//------------------------------------------
Iterator it = list.iterator();
while(it.hasNext()){
Object o = it.next();
System.out.print(o);
}
//--------------------------------------------
for(Iterator it = list.iterator();it.hasNext();){
Object o = it.next();
System.out.print(o);
}
增强for循环.遍历集合时,使用的就是Iterator来遍历的.
遍历数组时,使用的就是普通for循环遍历的
增强for循环同样是编译器的增强.
增强for循环的作用:
*简化代码
*效率上没有提高
与普通方式不同点:
*无法获得角标的.
*没有角标,无法选择开始遍历的位置
//======================================================
8.泛型
集合也可以看做是一个坛子.为了规范存取.可以为集合定义规则.定义集合中存取的类型. 以上就是泛型.*使用泛型将错误提前到了编译期.
非泛型集合
List list = new ArrayList();
list.add(10);
list.add("abc");
list.add(new Object());
泛型集合
尖括号就相当于坛子上贴的标签.限定了集合中的类型,
List<String> list =new ArrayList<String>();
list.add("abc");
list.add(10); //报错
定义泛型类
在类名后面指定泛型 class Demo2<T> , 其中T表示 ,接受用户在调用时传来的类型.
在下面的方法中,就可以使用T来表示将来传入 的类型
public T getO() {
return o;
}
public void setO(T o) {
this.o = o;
}
定义泛型方法:
public static <T> T echo(T o);
//隐式指定泛型方法的泛型
Demo2.echo("abc");
//显式指定泛型类型
Demo2.<String>echo("abc");
//------------------------------------------------------------------------------------------
9枚举
*对有限个数的对象.进行列举.*枚举名称直接在类名下面书写即可.例如 : public enum City2 { bj,gz,sh;} 如果枚举项结尾分号不写,那么分号后面不允许跟其他内容.
*枚举中可以有自己的属性. 属性必须声明在枚举项后面.
*枚举中也可以定义构造方法. 构造方法一定是private
*枚举也可以由自己的方法.
*枚举也可以定义抽象方法(了解) , 需要在枚举项声明处实现该抽象方法.
枚举在编译过后 生成的类名如下
public enum City2 ==> public abstract class City2 extends Enum
枚举实际上就是一个类.该类继承了Enum.所以枚举都是Enum的子类.
所以可以使用Enum中的方法 和 可以被枚举
compareTo 比较枚举项
name 返回枚举变量名称
枚举可以被switch
City2 bj = City2.bj;
switch (bj) {
case bj:
System.out.println("城市是北京");
break;
case sh:
System.out.println("城市是上海");
break;
case gz:
System.out.println("城市是广州");
break;
default:
break;
}
//------------------------------------------------------------
10反射
反射实际上就是剖析类.可以获得类的信息 和 类中 构造方法,方法, 属性的信息.Class
获得class的方式
1.类名.class
2.new Car().getClass();
3.Class.forName("完整类名");
获得Class的相关信息
getName();获得完整类名
getSimpleName();获得简单类名
newInstance();调用空参构造方法创建对象
getModifiers()获得类的权限
Constructor
获得Constructor方式
getConstructors() 获得所有构造(不包括私有构造)
getDeclareConstructors()获得所有构造(包括私有)
getConstructor(Class... types) 获得指定的构造器(不包括私有构造)
getDeclareConstructor(Class... types) 获得指定的构造器(包括私有构造)
获得Constructor相关信息
getModifiers()获得构造的权限
getName()获得构造函数名称
getGenericParameterTypes()获得构造函数的参数列表
getGenericExceptionTypes()获得构造函数的异常抛出信息
运行构造函数创建对象
newInstance();调用构造函数获得对象
Method
获得method
getMethods() 获得包括父类的所有公共方法
getDeclareMethods()获得所有自己的所有构造方法(包括私有)
getMethod(Class... types) 获得指定的方法(不包括私有方法)
getDeclareMethod(Class... types) 获得指定的方法(包括私有方法)
获得method相关信息
getModifiers()获得方法的权限
getName()获得方法名称
getReturnType(); 获得返回值类型
getGenericParameterTypes()获得方法的参数列表
getGenericExceptionTypes()获得方法的异常抛出信息
运行method
invoke(运行该方法的对象,方法的参数); 运行方法
Field
获得field
getFields(); 获得包括父类的所有公共属性
getDeclarFields();获得所有自己的所有属性(包括私有)
相关信息
getModifiers()获得属性的权限
getName()获得属性的名称
getType()获得属性的类型
对属性进行读写
get(对象) 获得属性的值
set(对象,要设置的属性值) 设置属性的值
注意:在操作私有属性时 可以通过调用setAccessable() 设置是否可以访问 .(慎用)
作业:
实现如下方法配置文件 如果是这样: UserDao=UserDaoImpl
实现一个方法如下:
public Object getBean(String str){
}
传入配置中的key. 返回一个对象给我.
UserDao ud = (UserDao)getBean("UserDao");
思考,该方法如果不需要强转如何来设计?(泛型)
*/
0 0
- Java基础:基础加强
- Java基础:基础加强
- java基础加强--反射
- java基础加强
- java基础加强
- JAVA基础加强
- java基础加强1
- java基础加强
- java基础加强:
- Java基础加强 三
- Java基础加强 四
- java基础加强1
- java 基础加强 黑马
- java 基础加强 黑马
- java 基础加强 黑马
- java 基础加强 黑马
- java 基础加强 黑马
- java 基础加强 黑马
- UltraEdit 设置
- CMenu 菜单操作
- Android ImageView图片自适应
- 文档注释javadoc
- XCODE调试技巧收集
- java基础加强
- win7+64位+Oracle+11g+64位下使用PLSQL+Developer+的解决办法
- 支持模糊查询的替代html中select的jquery插件
- 怎样从数组中删除某个值?
- 面试经典(25)--二叉查找树(搜索树)
- IOS EXC_BAD_ACCESS
- 第五周作业——有向图邻接表表示及反图构造
- OpenCV编程->cxmisc.h无法打开
- 滚动条(如果超出屏幕,自动计算滚动)