java小知识
1、局部变量存在于栈内存中,全局变量和静态全局变量存在于堆内存中
2、堆栈
堆:其内存分配在堆上或者常量池(字符串常量、基本数据类型常量),需要通过new等方式来创建。
堆内存主要作用是存放运行时创建(new)的对象。
栈:一般基本数据类型,对象的引用变量 基本数据类型的变量(int、short、long、byte、float、double、boolean、char等)以及对象的引用变量,其内存分配在栈上,变量出了作用域就会自动释放。
Car car = new Car();
int i =2;
String string = new String("1");
栈 堆
car new Car()
i
string new String("1")
一个方法执行时,会产生一个栈内存,所有里面的局部变量都在栈内存中,方法结束,栈内存消息,不需要系统回收。
所以初始化对象时尽量不用new ,=null即可。对象的开销比较大
JVM:是基于堆栈的虚拟机,每个Java程序在一个独立的JVM实例上运行,每个JVM实例对应一个堆,
同个java程序内的多线程运行在同个JVM实例上,多个线程之间共享堆内存(多线访问堆时,要实现数据的同步)。
3、string类型compareTO方法
从首字母开始比较acs值
“a”.compareTo("a1") -1
“a”.compareTo("c") -2
4、jvm缓存,integer与Long类型
Integer i1 =100,Integer i2=100 i1==12 true
Integer i1 =1000,Integer i2=1000 i1==12 false
jvm缓存中会缓存值在-128-127的值,这些值指向同一个内存空间。当超过127就会new 一个新的对象