传智播客张孝祥java高新技术 笔记

上传人:飞*** 文档编号:54550245 上传时间:2018-09-14 格式:PPT 页数:31 大小:147KB
返回 下载 相关 举报
传智播客张孝祥java高新技术 笔记_第1页
第1页 / 共31页
传智播客张孝祥java高新技术 笔记_第2页
第2页 / 共31页
传智播客张孝祥java高新技术 笔记_第3页
第3页 / 共31页
传智播客张孝祥java高新技术 笔记_第4页
第4页 / 共31页
传智播客张孝祥java高新技术 笔记_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《传智播客张孝祥java高新技术 笔记》由会员分享,可在线阅读,更多相关《传智播客张孝祥java高新技术 笔记(31页珍藏版)》请在金锄头文库上搜索。

1、Eclipse快捷键(一),1、显示系统提示:ALT+/2、程序代码自动排版:Ctrl+Shift+F(jsp文件是全部重排,java文件是可以对选定的代码重排)3、自动汇入所需要的类别:Ctrl+Shift+O(注意和Ctrl+Shift+M区别)4、查看使用类别的原始码:Ctrl+鼠标左键点击(链接进入)5、将选取的文字批注起来:Ctrl+/(后期很少用)6、将选取的文字取消注解:Ctrl+ 7、视景切换:Ctrl+F88、保存所有文件:Ctrl+Shift+S9、关闭所有文件:Ctrl+Shift+F410、跳转到指定行:Ctrl+L(调试的时候很管用)11、查找下一个:Ctrl+K12

2、、列出当前文件的结构:Ctrl+F3/Ctrl+O13、列出类的继承结构:Ctrl+T(对于熟悉陌生的系统类很有用)14、方法或类的原始码:F3(这个就不用介绍了),Eclipse快捷键(二),15、方法做在类的方法结构:F416、复制选定的代码:Ctrl+Alt+(箭头)17、当前行插入一行:Ctrl+Shift+Enter18、将选定字母全部转换成小写字母:Ctrl+Shift+Y19、将选定字母全部转换成大写字母:Ctrl+Shift+X20、将选定的换成连接:Ctrl21、搜索所有文件中,包含的关键字:Ctrl+H(很管用)22、系统辅助或者代码提示及补充:alt+/(最喜欢这个:)2

3、3、找另外一半括号:ctrl+shift+p24、重新整理导入的包(只导入需要的包,不需要的会自动去掉):ctrl+shift+m(注意和Ctrl+Shift+O区分)25、编辑框等窗口最大化:Ctrl + m 26、编辑器的回退,前进,切换:Alt + 左右箭头,Ctrl + F627、文件重命名:F228、刷新:F529. 重构:Ctrl+Shift+R,如何进行Debug(很重要,要掌握) Debug可以分离出程序出错的原因。 在Eclipse中要以Debug方式运行,便于对代码的调试。 单元测试Test 单元测试可以对业务中的多个方法分别进行测试,避免了互相之间的影响。 单元测试要独立

