收藏 分享(赏)

01-java基础加强.doc

上传人:gsy285395 文档编号:9147106 上传时间:2019-07-25 格式:DOC 页数:10 大小:98KB
下载 相关 举报
01-java基础加强.doc_第1页
第1页 / 共10页
01-java基础加强.doc_第2页
第2页 / 共10页
01-java基础加强.doc_第3页
第3页 / 共10页
01-java基础加强.doc_第4页
第4页 / 共10页
01-java基础加强.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

1、一、eclipse 工具的使用1. java 代码的位置1) 选择工作空间 workspace 选择一个文件夹存放程序 (代码) 不要用中文和空格2) 新建一个 java 工程(Project)3) 建包 建类2. 快捷键alt + / : 代码自动补齐,需要配置的打开 preferences(首选项), 搜 keys,打开快捷键配置面板搜 alt+/ ,取消绑定搜 content assist ,取消原先的绑定,配置成 alt+/ctrl+1: 错误自动修复, 注意,放行的红叉是可修复的,圆形的是不可修复的导包的三种方式:1)将类名敲完整,按下 alt+/ 进行补齐,会自动导包2) ctrl

2、+1,修正错误3) ctrl+shift+o 整理包,导入需要的包,去掉多余的导包语句ctrl+shift+f : 代码格式化管理透视图ctrl+2,L 自动声明变量shift+enter 光标直接进入下一行ctrl+alt+方向键(向上向下) 复制行alt+ 方向键(向上向下) 移动当前行3. 断点调试1) 可以对程序进行调试在行的开头双击左键打断点,用 debug 方式来运行程序,程序就会停留在断点位置F5 跳入(step into) 跳入方法内部 F6 跳过, 让当前行运行 F7 跳出 返回上一层程序resume 直接运行到下一个断点 2) 查看源代码建议使用断点调试的方式,注意当前运行

3、环境需要包含源码4. junit 单元测试1) 写一个 java 类, 声明测试方式修饰符为 public void ,在方法前面加注解,(Test) 此方法就可以进行测试了(交给 junit 运行)2) 需要在测试方法前做初始化工作写一个静态方法 public static void init() 在方法前加注解 BeforeClass3) 需要在测试后释放资源写一个静态方法在方法前加注解 AfterClass二、jdk5 新特性java 1995 诞生, 版本: jdk1.0jdk1.1 jdk1.2 jdk1.3 jdk1.4 2005 老虎版 jdk5.0 jdk6 - jdk71.

4、静态导入1) 导入类的静态属性import static java.lang.System.out;out.println(“haha“);2) 导入类的静态方法import static java.lang.Math.*;/ 导入 Math 类的所有静态成员int num = abs(-10);2. 基本数据类型的包装类int Integerbyte Byteshort Shortlong Longchar Characterdouble Doublefloat Floatboolean Boolean1) Integer x = 1; x = x + 1; 经历了什么过程? 装箱 拆箱 装

5、箱2) 为了优化,虚拟机为包装类提供了缓冲池, Integer 池的大小 -128127 一个字节的大小3) String 池Java 为了优化字符串操作 提供了一个缓冲池面试题:String s = “abc” 和 String s = new String(“abc”) 的区别String s = new String(“abc”) 创建了几个对象 String s = “a” + “b” + “c” + “d” 创建了几个对象String s1 = “a” String s2 = “b” String s3 = s1 + s2; s3=”ab”?/*1. String s = “abc“

6、, 虚拟机首先会检查 String 池里有没有“abc“对象( 通过 equals 方法)/ 如果有,直接返回引用,如果没有,会在池里创建一个“abc” 对象,并返回引用String s1 = “abc“;String s2 = “abc“;System.out.println(s1=s2); / result: true*/* 2. String str = new String(“abc“); 不管缓冲池是否有“abc“, 都会在堆内存创建一个“abc“对象,返回引用/ 此时,负责检查并维护缓冲池,其实堆内存的对象是缓冲池中“abc“ 对象的一个拷贝String s1 = new Stri

7、ng(“abc“);String s2 = new String(“abc“);System.out.println(s1=s2); / result: false*/* 3. String s = “a“ + “b“ + “c“ + “d“; java 编译器有个合并已知量的优化功能/ 在编译阶段就把“a“ + “b“ + “c“ + “d“ 合并为 ”abcd“String s = “a“ + “b“ + “c“ + “d“; / String s = “abcd“; System.out.println(s=“abcd“);/ result: true*/* 4. String s1 =

