IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> java之内存分析 -> 正文阅读

[Java知识库]java之内存分析

1.java程序在内存中运行.

2.内存划分:
栈:存放局部变量和栈帧(main()在栈帧中运行).效率最高.
堆:所有new出来的东西存放在堆中.和成员属性,效率比栈低点.
方法区:存放.class文件,静态区(存放静态变量),常量池(存放常量).效率最低.
注意:常量池中数据不可重量.

3.一个对象内存分析:

eg:public class Test1 {
public static void main(String[] args) {
	//创建对象
	Student stu1=new Student();
	
	//用对象调用方法给属性赋值
	stu1.setSname("张三");
	stu1.setSage(11);
	
	System.out.println("学生姓名:"+stu1.getSname()+",年龄:"+stu1.getSage());
}

}

4.多个对象的内存分析

public class Test2 {

public static void main(String[] args) {
	//创建对象
	Student stu1=new Student();
	Student stu2=new Student();
	
	//用对象调用方法给属性赋值
	stu1.setSname("张三");
	stu1.setSage(11);
	
	stu2.setSname("李四");
	stu2.setSage(18);
	
	System.out.println("学生姓名:"+stu1.getSname()+",年龄:"+stu1.getSage());
	System.out.println("学生姓名:"+stu2.getSname()+",年龄:"+stu2.getSage());
}
}

5.方法传参
5.1:值传递:方法的形参是基本数据类型叫值传递,值传递传的是实参变量值,所以在方法 中对值作了更改,在方法中这些值变了,方法执行完后,实参变量的值不变.

	eg:public class Test3 {

public static void main(String[] args) {
	//声明两个变量并赋值
	int a=8;
	int b=10;
	System.out.println("交换前两个数为:a="+a+",b="+b);//8,10
	
	//创建对象,用对象调用方法交换两个数
	Change c=new Change();
	c.changeNum(a, b);
	
	System.out.println("交换后两个数为:a="+a+",b="+b);//8,10
}

}

5.2:引用传递:方法形参是引用数据类型叫引用传递.引用 传递传的是实参变量的内存地				址,在方法对内存地址中值作了更改,方法中值就改了,方法执行完后实参				变量的值改变了.
	 
    eg:public static void main(String[] args) {
	//创建对象
	Student stu2=new Student();
	stu2.setSname("王五");
	stu2.setSage(100);
	System.out.println("改变前对象的姓名:"+stu2.getSname()+",年龄:"+stu2.getSage());//王五,100
	
	//创建对象调用方法改变对象的属性值
	Change c=new Change();
	c.changeStu(stu2);
	
	System.out.println("改变后对象的姓名:"+stu2.getSname()+",年龄:"+stu2.getSage());//江展华,30
}

6.数组的内存分析

public static void main(String[] args) {
	//声明一维数组
	int[] nums=new int[3];
	//给一维数组每个空间赋值
	nums[0]=59;
	nums[1]=49;
	nums[2]=99;
	System.out.println("一维数组:"+Arrays.toString(nums));
	
	//声明二维数组
	int[][] arrs=new int[2][2];
	//给二维数组的每个空间一维数组每个空间赋值
	arrs[0][0]=11;
	arrs[0][1]=12;
	
	arrs[1][0]=21;
	arrs[1][1]=22;
	System.out.println("二维数组:");
	for (int[] a : arrs) {
		System.out.println(Arrays.toString(a));
	}
	
	//声明对象数组,本质一维数组,数组的每个空间存的是一个对象
	//对象数组整体遵循数组使用原则,数组中每个空间是一个对象遵循对象使用原则
	Student[] stus=new Student[2];
	//给对象数组每个空间赋值,数组名[索引]相当于对象名
	stus[0]=new Student();
	stus[0].setSname("小明");
	stus[0].setSage(18);
	
	stus[1]=new Student();
	stus[1].setSname("小红");
	stus[1].setSage(28);
	System.out.println("对象数组:"+Arrays.toString(stus));
}

7.(扩展)对象数组:本质是一维数组,只是数组的每个空间存的对象的内存地址.
注意:对象数组整体上遵循数组使用原则;
对象数组的每个空间是一个对象要遵循对象使用原则;
对象数组的值实际存在对象的属性中.
eg:public static void main(String[] args) {
//声明int数组
int[] nums1=new int[3];
//给int数组赋值
nums1[0]=11;
nums1[1]=12;
nums1[2]=13;

	System.out.println("int数组nums1:"+Arrays.toString(nums1));
	
	//声明对象数组
	Student[] stus1=new Student[2];
	//给对象数组赋值
	stus1[0]=new Student();
	//用数组每个空间(即对象),用对象调出属性存值
	stus1[0].setSname("aa");
	stus1[0].setSage(18);
	
	stus1[1]=new Student();
	//用数组每个空间(即对象),用对象调出属性存值
	stus1[1].setSname("bb");
	stus1[1].setSage(38);
	
	System.out.println("对象数组stus1:"+Arrays.toString(stus1));
	
	//声明int数组的同时赋值
	int[] nums2= {66,88,99};
	System.out.println("int数组nums2:"+Arrays.toString(nums2));
	
	//声明对象数组的同时赋值
	Student[] stus2= {new Student("cc", 17),new Student("dd", 18)};
	System.out.println("对象数组stus2:"+Arrays.toString(stus2));
}
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-07-26 11:56:40  更:2021-07-26 11:58:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/24 20:25:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码