java基础知识:栈内存和堆内存
2016-06-19 14:28
288 查看
1.person p=new person();//定义一个对象,且使用new关键字在堆内存中开辟空间。
声明 person p=null;//在栈内存中声明,只开辟了栈内存空间,对象无法使用。
实例化对象:new person();//在堆内存总开辟空间,方可使用。
总结就是:1.对象是保存在栈内存中,属性保存在堆内存中。
2.程序运行中有两个存储空间可用,一个是栈,是归属于进程本身的,另外一个是堆,所有进程共用的。
局部变量在声明周期为函数内部,其存储空间位于栈中。当进入函数时,会对根据局部变量需求,在栈上申请一段内存空间,供局部变量使用。当局部变量生命周期结束后,在栈上释放。
由于进程的栈空间是有限的,所以要避免申请占用空间过大的局部变量,以及避免函数嵌套层数过多。这些都可能引起栈空间不够导致程序崩溃。
总结:成员变量初始化后存放在堆内存中;局部变量 初始化后存在栈内存中。
class T
{ private int age ;
public void show(){
age =23;//成员变量
String name=“23”;//局部变量
}
}
3.使用对象必须进过实例化(new 开辟堆内存空间)后才可使用。基本数据类型的默认值为0,引用数据类型的值为null;
4.案例一 string实例化的两种方式
1.直接赋值: String str="hello"; String str2="hello";
2.通过new 关键字开辟两个空间:String str=new String(“hello”);
5.案例二 string的两种比较方式
1.一般基本输数据类型比较用“==”号,二引用数据类型比较,也可以用“==”,比较的是内存地址值;
2.“equals”比较的是两个对象的内容;
String str1=“hello”;
String str2=“hello”;
String str3=str2;
System.out.println(str1=str2);//f
System.out.println(str2=str3);//t,str2.str3指向了同一个地址
System.out.println(str1=str3);//f
声明 person p=null;//在栈内存中声明,只开辟了栈内存空间,对象无法使用。
实例化对象:new person();//在堆内存总开辟空间,方可使用。
总结就是:1.对象是保存在栈内存中,属性保存在堆内存中。
2.程序运行中有两个存储空间可用,一个是栈,是归属于进程本身的,另外一个是堆,所有进程共用的。
局部变量在声明周期为函数内部,其存储空间位于栈中。当进入函数时,会对根据局部变量需求,在栈上申请一段内存空间,供局部变量使用。当局部变量生命周期结束后,在栈上释放。
由于进程的栈空间是有限的,所以要避免申请占用空间过大的局部变量,以及避免函数嵌套层数过多。这些都可能引起栈空间不够导致程序崩溃。
总结:成员变量初始化后存放在堆内存中;局部变量 初始化后存在栈内存中。
class T
{ private int age ;
public void show(){
age =23;//成员变量
String name=“23”;//局部变量
}
}
3.使用对象必须进过实例化(new 开辟堆内存空间)后才可使用。基本数据类型的默认值为0,引用数据类型的值为null;
4.案例一 string实例化的两种方式
1.直接赋值: String str="hello"; String str2="hello";
2.通过new 关键字开辟两个空间:String str=new String(“hello”);
5.案例二 string的两种比较方式
1.一般基本输数据类型比较用“==”号,二引用数据类型比较,也可以用“==”,比较的是内存地址值;
2.“equals”比较的是两个对象的内容;
String str1=“hello”;
String str2=“hello”;
String str3=str2;
System.out.println(str1=str2);//f
System.out.println(str2=str3);//t,str2.str3指向了同一个地址
System.out.println(str1=str3);//f
相关文章推荐
- JDK安装与环境变量配置
- Spring基础
- eclipse 4.2生成wsdl 客户端
- java JTable 列自适应大小(平均分配)
- struts2标签引用
- 设计模式 - - - 从单例模式谈起
- Spring @ResponseBody只能返回String类型数据解决办法
- Spring概述
- 整形数据(int)如何转换到字节型数据(byte)的
- 20145120《Java程序设计》课程总结
- 关于买鸡的问题,5文钱可以买一只公鸡,3文钱可以买一只母鸡,1文钱可以买3只雏鸡.现在用100文钱买100只鸡,那么各有公鸡、母鸡、雏鸡多少只?
- Struts2中Action访问Servlet API
- 一篇不错的讲解Java异常的文章
- 什么是java虚拟机?
- JAVA022--XML
- java对word、excel、pdf等操作综合文章
- JNI (Java Native Interface)是什么
- Java新手入门需要掌握的30个基本概念
- JDBC与javaBean
- Spring缓存与声明式事务管理