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, 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的区别

  • 很好的系列文章:
    Java 8新特性(一):Lambda表达式
    Java 8新特性(二):Stream API
    Java 8新特性(三):Optional类
    Java 8新特性(四):新的时间和日期API

  • 函数式编程:

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

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

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

Function
接受一个输入参数,返回一个结果。

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

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

你可能感兴趣的:(java基础类型、String类理解、版本对比、1.8新特性)