Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day32,kalilinux教程
- 方法与构造函数引用:
Java 8 允许你使用 ::
关键字来传递方法或者构造函数引用,上面的代码展示了如何引用一个静态方法,我们也可以引用一个对象的方法:
converter = something::startsWith;
String converted = converter.convert(“Java”);
System.out.println(converted);
- 函数式接口:
所谓的函数式接口,当然首先是一个接口,然后就是在这个接口里面只能有一个抽象方法。
- Annotation 注解:支持多重注解:
很多时候一个注解需要在某一位置多次使用。
@YourAnnotation
@YourAnnotation
public void test(){
//TODO
}
- 新的日期时间 API:
Java 8新的Date-Time API (JSR 310)受Joda-Time的影响,提供了新的java.time
包,可以用来替代java.util.Date和java.util.Calendar
。
一般会用到Clock、LocalDate、LocalTime、LocalDateTime、ZonedDateTime、Duration这些类,对于时间日期的改进还是非常不错的。
- Base64编码:
Base64编码是一种常见的字符编码,可以用来作为电子邮件或Web Service附件的传输编码。
在Java 8中,Base64编码成为了Java类库的标准
。Base64类同时还提供了对URL、MIME友好的编码器与解码器。
- JavaScript引擎Nashorn:
Nashorn允许在JVM上开发运行JavaScript应用,允许Java与JavaScript相互调用。
- Stream的使用:
Stream API是把真正的函数式编程风格引入到Java中。其实简单来说可以把Stream理解为MapReduce
,当然Google的MapReduce的灵感也是来自函数式编程。她其实是一连串支持连续、并行聚集操作的元素。从语法上看,也很像linux的管道、或者链式编程,代码写起来简洁明了,非常酷帅!
- Optional:
Java 8引入Optional类来防止空指针异常,Optional类最先是由Google的Guava项目引入的。Optional类实际上是个容器:它可以保存类型T的值,或者保存null。使用Optional类我们就不用显式进行空指针检查了
。
- 扩展注解的支持:
Java 8扩展了注解的上下文,几乎可以为任何东西添加注解,包括局部变量、泛型类、父类与接口的实现,连方法的异常也能添加注解。
- 并行(parallel)数组:
支持对数组进行并行处理,主要是parallelSort()方法,它可以在多核机器上极大提高数组排序的速度。
- 编译器优化:
Java 8将方法的参数名加入了字节码中,这样在运行时通过反射就能获取到参数名,只需要在编译时使用-parameters参数。
- 其他核心 API 的改进
Java IO改进
一些IO改进包括:
Files.list(Path dir) 返回延迟填充的Stream,其元素是目录中的条目。
Files.lines(Path path) 从文件中读取所有行作为流。
Files.find() 通过在以给定起始文件为根的文件树中搜索文件,返回通过路径延迟填充的Stream。
BufferedReader.lines() 返回一个Stream,其元素是从此BufferedReader中读取的行。
集合 API 的改进
我们已经看到了 forEach()方法和用于集合的 Stream API。Collection API还有一些新方法是:
Iterator forEachRemaining(Consumer action)在所有元素都已处理完毕或该动作引发异常之前,对每个剩余元素执行给定操作的默认方法。
Collection removeIf(Predicate filter)删除此集合中所有满足特定条件的元素的默认方法。
Collection spliterator() 该方法返回Spliterator实例,该实例可用于顺序或并行遍历元素。
map replaceAll(),compute(),merge()方法。
具有键冲突的HashMap类的性能改进
课间休息,看看晚间烧烤摊子~~
怎么说,饿了么?
面试题2:什么是内部类?内部类的作用?
==================================================================================
将一个类定义在另一个类或者另一个方法里面,这样的类称着内部类;
值得注意的是,内部类能够访问外部类的所有成员,包括private修饰的。
举例:把类Inner定义在类Outer中,类Inner就被称为内部类。
class Outer {
class Inner {
}
}
注意:
- 内部类是一个编译时的概念,一旦编译成功,就会成为完全不同的两类。
- 对于一个名为 outer 的外部类和其内部定义的名为 inner 的内部类。编译完成后出现 outer.class 和 outer$inner.class 两类。
- 所以内部类的成员变量/方法名可以和外部类的相同。
内部类的作用
1、内部类可以很好的实现隐藏。
非内部类是不可以使用 private和 protected修饰的,但是内部类却可以,从而达到隐藏的作用。同时也可以将一定逻辑关系的类组织在一起,增强可读性。
2、间接的实现多继承。
内部类提供了Java的"多重继承"的解决方案,弥补了Java类是单继承的不足
每个内部类都能独立地继承自一个(接口的)实现,所以无论外部类是否已经继承了某个(接口的)实现,对于内部类都没有影响。如果没有内部类提供的可以继承多个具体的或抽象的类的能力,一些设计与编程问题就很难解决。所以说内部类间接的实现了多继承。
内部类特点
内部类仍然是一个独立的类,在编译之后内部类会被编译成独立的.class文件,但是前面冠以外部类的类名和$符号
内部类不能用普通的方式访问。内部类是外部类的一个成员,因此内部类可以自由地访问外部类的成员变量,无论是否是private的
内部类声明成静态的,就不能随便的访问外部类的成员变量了,此时内部类只能访问外部类的静态成员变量
小城故事多,晚上大排档走一走,真香!
面试题3:内部类有哪几种?分别介绍一下
==================================================================================
- 成员内部类
- 局部内部类
- 静态内部类
- 匿名内部类
成员内部类
成员内部类——就是位于外部类成员位置的类
public class Outer {
//不对外开放的
class Inner{
public void show(){
System.out.println(“成员内部类”);
}
}
}
特点:
内部类就像一个实例成员一样存在于外部类中。
内部类可以访问外部类的所有成员就想访问自己的成员一样没有限制。
内部类中的 this 指的是内部类的实例对象本身,如果要用外部类的实例对象就可以用类名 .this 的方式获得。
内部类对象中不能有静态成员,原因很简单,内部类的实例对象是外部类实例对象的一个成员。
局部内部类
局部内部类——就是定义在一个方法或者一个作用域里面的类;
class Outer {
public void method
【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】浏览器打开:qq.cn.hn/FTf 开源分享
(){
class Inner {
System.out.println(“局部内部类”);
}
}
}
特点:
方法中的内部类没有访问修饰符, 即方法内部类对包围它的方法之外的任何东西都不可见。
方法内部类只能够访问该方法中的局部变量,所以也叫局部内部类。而且这些局部变量一定要是final修饰的常量。
静态内部类
我们所知道static是不能用来修饰类的,但是成员内部类可以看做外部类中的一个成员,所以可以用static修饰,这种用static修饰的内部类我们称作静态内部类,也称作嵌套内部类.
特点:不能使用外部类的非static成员变量和成员方法
class Outter {
int age = 10;
static age2 = 20;
public Outter() {
}
static class Inner {
public method() {
System.out.println(age);//错误
System.out.println(age2);//正确
}
}
}
public class Test {
public static void main(String[] args) {
Outter.Inner inner = new Outter.Inner();
inner.method();
}
}
匿名内部类
一个没有名字的类,是内部类的简化写法
本质:其实是继承该类或者实现接口的子类匿名对象
Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day32,kalilinux教程相关推荐
- Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day38】—— 实战那些事儿2
大家好,我是陈哈哈,北漂五年.相信大家和我一样,都有一个大厂梦,作为一名资深Java选手,深知面试重要性,接下来我准备用100天时间,基于Java岗面试中的高频面试题,以每日3题的形式,带你过一遍 ...
- Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day37】—— 并发编程3
大家好,我是陈哈哈,北漂五年.相信大家和我一样,都有一个大厂梦,作为一名资深Java选手,深知面试重要性,接下来我准备用100天时间,基于Java岗面试中的高频面试题,以每日3题的形式,带你过一遍 ...
- Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day34】—— 消息队列2
大家好,我是陈哈哈,北漂五年.相信大家和我一样,都有一个大厂梦,作为一名资深Java选手,深知面试重要性,接下来我准备用100天时间,基于Java岗面试中的高频面试题,以每日3题的形式,带你过一遍 ...
- Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day23】—— 算法1
大家好,我是陈哈哈,北漂五年.相信大家和我一样,都有一个大厂梦,作为一名资深Java选手,深知面试重要性,接下来我准备用100天时间,基于Java岗面试中的高频面试题,以每日3题的形式,带你过一遍 ...
- Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day36】—— 实战那些事儿1
大家好,我是陈哈哈,北漂五年.相信大家和我一样,都有一个大厂梦,作为一名资深Java选手,深知面试重要性,接下来我准备用100天时间,基于Java岗面试中的高频面试题,以每日3题的形式,带你过一遍 ...
- Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day25】—— JVM1
大家好,我是陈哈哈,北漂五年.相信大家和我一样,都有一个大厂梦,作为一名资深Java选手,深知面试重要性,接下来我准备用100天时间,基于Java岗面试中的高频面试题,以每日3题的形式,带你过一遍 ...
- Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day24】—— 分布式1
大家好,我是陈哈哈,北漂五年.相信大家和我一样,都有一个大厂梦,作为一名资深Java选手,深知面试重要性,接下来我准备用100天时间,基于Java岗面试中的高频面试题,以每日3题的形式,带你过一遍 ...
- Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day28】—— 数据库5
大家好,我是陈哈哈,北漂五年.相信大家和我一样,都有一个大厂梦,作为一名资深Java选手,深知面试重要性,接下来我准备用100天时间,基于Java岗面试中的高频面试题,以每日3题的形式,带你过一遍 ...
- Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day51】—— tomcat
大家好,我是陈哈哈,北漂五年.相信大家和我一样,都有一个大厂梦,作为一名资深Java选手,深知面试重要性,接下来我准备用100天时间,基于Java岗面试中的高频面试题,以每日3题的形式,带你过一遍 ...
- Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day35】—— JVM2
大家好,我是陈哈哈,北漂五年.相信大家和我一样,都有一个大厂梦,作为一名资深Java选手,深知面试重要性,接下来我准备用100天时间,基于Java岗面试中的高频面试题,以每日3题的形式,带你过一遍 ...
最新文章
- 【C/C++】链表的理解与使用
- 【Java基础】面向对象特性
- linux CentOS7 磁盘分区fdisk 、df 、du、parted 命令实例
- linux系统下tar/gz/7z/xz/bz2/zip等各种格式的打包压缩解压
- 解决三星手机EditText背景色的问题
- C++模板的一些基础知识
- ubuntu-文件管理、编辑
- Linux性能调优集合
- javascript在网页中实现粘贴qq截图功能
- recv函数阻塞_socket缓冲区以及阻塞模式详解
- Skyline软件二次开发初级——6如何在WEB页面中的三维地图上进行坐标和方向计算...
- 软件中的快速原型技术
- scipy--统计检验
- cad和html5哪个好,最好用的5个CAD软件 你用的是哪款呢
- 关注IT精英:微利时代如何赚大钱 (转载)
- 2021-10-13-草稿纸
- 电竞英雄联盟数据API接口 - 【联赛列表】API调用示例代码
- 2020年AR(增强现实)最新发展趋势
- maya的BonusTools
- 基于SSD固态硬盘的数据库性能优化