序言:
基础知识:
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.别跟斯特拉夫斯基扯淡枚举是什么!类类类!
经典的图片
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.对于特殊的字符串对象,它提供了一个琦葩的方法创建对象,因为他不是基本数据类型,总得有个构造器去创建
官方的解析:
/**重点都红色标出来了,回去背书吧,original:原始的,原件
* 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;
}