java基础加强_补充笔记

简介: java基础加强1、JDK5.0新特性介绍jdk5.0的代号为:tiger(老虎)2、静态导入作用:静态导入类的某个静态成员(包括静态属性和静态方法)。语法:import static java.lang.System.out;import static java.util.Arrays.*;import static java.lang.Math.*;应用:实际开发中一般不用,因为比较抽象。

java基础加强


1、JDK5.0新特性介绍

jdk5.0的代号为:tiger(老虎)

2、静态导入

作用:静态导入类的某个静态成员(包括静态属性和静态方法)。
语法:
import static java.lang.System.out;
import static java.util.Arrays.*;
import static java.lang.Math.*;
应用:实际开发中一般不用,因为比较抽象。
示例代码:
import static java.lang.System.out;
import static java.util.Arrays.*;
import java.util.List;
public class Demo1 {
public static void main(String[] args) {
// out.println("aa");
// out.println("bbb");
// out.print("ccccc");
String[] ss = {"cc", "bb", "aa"};
List<String> list = asList(ss); // 把数组转成集合 Arrays.asList(ss);
sort(ss); // 排序 Arrays.sort(ss);
// 遍历数组
for (int i = 0; i < ss.length; i++) {
out.println(ss[i]);
}
}
}

3、自动装箱和拆箱

装箱:基本类型-->包装类型
拆箱:包装类型-->基本类型
Object o = 10; // 自动装箱+自动转换
int i = (Integer) o; // 强制转换+自动拆箱
小面试题:
Integer i = null; // 没有new,说明堆里是空的。
int j = i;
答:语法无错误,但是不能运行,运行会报空指针异常。NullPointerException
Java的规范指出:特定的基本类型一定会被装箱成相同的包装类型。这些对象会被高速缓存以重复使用,并且会被当做一般对象使用。
这些特殊的值是boolean值的truefalse、所有的byte值、介于-128127shortintlong值,以及介于\u0000与\u007F之间的任何一个char
因此这些基本类型的包装类的对象,是同一个对象。

4、增强for循环

增强for循环设计的目的:替换迭代器。
增强for循环只能用在数组、或实现Iterator接口的集合类上。
注意:增强for循环,只适合遍历集合数据。不适合修改或删除元素。如果要修改或删除使用普通for循环。
语法:
for (元素类型 元素名 :数组或实现了IteraTable接口的集合) {
System.out.println(元素名);
}

5、可变参数

注意:可变参数实际就是数组。
如果需要其它参数,则要把可变参数写在最后。即:一个方法的参数列表中,只能有一个可变参数,且必须放在最后。
在一个方法的参数列表中,不能使用多个可变参数。
语法:参数(数据类型 ... 变量名)
public int sum(int ... nums) { // 把可变参数当成数组
int sum = 0;
for (int i = 0; i < nums.length; i++) {
sum += nums[i];
}
return sum;
}

6、枚举

enum关键字用于定义一个枚举类。
应用场景:当给一个变量赋值时,值只能是特定或有一定范围时使用。
特点:
1. 枚举类也是一种特殊形式的Java类。
2. 枚举类中声明的每一个枚举值代表枚举类的一个实例对象。
3. 与java中的普通类一样,在声明枚举类时,也可以声明属性、方法和构造函数,但枚举类的构造函数必须为私有的(这点不难理解)。
4. 枚举类也可以实现接口、或继承抽象类。
5. JDK5中扩展了swith语句,它除了可以接收int, byte, char, short外,还可以接收一个枚举类型。
6. 若枚举类只有一个枚举值,则可以当作单态设计模式使用。
Java中声明的枚举类,均是java.lang.Enum类的孩子,它继承了Enum类的所有方法。常用方法:
name() 返回当前对象的名称
ordinal() 返回当前对象的索引
values() 返回枚举类中的所有对象,此方法虽然在JDK文档中查找不到,但每个枚举类都具有该方法,它遍历枚举类的所有枚举值非常方便。
valueOf(Class enumClass, String name) 把其它类型数据转换为枚举类型

7、反射

