Java:从编程语言到编程思想

举报
彭世瑜 发表于 2021/08/14 00:37:07 2021/08/14
【摘要】 《Java从编程语言到编程思想》学习笔记 一、Java语言的变化 (1)1.2 集合框架Collection Framework Java Beans (2)1.3 略 (3)1.4 assert (4)1.5 工厂方法,返回一个数组 package com.demo; public class Java5Demo { public static voi...

《Java从编程语言到编程思想》学习笔记

一、Java语言的变化

(1)1.2
集合框架Collection Framework
Java Beans

(2)1.3

(3)1.4
assert

(4)1.5

工厂方法,返回一个数组

package com.demo;

public class Java5Demo { public static void main(String[] args) { // String[] values = new String[]{"pig", "dog"}; String[] values = of("pig", "dog"); } public static <T> T[] of(T... values){ return values; }
}


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

强制需要一个参数

package com.demo;

public class Java5Demo { public static void main(String[] args) { // String[] values = new String[]{"pig", "dog"}; String[] values = of("pig", "dog", "cat"); } public static <T> T[] of(T one, T... values){ return values; }
}


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

(5)1.7

@Override 进行编译器检测

package com.demo;

public class Java5Demo extends Object{ @Override public String toString() { return "Java5Demo"; }
}


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

异常try…catch…

try { FileInputStream stream = new FileInputStream("name.txt"); // 多异常精确捕获
} catch (FileNotFoundException | RuntimeException e) { e.printStackTrace();
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
// AutoCloseable 接口, 会自动关闭,不需要finaly中关闭
try (FileInputStream stream = new FileInputStream("name.txt")) {


} catch (FileNotFoundException e) { e.printStackTrace();
} catch (IOException e) { e.printStackTrace();
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

1.8 Lambda

1.9 模块化

2.0 类型推断

二、数据结构

  • 原生类型

    • boolean
    • byte
    • short
    • int
    • long
    • float
    • double
  • 对象类型

    • Object
    • String
    • Class
  • 数组类型

    • int[]
    • Object[]
  • 集合类型

    • Collection Stack Vector
    • List Set Queue Map Enumeration
    • Iterable Iterator
package com.demo;

import java.util.Arrays;

public class Demo{ public static void main(String[] args) { print(Arrays.asList("a", "b", "c")); } public static void print(Iterable<?> iterable){ for(Object object: iterable){ System.out.println(object); } }
}


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

三、Java类库提升

  • Java5

    • 并发框架(J.U.C)
    • 格式化Formatter
    • Java管理扩展(JXM)
    • Instrumentation
    • XML处理(DOM、SAX、XPath、XSTL)
  • Java6

    • JDBC 4.0
    • JAXB 2.0
    • 可拔插注解处理API
    • Common Annotations
    • Java Compiler API
    • Scripting JVM
  • Java7

    • NIO2
    • Fork/Join框架
    • invokedynamic字节码
  • Java8

    • Stream API
    • CompletableFuture
    • Annotation on Java Types
    • Date and Time API
    • 可重复Annotations
    • JavaScript 运行时
  • Java 9

    • Reactive Streams Flow API
    • Process API Updates
    • Variable Handles
    • Method Handles
    • Spin-Wait Hints
    • Stack-Walking API
  • Java 10

    • Java-Based JIT Compiler
System.out.printf("Hello %s", "Tom");
// Hello Tom

  
 
  • 1
  • 2

四、编程模型

  • 面向对象编程OOP

    • 封装性(访问限制)
    • 派生性(上下游关系)
    • 多态性(一种接口多种实现)
  • 面向切面编程AOP

    • 静态接口
    • 动态代理
    • 字节码提升 ASM CGLIB Javassist BCEL
    • 拦截判断 方法,注解,参数,异常
    • 拦截执行 前置,后置,返回,异常
  • 面向元信息编程MDOP

    • 注解 @Annotation
    • 反射 Reflection
    • 泛型 Generic
  • 面向函数编程FOP

    • 函数式接口 @FunctionalInterface
    • 默认方法
    • 方法引用
  • 面向模块编程MOP

五、编程思想

  • 契约编程

    • 操作对象 Field字段、Method方法、Constructor构造器
    • 语义命名:模块名、包名、类名、枚举、字段、方法、常量
    • 访问控制:private(默认)、protected、public
    • 异常错误:类型(检查和非检查、层次(Throwable、Error、Exception)、来源(JDK 自定义 三方库)
    • 构造器、方法参数:名称、类型(数据结构、泛型)、顺序、数量、约束
    • 方法返回类型:类型(数据结构、泛型)、多态性(层次性)、约束(注解)
  • 设计模式

    • 面向对象设计模式
      • 构造模式
      • 结构模式
      • 行为模式
      • 并发模式
    • 面向切面设计模式
      • 判断模式
      • 拦截模式
    • 面向元数据设计模式
      • 泛型接口设计
      • 注解驱动设计
    • 面向函数设计模式
      • 函数式接口设计SCFP
      • Fluent API设计
      • Reactive / Stream API设计
  • 模式驱动

    • 接口驱动

      • Java SE (GoF23模式)
      • Java EE API (Servlet/JSP/EJB)
      • Spring Core API(interface 21)
    • 配置驱动

      • Java System Properties
      • OS 环境变量
      • 文件配置(XML/Properties/YAML)
      • Java EE配置(JDNI/Servlet EJB)
    • 注解驱动

      • Java EE (Java Beans/JMX)
      • Java EE (Servlet 3.0/JAX-RS/Bean Validation/EJB 3.0)
      • Spring(@Component/@Service/@Respository)
      • Spring Boot(@SpringBootApplication)
      • Spring Cloud(@SpringCloudApplication)
    • 函数驱动

      • Java 8 Stream API
      • Java 9 FLow API
      • RxJava
      • Vert.x
      • Spring Boot WebFlux
      • Spring Cloud Gateway/Function
    • 模块驱动

      • Java OSGI
      • Java 9 Module
      • Spring @Enable*
      • Spring Boot AutoConfiguration
      • Spring Boot Actuator

文章来源: pengshiyu.blog.csdn.net,作者:彭世瑜,版权归原作者所有,如需转载,请联系作者。

原文链接:pengshiyu.blog.csdn.net/article/details/108551476

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。