4、放在一个包中。 1.白盒测试 2.断言表达式 常常犯的错误: 1.单元测试方法不是Static的。 2.忘记加Test,静态导入,使用静态导入的好处:提高编写代码的效率。静态成员的使用,使用import static 引入静态成员。很简单的东西,看一个例子:没有静态导入Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2);有了静态导入import static java.lang.Math.*;sqrt(pow(x, 2) + pow(y, 2); 其中import static java.lang.Math.*;就是静态导入的语法,它的意思是导入Math类中的所

5、有static方法和属性。这样我们在使用这些方法和属性时就不必写类名。 需要注意的是默认包无法用静态导入,另外如果导入的类中有重复的方法和属性则需要写出类名,否则编译时无法通过。,可变参数:(底层是通过数组来实现的),减少代码量,方便输入如果有多个参数,可变参数要定义在最后边位于变量类型和变量名之间,前后有无空格都可以;在调用可变参数的方法时,编译器会为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数。public static void m(String. s)System.out.println(“m(String)“ +s);调用m(String s)for(String

6、s2:s)System.out.println(s2);,基本数据类型的自动装箱与拆箱,自动封箱解箱只在必要的时候才进行。还有其它选择就用其它的自动装箱:Integer num = 12;自动拆箱:Int num = new Integer(12); 基本Boolean/Byte/Integer(数值范围:-128至127)数据类型的对象缓存:Integer num1 = 12;Integer num2 = 12;System.out.println(num1 = num2);结果为trueInteger num3 = 129;Integer num4 = 129;System.out.pri

7、ntln(num3 = num4);结果为false因为数值范围在:(-128至127)数据类型的对象缓存。简单类型和封装类型之间的差别封装类可以等于null ,避免数字得0时的二义性。Integer i=null;int ii=i; 会抛出NullException 异常。相当于 int ii=i.intValue();,枚举,枚举(Enum)可以使用构造方法,构造方法必须是私有的(private)。枚举(Enum)可以使用成员变量和成员方法例1.这是在5.0之前使用模式做出枚举final class Seasonpublic static final Season SPRING=new S

8、eason();public static final Season WINTER=new Season();public static final Season SUMMER=new Season();public static final Season AUTUMN=new Season();private Season().例2.使用5.0的新特性枚举类import java.lang.Enum.*;enum Season2 SPRING,SUMMER,AUTUMN,WINTER经过编译运行,例1和例2完全是等价的。,反射(class类),在java中就是反射就是把Java类中的各种成分

9、映射成相应的java类。反射的作用:用于工具,架构,动态开发等开发工程三种得到类对象的途径:1.Class.forName(“name”) /输入全类名2.object.getClass() /得到该对象的类对象3.object.class Constructor的反射 String str1 = new String(new StringBuffer(“abc“); /用Constructor构造此String对象 Constructor constructor1 = String.class.getConstructor(StringBuffer.class); String str2 =

10、 (String)constructor1.newInstance(new StringBuffer(“abc“); Class.newInstance的作用:调用用默认的构造方法 ,省去中间Constructor的步骤Class.forName(“java.lang.String“).newInstance();,成员变量的反射,Field FLY = rp1.getClass().getField(“y“); /FLY不是对象上的变量,代表类身上字节码的变量 ,要用它去取某个对象上对应的值。FLY.get(rp1); /用get取得y的值暴力反射:取私有变量Field FLX = rp1.

11、getClass().getDeclaredField(“x“);/x为私有变量,所以用此方法FLX.setAccessible(true);/设置可用System.out.println(FLX.get(rp1);,成员方法的反射,String string = “abc“;Method methodCharAt = String.class.getMethod(“charAt“, int.class); /取得String的charAt方法的字节数组System.out.println(methodCharAt.invoke(string, 1);/如果底层方法是静态的,该参数可以为 nu

12、ll,因为静态方法没有对象。 如果方法的参数列表为数组,用Object数组来传递对象 System.out.println(methodCharAt.invoke(string, new Objectnew Integer(2); /JDK1.4的形式 System.out.println(methodCharAt.invoke(string, new Object2); /JDK1.5的形式 可以自动装箱,数组的反射,具有相同维数和元素类型的数组属于同一个类型,即具有相同的Class实例对象。 代表数组的Class实例对象的getSuperclass()方法返回的父类为Object类对应的C

13、lass。 基本类型的一维数组可以被当作Object类型使用,不能当作Object类型使用,非基本数据类型的一维数组,既可以当作Object使用,也可以当作Object使用。 Arrays.asList()方法:将数组转换为List。处理int和String时的差异。 Array工具类用于完成数组反射的操作 怎样得到整个数组的元素类型:无法得到,只能得到具体元素的类型 ai.getClass().getName();,ArrayList与HashSet比较,HashCode:由此对象的内存地址换算而来。 哈希算法:将集合分为若干个储存区域,每个对象可以算出一个哈希码,将哈希码分组,每组分别对应

14、某个储存区域,根据一个对象的哈希码就能确定该对象储存在哪个区域。 HashSet:采用哈希算法的集合。实现了Collection接口,只能存入不同HashCode对象,即只存入不同的对象,如果希望存入具有相同内容的两个对象,则需覆盖对象的HashCode和 equals方法。 ArrayList:实现了Collection接口,对象之间有指定顺序,允许重复元素即使是同一对象,也会被顺序存入。 提示:当一个对象被存入HasthSet中后,就不能再修改这个对象中那些参与计算哈希值的字段了,否则,修改后的哈希值与最初存入HashSet的就不相符了,此时HashSet将无法检索到此对象,这也会导致无法

15、从HashSet集合中单独删除当前对象,从而造成内存泄漏(无用后仍在内存中占用空间,从而造成内存的浪费)。,反射的作用实现框架的功能,在写程序的时候无法知道要调用的类名,所以在程序中无法直接new某个类的实例对象,而要用反射的方式来做。 InputStream ips = new FileInputStream(“config.properties“);Properties pr = new Properties();pr.load(ips);ips.close();String className = pr.getProperty(“className“);Collection collec

16、tions = (Collection)Class.forName(className).newInstance();,采用类加载器管理资源和配制文件,用完整路径:安装目录+内部目录getRealPath(); +内部目录 类加载器:当文件或资源放入源文件目录时,Ecplice会自动将其复制到.class目录中。类加载器从ClassPath指定的根目录开始查找(需写从根目录开始的完整路径名)。格式:类名.class.getClassLoader().getResourceAsStream(“xxx”); 获取资源目录。 getClassLoader()也可省略。此时只需写上资源的名称即可。 缺

17、点:无OutputStream,无法写入文件,只能读取。,内省用来操作JavaBean,JavaBean:特殊的Java类,主要用于传递数据信息,这种Java类的方法用于访问私有的字段,方法名称具有特定规则。 Person类具有getAge()和setAge()方法,那么Person类的JavaBean名称为age-如果age的第二个字母为小写,那么第一个字母也变为小写。 内省的简单操作PropertyDescriptor属性描述符:获取属性名称及对象,再调用getReadMethod或getWriteMethod方法返回一个Method对象,再调用invoke()即可。 ecplice方法的抽取:选中代码右键RefactorExtraceMethod,即可生成代码对应的方法。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 教育/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号