对于java中一些基础概念的归纳及理解

 1.java 堆栈 理解

  java对于堆栈内存的处理分区其实很复杂,这里粗暴的分为 三个部分 常量池、堆、栈

    常量池(constant pool):  指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据。

      它包括了关于类、方法、接口等中的常量,也包括字符串常量。一般 java 基本数据类型,

      都是放在常量池中。如 int a =1; 1就是放在常量池中。

    堆(heap): 堆中一般放置 new 的数据,对于对象的操作 一般是放在堆中  如 String str = new String("heap");

      heap 及存放在堆中。

      栈(stack):这里说明下,如 int a = 1; String str = "abc";  1和abc就会存在常量池中

      a 和 str 的引用指针存放于栈中,指针分别指向常量池中的 1和abc。String newStr = new String("newAbc");

      newAbc存放于堆中,newStr的指针引用存放栈中,指针指向存放于堆中的newAbc。

  具体了解jvm这一块,可翻阅书籍 《深入java虚拟机》 作者:(美)Bill Venners 著

   

   2.特殊的引用类型 String

    String是java中的特殊引用类型。说它特殊是因为 String extends Object 它就是个引用类型

    但是在应用中又凸显出值类型的特点。下面用一个例子来说明String的特点

    此例子转载于ProgramCreek网站

    

String s = "abcd";

String s2 = s; ||  String s2 = "abcd";

s = s.concat("ef");

       上图展示的是String的不变性。

   图二: String s2 =s; 是把 s的指针引用复制一个给s2; String s2 = "abcd"; java会去查找常量池中是否有 abcd  当有时,把 abcd值得引用付给s2

       图三:当给s这个字符串结尾追加一个ef的字符串时,不是在原来的基础追加ef,而是在内存中新增加一块地址存放abcdef ,

  然后再把s的指针指向从abcd 指向 abcdef 。

  

3.Collections和Collection 集合的结构及具体集合的使用

4.java异常的结构 及常见的异常与处理

原文地址:https://www.cnblogs.com/yehshuai/p/3273621.html