反射是框架设计的灵魂!!!
反射就是把Java类中的各种成分映射成一个个的java对象(加载类时,解剖出类的各个组成部分)。
例如,一个类有:成员变量,方法,构造方法,包等等信息,利用反射技术可以对一个类进行解剖,把各个组成部分映射成一个个对象。
Class类用于表示.class文件。
如何得到某个class文件对应的字节码文件对象:
1. Class clazz = Class.forName(""); // 根据完整类名,得到类的字节码文件对象。
2. 类名.class;
3. 对象名.getClass();
与构造函数相关的方法:
得到public类型的构造函数
Constructor getConstructor(Class ... parameterTypes) 根据可变参数类型,得到指定的公共的构造函数。
Constructor[] getConstructors() 得到所有的公共的构造函数。
示例代码:
clazz.getConstructor(); // 得到无参的公共的构造函数
clazz.newInstance(); // 创建此 Class 对象所表示的类的一个新实例。
clazz.getConstructor(String.class, int.class); // 得到含有两个参数的公共的构造函数
clazz.newInstance("tom", "18"); // 创建此 Class 对象所表示的类的一个新实例。
总之,只要是在源程序中出现的类型,都有各自的Class实例对象,例如,int,voi,...

8、内省

为什么要学内省?
开发框架时,经常需要使用java对象的属性来封装程序的数据,每次都使用反射技术完成此类操作过于麻烦,
所以SUN公司开发了一套API,专门用于操作java对象的属性。
什么是JavaBean和属性的读写方法?
通过内省技术访问(java.beans包提供了内省的API)JavaBean的两种方式。
1. 通过PropertyDescriptor类操作Bean的属性
2. 通过Introspector类获得Bean对象的 BeanInfo,然后通过 BeanInfo 来获取属性的描述器( PropertyDescriptor ),
通过这个属性描述器就可以获取某个属性对应的 getter/setter 方法,然后通过反射机制来调用这些方法。
Beanutils工具类:
导入jar文件:
commons-beanutils-1.8.3.jar
commons-logging-1.1.1.jar
apache开源组织

9、泛型


我的GitHub地址: https://github.com/heizemingjun
我的博客园地址: http://www.cnblogs.com/chenmingjun
我的蚂蚁笔记博客地址: http://blog.leanote.com/chenmingjun
Copyright ©2018 黑泽明军
【转载文章务必保留出处和署名,谢谢!】
相关文章
|
3天前
|
前端开发 JavaScript Java
Java构建工具-maven的复习笔记【适用于复习】
这篇文档由「潜意识Java」创作,主要介绍Maven的相关知识。内容涵盖Maven的基本概念、作用、项目导入步骤、依赖管理(包括依赖配置、代码示例、总结)、依赖传递、依赖范围以及依赖的生命周期等七个方面。作者擅长前端开发,秉持“得之坦然,失之淡然”的座右铭。期待您的点赞、关注和收藏,这将是作者持续创作的动力! [个人主页](https://blog.csdn.net/weixin_73355603?spm=1000.2115.3001.5343)
13 3
|
3月前
|
Java 开发工具 Android开发
Kotlin语法笔记(26) -Kotlin 与 Java 共存(1)
本系列教程笔记详细讲解了Kotlin语法,适合需要深入了解Kotlin的开发者。若需快速学习Kotlin,建议查看“简洁”系列教程。本期重点介绍了Kotlin与Java的共存方式,包括属性、单例对象、默认参数方法、包方法、扩展方法以及内部类和成员的互操作性。通过这些内容,帮助你在项目中更好地结合使用这两种语言。
61 1
|
3月前
|
Java 开发工具 Android开发
Kotlin语法笔记(26) -Kotlin 与 Java 共存(1)
Kotlin语法笔记(26) -Kotlin 与 Java 共存(1)
44 2
|
3天前
|
存储 Java 开发者
【潜意识Java】深入详细理解分析Java中的toString()方法重写完整笔记总结,超级详细。
本文详细介绍了 Java 中 `toString()` 方法的重写技巧及其重要
27 10
【潜意识Java】深入详细理解分析Java中的toString()方法重写完整笔记总结,超级详细。
|
1月前
|
安全 Java 编译器
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
|
1月前
|
Java 开发工具 Android开发
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
|
2月前
|
Java 编译器 Android开发
Kotlin教程笔记(28) -Kotlin 与 Java 混编
Kotlin教程笔记(28) -Kotlin 与 Java 混编
43 2
|
1月前
|
Java 数据库连接 编译器
Kotlin教程笔记(29) -Kotlin 兼容 Java 遇到的最大的“坑”
Kotlin教程笔记(29) -Kotlin 兼容 Java 遇到的最大的“坑”
68 0
|
2月前
|
安全 Java 编译器
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)