java基础类型、String类理解、版本对比、1.8新特性

1、java基本数据类型及长度

2、jvm的常量池:

JVM常量池浅析
Java常量池理解与总结

Java中的常量池,实际上分为两种形态:静态常量池运行时常量池。

  • 所谓静态常量池,即*.class文件中的常量池,class文件中的常量池不仅仅包含字符串(数字)字面量,还包含类、方法的信息,占用class文件绝大部分空间。

  • 而运行时常量池,则是jvm虚拟机在完成类装载操作后,将class文件中的常量池载入到内存中,并保存在方法区中.常说的常量池,就是指方法区中的运行时常量池。运行时常量池中还会包括直接引用。

3、java字符串不变性:

public final class String implements Serializable, Comparable<String>, CharSequence {

......

}

java基础解析系列(九)---String不可变性分析

  • 关于创建字符串:
        String s2=new String("jiajun");
        String s6=new String("jiajun");
        System.out.println(s2==s6);

    结果为false,都存放在堆内存,但是两个地方。

        String s6=new String("jiajun");
        String s1="jiajun";
        System.out.println(s1==s6);

    结果为false,s6存放在堆当中,而s1存放在常量池当中

        String s1="jiajun";
        String s7="jiajun";
        System.out.println(s1==s7);

    结果为true,都是存放在常量池

        String s4="jia";
        String s5=s4+"jun";
        String s1="jiajun";
        
        System.out.println(s1==s5);

    结果为false,变量的值在运行的时候才确定,所以此时s5实际上是new一个对象

        String s3="jia"+"jun";
        String s1="jiajun";
        System.out.println(s1==s3);

    结果为true,此时s1 s3都是指向常量池一个string

        String s1="jiajun";
        String s8=new String("jia")+"jun";
        System.out.println(s1==s8);

4、java序列化

JAVA对象流序列化时的readObject,writeObject,readResolve是怎么被调用的

什么是writeObject 和readObject?可定制的序列化过程

5、java 主要版本变化区别

Java 1.5, 1.6, 1.7, 1.8的区别

Java8函数式编程(一):Lambda表达式类型与常用函数接口
JDK 8 函数式编程入门

  • 函数式编程简介
    一切都是数学函数。函数式编程语言里也可以有对象,但通常这些对象都是恒定不变的 —— 要么是函数参数,要什么是函数返回值。函数式编程语言里没有 for/next 循环,因为这些逻辑意味着有状态的改变。相替代的是,这种循环逻辑在函数式编程语言里是通过递归、把函数当成参数传递的方式实现的。
  • 常用函数接口
  • 区别:

Consumer<T>
代表了接受一个输入参数并且无返回的操作

Function<T,R>
接受一个输入参数,返回一个结果。

Predicate<T>
接受一个输入参数,返回一个布尔值结果。

Supplier<T>
无参数,返回一个结果。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容