1.高级特性
注解
Java框架重要组成部分。
注解本质是一个接口。
在我看来,Spring中注解和配置文件的作用是一样的,都是在代码运行时通过反射将配置信息加入类中,达到抽象代码的作用,注解在框架的兴起,还是因为配置文件的太多以至于"配置地狱”的出现,但注解的不直观性,使得在实际Web项目开发中往往注解和配置文件折中使用。
public @interface 注解名称{
属性列表;
}
反射
正常来说执行Java代码的时候,类已经写好,等待执行就行。但反射可以让在代码运行时,再加入类的相关信息,Spring框架的配置文件就是通过反射来进行注入的。
所以:
反射就是在运行时才知道要操作的类是什么,并且可以在运行时获取类的完整构造,并调用对应的方法。
Java框架的基石。
具体可以看这篇文章。
泛型
泛型的作用是简化代码,相当于语法糖。
java 中泛型标记符:
E - Element (在集合中使用,因为集合中存放的是元素)
T - Type(Java 类)
K - Key(键)
V - Value(值)
N - Number(数值类型)
? - 表示不确定的 java 类型
- 泛型方法
public class GenericMethodTest {
// 泛型方法 printArray
public static <E> void printArray(E[] inputArray) {
// 输出数组元素
for (E element : inputArray) {
System.out.printf("%s ", element);
}
System.out.println();
}
public static void main(String args[]) {
// 创建不同类型数组: Integer, Double 和 Character
Integer[] intArray = {1, 2, 3, 4, 5};
Double[] doubleArray = {1.1, 2.2, 3.3, 4.4};
Character[] charArray = {'H', 'E', 'L', 'L', 'O'};
System.out.println("整型数组元素为:");
printArray(intArray); // 传递一个整型数组
System.out.println("\n双精度型数组元素为:");
printArray(doubleArray); // 传递一个双精度型数组
System.out.println("\n字符型数组元素为:");
printArray(charArray); // 传递一个字符型数组
}
}
- 泛型类
public class Box<T> {
private T t;
public void add(T t) {
this.t = t;
}
public T get() {
return t;
}
public static void main(String[] args) {
Box<Integer> integerBox = new Box<Integer>();
Box<String> stringBox = new Box<String>();
integerBox.add(new Integer(10));
stringBox.add(new String("菜鸟教程"));
System.out.printf("整型值为 :%d\n\n", integerBox.get());
System.out.printf("字符串为 :%s\n", stringBox.get());
}
}
序列化
当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。
发送方需要把这个Java对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列再恢复为Java对象。
2.多线程
-
采用实现 Runnable、Callable 接口的方式创建多线程时,线程类只是实现了 Runnable 接口或 Callable 接口,还可以继承其他类。
-
使用继承 Thread 类的方式创建多线程时,编写简单,如果需要访问当前线程,则无需使用 Thread.currentThread() 方法,直接使用 this 即可获得当前线程。
3.网络编程
4.JVM
5.版本特性
Lambda 表达式
Lambda表达式用来代替匿名类的
Lambda 其实就是匿名方法,这是一种把方法作为参数进行传递的编程思想。
Java会在背后,悄悄的,把这些都还原成匿名类方式。引入Lambda表达式,会使得代码更加紧凑,而不是各种接口和匿名类到处飞。
(parameters) -> expression
或
(parameters) ->{ statements; }