• JDK版本新特性:
JDK1.4 正则表达式,异常链,NIO,日志类,XML解析器,XLST转换器
JDK1.5 自动装箱、泛型、动态注解、枚举、可变长参数、遍历循环
JDK1.6 提供动态语言支持、提供编译API和卫星HTTP服务器API,改进JVM的锁,同步垃圾回收,类加载
JDK1.7 提供GI收集器、加强对非Java语言的调用支持(JSR-292,升级类加载架构
JDK8 Lambda 表达式、方法引用、默认方法、新工具、Stream API、Date Time API 、Optional 类、Nashorn, JavaScript 引擎
JDK9 1、集合加强;2、私有接口方法;3、垃圾收集机制;4、I/O流加强;5、JShell工具
JDK10 1、局部变量类型推断;2、线程本地握手;3、GC改进和内存管理;
JDK11 1、字符串加强;2、HttClient Api;3、用于 Lambda 参数的局部变量语法;4、ZGC
JDK12 1、Switch Expressions;2、Shenandoah GC;
JDK13 1、switch优化更新;2、文本块升级;3、重新实现旧版套接字API;4、核心库/java.util中:I18N;5、取消使用未使用的内存
JDK14 1、switch优化变更为最终版;2、垃圾回收相关;3、instanceof的模式匹配(预览版);4、删除了安全库java.security.acl API;5、货币格式(优化)
  • Java8的新特性

1、接口中的默认方法和静态方法
默认方法就像一个普通Java方法,只是方法用default关键字修饰,其目的是为了解决接口的修改与已有的实现不兼容的问题。
静态方法就像一个普通Java静态方法,但方法的权限修饰只能是public或者不写。默认方法和静态方法使Java的功能更加丰富。
2、函数式接口和Lambda表达式
函数式接口是为Java 8中的lambda而设计的,lambda表达式的方法体其实就是函数接口的实现。“lambda表达式”是一段可以传递的代码,因为他可以被执行一次或多次。

3、移除了永久带,取而代之的是metaSpace(元空间)。
4、Stream API
一个Stream表面上与一个集合很类似,允许你改变和获取数据,但实际上却有很大区别:
(1)Stream自己不会存储元素。元素可能被存储在底层的集合中,或者根据需要产生出来。
(2)Stream操作符不会改变源对象。相反,他们返回一个持有新结果的Stream。

  • 为什么很多公司选择不升级JDK版本,仍然使用JDK8?

项目的需要:

  1. java现存的大部分第三方框架对jdk没特殊要求
  2. jdk升级可能会舍弃一部分旧有的类和方法,导致不兼容
  3. 要看值得不值得,在兼容的前提下,项目jdk有没有升级的必要性
  4. 有时候,这个事不是程序员所能决定的
  • Java 异常机制

在java中,所有的异常都有一个共同的祖先 Throwable类。Throwable类有两个子类,一个是Error类,一个是Exception。在java中能通过代码处理的我们叫做异常,而我们不能处理的才叫做错误。

  1. 错误指的是:JVM运行错误,栈空间用尽,类定义错误等等非常严重的问题。
  2. Exception主要负责处理类似:空指针、除数为零、数组越界这类问题。

(1)RunTimeException运行时异常,表示那些逻辑性错误,可以避免。无法预料,改正就可以,无需抛出或处理。

NullPointerException(空指针异常)、IndexOutOfBoundsException(下标越界异常)、ClassCastException(类转换异常)、NumberFormatException(数字格式异常)、IllegalArgumentException(传递非法参数异常) 、ArrayStoreException(数据存储异常,操作数组时类型不一致)

(2)非运行时异常表示有可能发生的异常,我们需要声明。被强制必须抛出或处理来保证程序的安全性。

为了防止代码在运行时出现问题,java强制规定:非运行时异常必须被处理。

  • Maven 解决 jar 冲突

遇到冲突的时候第一步要找到maven加载的是什么版本的jar包,通过们mvn dependency:tree查看依赖树,通过maven的依赖原则来调整依赖在pom文件的申明顺序。

  • comparable接口和comparator的区别

①、Comparable位于包java.lang下,而Comparator位于包java.util下。
②、Comparable接口将比较代码(重写compareTo(T t)方法)嵌入需要进行比较的类的自身代码中,而Comparator接口在一个独立的类中实现比较(重写compare(T t1, T t2)方法)。
③、Comparable接口强行对实现它的每个类的对象进行整体排序(自然排序),而Comparator接口不强制进行自然排序,可以指定排序顺序。
④、如果前期类的设计没有考虑到类的Compare问题而没有实现Comparable接口,后期可以通过Comparator接口来实现比较算法进行排序。
其中Comparator接口相当于策略模式的抽象接口,具体的比较器实现类是具体的策略实现,集合操作类相当于Context ,在Context中使用具体策略进行大小比较。

Java常见问题-基础的更多相关文章

  1. Java之--Java语言基础组成—数组

    Java语言基础组成-数组 Java语言由8个模块构成,分别为:关键字.标识符(包名.类名.接口名.常量名.变量名等).注释.常量和变量.运算符.语句.函数.数组. 本片主要介绍Java中的数组,数组 ...

  2. 第二十六节:复习Java语言基础-Java的概述,匿名对象,封装,构造函数

    Java基础 Java语言概述 Java语言 语言 描述 javaee 企业版 javase 标准版 javame 小型版 JDK JDK(Java开发工具包) Java语言 语言 Java语言 Ja ...

  3. day01<计算机基础知识&Java语言基础>

    计算机基础知识(计算机概述) 计算机基础知识(软件开发和计算机语言概述) 计算机基础知识(人机交互) 计算机基础知识(键盘功能键和快捷键) 计算机基础知识(如何打开DOS控制台) 计算机基础知识(常见 ...

  4. Java以基础类库

    Java以基础类库JFC(Java Foundation Class)的形式为程序员提供编程接口API,类库中的类按照用途归属于不同的包中. (一)java.lang包 Java最常用的包都属于该包, ...

  5. Java SE 基础:注释

    Java SE 基础:注释 一.注释定义 用于解释说明程序的文字. 二.注释的作用 1.解释说明程序,提高程序的可读性 2.可以帮助我们调试程序:通过注释代码块,检测错误位置 三.格式 1.单行注释 ...

  6. Java SE 基础:标识(zhì)符

    Java SE 基础:标识(zhì)符 一.标识符定义 标识符,就是给类.接口.方法.变量等起名字时的字符序列 二.组成规则与注意事项 1.组成规则 英文大小写字母 数组 $ 和 _ 2.注意事项 不 ...

  7. Java SE 基础:常用关键字

    Java SE 基础:常用关键字 常用关键字表

  8. java IO基础操作

    java IO基础,通熟易懂,好久没复习java 基础了.这里是传送门... http://www.cnblogs.com/nerxious/archive/2012/12/15/2818848.ht ...

  9. Java学习总结(二)----Java语言基础

    1.     Java语言基础 2.1 关键字 定义:被java语言赋予特殊含义的单词 特点:关键字中的字母都为小写 用于定义数据类型的关键字 class,interface,byte,short,i ...

  10. [转]Java多线程干货系列—(一)Java多线程基础

    Java多线程干货系列—(一)Java多线程基础 字数7618 阅读1875 评论21 喜欢86 前言 多线程并发编程是Java编程中重要的一块内容,也是面试重点覆盖区域,所以学好多线程并发编程对我们 ...

随机推荐

  1. 泊松盘采样(Poisson Disk Sampling)生成均匀随机点

    当需要生成随机点且要求随机点自然均匀的分布时,使用泊松盘采样就较为适合. 但该方法与统计学上的概念关联不大,这个只相当于点在面积上服从泊松分布, 而实现这个结果有很多做法. 最终效果: 圆形为含半径的 ...

  2. apisix~authz-keycloak插件介绍

    参考:https://apisix.apache.org/docs/apisix/plugins/authz-keycloak/ kc插件源码梳理及原理说明 如果只是进行keycloak颁发的toke ...

  3. AIRIOT物联网低代码平台如何配置交通部JT-808协议?

    属性配置可配置终端ID和SIM卡号,数据点配置决定设备传上来的哪些数据可以存储展示. 驱动配置可配置采集周期和通讯超时时间. AIRIOT物联网低代码平台如何配置交通部JT-808协议?具体操作如下: ...

  4. k8s其它学习链接

    k8s弹性伸缩概念以及测试用例 https://www.cnblogs.com/jasonboren/p/11493347.html CKA看这一篇就够了 k8s官网 k8s基础之六 有状态和无状态的 ...

  5. git cherry-pick合并其它分支的某次提交(commits)到当前分支

    git cherry-pick 可以选择某一个分支中的一个或几个commit(s)来进行操作. 例如,假设我们有个稳定版本的分支,叫v2.0.0,另外还有个开发版本的分支v3.0.0,我们不能直接把两 ...

  6. 5款超好用的AI换脸软件,一键视频直播换脸(附下载链接)

    随着AIGC的火爆,AI换脸技术也被广泛应用于娱乐.广告.电影制作等领域,本期文章系统介绍了市面上超火的5款AI软件 换脸整合包收录了全部5款AI工具,请按照需要选择下载: 百度网盘:https:// ...

  7. sqlserver给某个用户授权某张表得操作权限,并利用这个用户进行跨库查询

    Sql表授权 创建用户 此时,改用户登录是看不到任何表的 设置权限         创建连接   EXEC sp_addlinkedserver 'LinkName','','SQLOLEDB','要 ...

  8. RTMP协议中的Chunk Stream ID (CID)的作用

    一.协议分层 RTMP包是以Message的结构封装的,结构如下所示: 1)Message Type ID在1-7的消息用于协议控制,这些消息一般是RTMP协议自身管理要使用的消息,用户一般情况下无需 ...

  9. Python爬虫 | 批量爬取今日头条街拍美图

    01 前言 上篇文章我们爬取了今日头条街拍美图,心情相当愉悦,今天这篇文章我们使用Selenium来爬取当当网的畅销图书排行.正所谓书中自有黄金屋,书中自有颜如玉,我们通过读书学习来提高自身的才华,自 ...

  10. 剑指Offer-54.字符流中第一个不重复的字符(C++/Java)

    题目: 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g".当从该字符流中读出前 ...