原生类(基本数据类型)和强类型(引用类型)
1. 除了八个基本数据类型都是引用类型
但是八个基本数据类型可转换为包装类
基本数据类型没有方法,强类型有方法
装箱:基本数据类型转换为包装类;
拆箱:包装类转换为基本数据类型.
byte - - - Byte
short - - - Short
int - - - Integer
long - - - Long
float - - - Float
double - - - Double
char - - - Character
boolean - - - Boolean
2 常量池概念:
“啊”,1,2,4数据称为常量,常量池中如果没有第一次
会创建该常量,然后返回引用,
如果有,直接返回常量的引用,不会再创建
3. 堆
用户每次new关键字的对象,都会在堆内存中创建
一个新的对象,并返回该新对象的引用.
4.栈
1. 栈描述的是方法执行的内存模型。每个方法被调用都会创建一个栈帧(存储局部变量、操作数、方法出口等)
2. JVM为每个线程创建一个栈,用于存放该线程执行方法的信息(实际参数、局部变量等)
3. 栈属于线程私有,不能实现线程间的共享!
4. 栈的存储特性是“先进后出,后进先出”
5. 栈是由系统自动分配,速度快!栈是一个连续的内存空间!
5 == 与 queals比较
== 基本类型比较值,
String的equals 方法是比较内容本身,和地址无关,
内容相等则返回true.
==如果相等, 那么equals一定相等
反之, equals相等, ==不一定相等
6 包装类和基本数据类型比较
包装类的equals首先判断是否同一类型, 如果类型不同直接false,
还来不及比数据.
包装类和基本数据类型比较的时候, 统一按基本数据类型比较.比较值
7 整数常量池中默认只有 -128~127 共256个数. 后续的会在堆中开辟新的.
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200730210108911.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0NjUzOTQ2,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200730210117463.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0NjUzOTQ2,size_16,color_FFFFFF,t_70)
8包装类和基本数据类型的区别?
8.1 包装类可以为null ,原生类不可以为null.
8.2 包装类默认实现了一些方法,方便使用. 原生类没有方法.
8.3 包装类属于强类型, 引用传递. 原生类属于值传递.