8、 “a“; String s2 = “b“; String s3 = s1 + s2;/ String 是常量,不能相加的,java 如何实现的?StringBuilder sb = new StringBuidler(s1);sb.append(s2);s3 = sb.toString();也就是说实际上 s3 是方法返回的 String 对象凡是方法返回的字符串对象都是在堆内存的*/String s1 = “a“;String s2 = “b“; String s3 = s1 + s2; / 堆内存的对象System.out.println(s3=“ab“);/ result: false

9、3. 增强 for 循环1) 作用:对存储对象的容器进行迭代 2) jdk5 以前怎么迭代3) 增强 for 循环迭代数组String arr = “a“, “b“, “c“; /数组的静态定义方式,只试用于数组首次定义的时候/ 传统方式for(int i=0; iclassruntime2) Class 对象在 java 中用一个 Class 对象来表示一个 java 类的 class 阶段Class 对象封装了一个 java 类中定义的成员变量、成员方法、构造方法、类名、包名等获得 class 对象的三种方式和区别/ 1. 根据给定的类名来获得 用于类加载String classname

10、= “cn.itcast.reflect.Person“; / 来自配置文件Class clazz = Class.forName(classname); / 此对象代表Person.class/ 2. 如果拿到了对象,不知道是什么类型 用于获得对象的类型Object obj = new Person();Class clazz1 = obj.getClass(); / 获得对象具体的类型/ 3. 如果是明确地获得某个类的Class 对象 主要用于传参Class clazz2 = Person.class;/ 在java中所有的类型都会对应一个Class对象 int IntegerClass

11、intClazz = int.class;Class intarrClazz = int.class;Class voidClazz = void.class;3)反射反射就是获得一个 java 类的各个组成部分/ 反射类的成员方法Class clazz = Person.class;Method method = clazz.getMethod(methodName, new ClassparamClazz1, paramClazz2);method.invoke();/ 反射类的构造函数Constructor con = clazz.getConstructor(new Classpara

12、mClazz1, paramClazz2,.)con.newInstance(params.)/ 反射类的属性Field field = clazz.getField(fieldName);field.setAccessible(true);field.setObject(value);4) 反射用在哪里到底框架是什么? 框架就是将开发中大量重复的代码集中起来写个通用的程序框架就是用反射来实现的框架需要现在的类调用将来写的类框架是将来的程序员调用的,框架不能实现完整的功能,框架只是一些一些通用的代码框架要运行一定会依赖将来写的类现在写的类要调用将来写的类,我们先针对接口进行调用,将来的类需要实

13、现接口,那么方法就固定了但是将来写的类的类名我们无法获知,这时就需要调用者通过配置文件告诉框架具体的类名7. 泛型1) 泛型是一种可变化的类型类型不确定,需要调用者来指定2) 用途:一个类的多个成员方法用到的参数类型或返回值类型都是未知的类型,但又需要是同一个类型,就可将方法的参数类型定义为泛型,此泛型必须在类上先予以声明才能在方法中使用一个方法的多个参数和返回值需要是同一个类型,也可以用泛型来解决,在方法返回值前面声明泛型泛型的细节:1) 泛型到底代表什么类型取决于调用者传入的类型,如果没传,默认是 Object 类型2) 使用带泛型的类创建对象时, 等式两边指定的泛型必须一致原因: 编译器

14、检查对象调用方法时只看变量,然而程序运行期间调用方法时就要考虑对象具体类型了3) 等式两边可以在任意一边使用泛型 在另一边不使用 (考虑向后兼容)3. 泛型的基本概念以 List为例: 念着 typeof 例, List 就是 List typeof StringList中的 E 称为类型参数变量 方法定义参数形式参数 List中的 Integer 称为实际类型参数整个 List称为泛型类型 GenericType整个 List称为参数化的泛型类型4. 泛型的使用1)使用带泛型的类时,在创建对象时可以为泛型指定实际类型参数,指定的具体类型相当于给泛型传参2)子类在继承父类的时候,可以为父类定义的泛型指定实际类型参数class Bclass A extends B通过子类 A 获得的父类类型就是一个参数化的类型3)调用方法时传入参数的具体类型将作为方法中泛型的实际类型

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报