类是种特殊的数据类,也可以说是自定义数据类型,

class 中可以定义属性

可以是全局属性,和局部属性,属性就是变量,在java 中,专业名词叫属性,定义方法和属性的原则,尽量使用private 的就使用private 修饰,因为这样可以做到数据的隐藏

class 中可以定义方法可以定义Static 方法 和普通方法

更具体的说 class 是一种将所有数据类型的聚集,而产生一种新的数据类型,简单的来说class 就是Object 类型数组,而且是可变化的数组,当然这只是一个比喻而已,在class 中还有很多数据结构,

Static

Static全局方法,Static 全局变量,是和类的加载而加载,Static方法可以出现重载的形式,而Static 变量则不能出现重复的情况

方法区

在方法中可以定义各种变量,和对象,不管是对象还是变量都必须有一个初始值,即使是null 也是合理的

数据结构

堆区

|- 所有的对象都保存在堆区中,且由堆为对象分配内存,由此证明java 堆区的数据都是动态申请

栈区

在栈中默认保存了,boolean ,byte ,char ,short ,int float ,long double 数据类型

网上据说,在栈中double ,long 会占用 2 变量的个空间,其它的则一个。

|- 保存所有基本数据类型,和对象引用地址

|- 使用new 创建一个对象后,JVM会把对象放入堆中,为了操作对象属性和方法,JVM 在栈中会定义一个变量,其变量就是创建对象的名称,作为首地址,此种变量称之引用变量。

运行时常量池

所有的常量都保存在常量池中

常量池所支持的类型,在常量池中没有基本数据类型,下面是基本数据类型的包装类

Byte ,Short ,Integer ,Long , Character , Boolean

Integer 大于Byte的最大范围时 小于Byte的最小范围,也就是大于128,小于 -127java 是不会在常量池中寻找和取出对象,如果是用new 的方式可以自行调用方法,代码实验!

第一种

Integer axe = -128;

Integer Xara = new Integer (-128).intValue();

System.out.println(axe==Xera);结果是true

 

第二种

Integer i2 = new Integer(Byte.MAX_VALUE).intValue();

lnteger i22 = new Integer(Byte.MAX_VALUE).intValue();

System.out.println(i2==i22);结果是true

 

第三种

Integer i2 = new Integer(Byte.MAX_VALUE);

lnteger i22 = new Integer(Byte.MAX_VALUE).intValue();

System.out.println(i2==i22);结果是false;

 

代码证明只要是整数数据类型。满足Byte的范围就能将对象取出,

第一种是自动调用intValue方法,第二种是不会自动调用,第三种是即使调用了也不相等,因为新的对象产生了