1.String对象和常量池 2.基本数据类型和封装类(128以下等不做缓存)

时间:2022-12-20 15:47:41

序言:

基础知识:

1.java的基本类型:

   字符类型char,布尔类型boolean以及数值类型byte、short、int、long、float、double

2.引用类型

   Java有 5种引用类型(对象类型):类 接口 数组 枚举 标注

   引用类型:底层结构和基本类型差别较大

JVM的内存空间:

(1). Heap 堆空间:分配对象 new Student()

(2). Stack 栈空间:临时变量 Student stu

(3). Code 代码区 :类的定义,静态资源 Student.class

eg:Student stu = new Student(); //new 在内存的堆空间创建对象

stu.study(); //把对象的地址赋给stu引用变量

   上例实现步骤:

      a.JVM加载Student.class 到Code区

      b.new Student()在堆空间分配空间并创建一个Student实例

      c.将此实例的地址赋值给引用stu, 栈空间

3.字符串常量池和数据模型

4.别跟斯特拉夫斯基扯淡枚举是什么!类类类!

             经典的图片

                                                   1.String对象和常量池  2.基本数据类型和封装类(128以下等不做缓存)

5.存储值得知识:数据结构

Java工具包提供了强大的数据结构。在Java中的数据结构主要包括以下几种接口和类:

  • 枚举(Enumeration)
  • 位集合(BitSet)
  • 向量(Vector)
  • 栈(Stack)
  • 字典(Dictionary)
  • 哈希表(Hashtable)
  • 属性(Properties)

以上这些类是传统遗留的,在Java2中引入了一种新的框架-集合框架(Collection)

枚举(Enumeration)接口虽然它本身不属于数据结构,但它在其他数据结构的范畴里应用很广。 枚举(The Enumeration)接口定义了一种从数据结构中取回连续元素的方式。例如,枚举定义了一个叫nextElement 的方法,该方法用来得到一个包含多元素的数据结构的下一个元素。


6.例子探讨

   /**
* 字符串判断
* 1.== 和!=的使用对象是同一个对象的比较
* 2.当不确定字符串是否是常量池的对象的时候,使用equals()比较
* 3.正常情况下都是常量池的字符串!!!
*/
public void setStr() {
//String a = new String("");//那个叫兽会这样做?
String a = "";
PackageInfo packageInfo = new PackageInfo();//一个
packageInfo.setRemark(a);
if (packageInfo.getRemark() == "") {
System.out.println("同一个对象!");
} else {
System.out.println("不是同一个对象!");
}
}


总结:

         1.了解创建一个基本数据类型和对象的区别,内存区别,存的位置(栈 堆),初始化大小,都和JMM模型有关联

         2.对于特殊的字符串对象,它提供了一个琦葩的方法创建对象,因为他不是基本数据类型,总得有个构造器去创建

         官方的解析:

    

    /**
* Initializes a newly created {@code String} object so that it represents
* the same sequence of characters as the argument; in other words, the
* newly created string is a copy of the argument string.
Unless an
* explicit copy of {@code original} is needed
, use of this constructor is
* unnecessary since Strings are immutable.
*
* @param original
* A {@code String}
*/
public String(String original) {
this.value = original.value;
this.hash = original.hash;
}
      重点都红色标出来了,回去背书吧,original:原始的,原件