java 内存举例
1. java内存的主要划分

2. OOTest02.java 的内存划分
public class OOTest02{
public static void main(String[] args){
Student zhangsan=new Student();
zhangsan.id=1001;
zhangsan.name="张三";
zhangsan.sex=true;
zhangsan.address="北京";
zhangsan.age=21;
System.out.println("id="+zhangsan.id);
System.out.println("name"+zhangsan.name);
System.out.println("sex="+zhangsan.sex);
System.out.println("address="+zhangsan.address);
System.out.println("age="+zhangsan.age);
}
}
class Student{
int id;
String name;
boolean sex;
String address;
int age;
}
第一步:执行main方法,将main方法压入栈,然后new Studentd对象
Student zhangsan=new Student();

第二部: 对student赋值
zhangsan.id=1001;
zhangsan.name="张三";
zhangsan.sex=true;
zhangsan.address="北京";
zhangsan.age=21;

3. 不使用new关键字的问题
public class OOTest02{
public static void main(String[] args){
\\ Student zhangsan=new Student();
Student zhangsan=null;
zhangsan.id=1001;
zhangsan.name="张三";
zhangsan.sex=true;
zhangsan.address="北京";
zhangsan.age=21;
System.out.println("id="+zhangsan.id);
System.out.println("name"+zhangsan.name);
System.out.println("sex="+zhangsan.sex);
System.out.println("address="+zhangsan.address);
System.out.println("age="+zhangsan.age);
}
}
class Student{
int id;
String name;
boolean sex;
String address;
int age;
}
抛空指针异常,因为zhangsan没有指向任何对象,所以其地址为null,我们就使用student的属性,这样就导致了空指针异常。
Exception in thread "main" java.lang.NullPointerException

4. 参数传递
值传递
public class OOTest03{
public static void main(String[] args){
int i=10;
method1(i);
System.out.println(i);
}
public static void method1(int temp){
temp=1;
}
}


应用传递
/*
面向对象的封装性。
*/
public class OOTest04{
public static void main(String[] args){
Student zhangsan=new Student();
zhangsan.id=1001;
zhangsan.name="张三";
zhangsan.sex=true;
zhangsan.address="北京";
zhangsan.age=21; method1(student); System.out.println("id="+zhangsan.id);
System.out.println("name"+zhangsan.name);
System.out.println("sex="+zhangsan.sex);
System.out.println("address="+zhangsan.address);
System.out.println("age="+zhangsan.age); public static void method1(Student temp){
temp.name="李四";
}
}
} class Student{
int id;
String name;
boolean sex;
String address;
int age
}


java 内存举例的更多相关文章
- JVM学习(3)——总结Java内存模型
俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习!涉及到的知识点总结如下: 为什么学习Java的内存模式 缓存一致性问题 什么是内存模型 JMM(Java Memory Model)简 ...
- Java虚拟机12:Java内存模型
什么是Java内存模型 Java虚拟机规范中试图定义一种Java内存模型(Java Memory Model,JMM)来屏蔽掉各种硬件和操作系统的访问差异,以实现让Java程序在各种平台下都能达到一致 ...
- java虚拟机学习-JVM内存管理:深入Java内存区域与OOM(3)
概述 Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来. 对于从事C.C++程序开发的开发人员来说,在内存管理领域,他们即是拥有最高权力的皇帝又 ...
- JVM-7.Java内存模型与高效并发
更多内容参见<并发与同步>系列 一.引子 二.JMM 三.Java中的线程 四.线程安全 五.锁优化 一.引子 运算能力 摩尔定律:晶体管数量,代表的CPU的频率 Amdahl ...
- 二.GC相关之Java内存模型
根据上节描述的问题,我们知道其最终原因是GC导致的.本节我们就先详细探讨下与GC息息相关的Java内存模型. 名词解释:变量,理解为java的基本类型.对象,理解为java new出来的实例. Jav ...
- Java 多线程(六)之Java内存模型
目录 1. 并发编程的两个问题 2 CPU 缓存模型 2.1 CPU 和 主存 2.2 CPU Cache 2.3 CPU如何通过 Cache 与 主内存交互 2.4 CPU 缓存一致性问题 3 Ja ...
- Java内存管理-你真的理解Java中的数据类型吗(十)
勿在流沙筑高台,出来混迟早要还的. 做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! 作为Java程序员,Java 的数据类型这个是一定要知道的! 但是不管是那种数据类型最 ...
- OutOfMemoryError异常java内存泄漏(Memory Leak)和内存溢出(Memory Overflow)
本篇文章理解源自于<深入理解java虚拟机>2.4章节 实战:OutOfMemoryError异常 在以下例子中,所有代码都可以抛出OutOfMemoryError异常,但是要区分到底 ...
- 知识点:Java 内存模型完全解密
Java虚拟机(JVM) 规范中定义了一种Java的内存模型,即Java Memoory Model(简称JMM),用来实现让Java程序在各个平台下都能达到一致的内存访问效果. JVM是整个虚拟机, ...
随机推荐
- Appium——appium之mac环境安装
一.安装brew:Homebrew是一款Mac OS平台下的软件包管理工具执行:/usr/bin/ruby -e "$(curl -fsSL https://raw.githubuserco ...
- MongoDB安装为windows服务
MongoDB 下载 下载地址:http://www.mongodb.org/downloads 下载安装完成之后 第一步 创建D:\Program Files\mongodb\data 目录第二步 ...
- hive 取两次记录的时间差 lead lag first_value last_value
-- LEAD(col,n,DEFAULT) 用于统计窗口内往下第n行值 -- 第一个参数为列名,第二个参数为往下第n行(可选,默认为1),第三个参数为默认值(当往下第n行为NULL时候,取默认值,如 ...
- Filter责任链模式
Filter责任链的创建 org.apache.catalina.core.ApplicationFilterFactory#createFilterChain, 此方法是被org.apache.c ...
- Docker Ubuntu/CentOS 下运行 java jar
官方安装方法 https://docs.docker.com/engine/installation/linux/ubuntu/ Ubuntu安装包 https://download.docker.c ...
- iTween Scale缩放
void Start () { //键值对儿的形式保存iTween所用到的参数 Hashtable args = new Hashtable(); //放大的倍数 args.Add(, , )); / ...
- Unity 去除场景中的雾效果
Windows——Lighting——Setting,然后出现下面窗口,把Other Setting下,Fog的对勾去掉就可以了.
- WSGI学习系列Pecan
Pecan Introduce Pecan是一个轻量级的基于Python的Web框架, Pecan的目标并不是要成为一个“full stack”的框架, 因此Pecan本身不支持类似Session和D ...
- gcc标准,c++中的inline
1. GCC的inlinegcc对C语言的inline做了自己的扩展,其行为与C99标准中的inline有较大的不同. 1.1. static inlineGCC的static inline定义很容易 ...
- C++中的虚函数表
(感谢http://blog.csdn.net/haoel/article/details/1948051/) C++中的虚函数的作用主要是实现了多态的机制. 多态,简而言之就是用父类型别的指针指向其 ...