Java 程序在运行时,需要在内存中的分配空间。为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。
栈 存储局部变量
堆 存储new出来的东西
方法区 (面向对象部分讲)
本地方法区 (和系统相关)

寄存器 (给CPU使用)

1:方法(掌握)
(1)方法:就是完成特定功能的代码块。
注意:在很多语言里面有函数的定义,而在Java中,函数被称为方法。
(2)格式:
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...) {
方法体语句;
return 返回值;
}

修饰符:目前就用 public static。后面再详细讲解其他修饰符
返回值类型:就是功能结果的数据类型
方法名:就是起了一个名字,方便我们调用该方法。
参数类型:就是参数的数据类型
参数名:就是变量
参数分类:
实参:实际参与运算的数据
形参:方法上定义的,用于接收实际参数的变量
方法体语句:就是完成功能的代码块
return:结束方法
返回值:就是功能的结果,由return带给调用者。
(3)两个明确:
返回值类型:结果的数据类型
参数列表:参数的个数及对应的数据类型
(4)方法调用
A:有明确返回值的方法
a:单独调用,没有意义
b:输出调用,不是很好,因为我可能需要不结果进行进一步的操作。但是讲课一般我就用了。
c:赋值调用,推荐方案
B:void类型修饰的方法
a:单独调用
(5)案例:
A:求和方案
B:获取两个数中的较大值
C:比较两个数据是否相同
D:获取三个数中的最大值
E:输出m行n列的星形
F:输出nn乘法表
(6)方法的注意事项
A:方法不调用不执行
B:方法之间是平级关系,不能嵌套定义
C:方法定义的时候,参数是用,隔开的
D:方法在调用的时候,不用在传递数据类型
E:如果方法有明确的返回值类型,就必须有return语句返回。
(7)方法重载
在同一个类中,方法名相同,参数列表不同。与返回值无关。

参数列表不同:
参数的个数不同。
参数的对应的数据类型不同。
(8)方法重载案例
不同的类型的多个同名方法的比较。

2:数组(掌握)
(1)数组:存储同一种数据类型的多个元素的容器。
(2)特点:每一个元素都有编号,从0开始,最大编号是长度-1。
        编号的专业叫法:索引
(3)定义格式
A:数据类型[] 数组名;
B:数据类型 数组名[];

推荐是用A方式,B方法就忘了吧。
但是要能看懂
(4)数组的初始化
A:动态初始化
只给长度,系统给出默认值

举例:int[] arr = new int[3];
B:静态初始化
给出值,系统决定长度

举例:int[] arr = new int[]{1,2,3};
简化版:int[] arr = {1,2,3};
(5)Java的内存分配
A:栈 存储局部变量
B:堆 存储所有new出来的
C:方法区(面向对象部分详细讲解)
D:本地方法区(系统相关)
E:寄存器(CPU使用)

注意:
a:局部变量 在方法定义中或者方法声明上定义的变量。
b:栈内存和堆内存的区别
栈:数据使用完毕,就消失。
堆:每一个new出来的东西都有地址
   每一个变量都有默认值
byte,short,int,long 0
float,double 0.0
char '\u0000'
boolean false
引用类型 null
   数据使用完毕后,在垃圾回收器空闲的时候回收。
(6)数组内存图
A:一个数组
B:二个数组
C:三个数组(两个栈变量指向同一个堆内存)
(7)数组的常见操作
A:遍历
方式1:
public static void printArray(int[] arr) {
for(int x=0; x<arr.length; x++) {
System.out.println(arr[x]);
}
}

方式2:
public static void printArray(int[] arr) {
System.out.print("[");
for(int x=0; x<arr.length; x++) {
if(x == arr.length-1) {
System.out.println(arr[x]+"]");
}else {
System.out.println(arr[x]+", ");
}
}
}
B:最值
最大值:
public static int getMax(int[] arr) {
int max = arr[0];

for(int x=1; x<arr.length; x++) {
if(arr[x] > max) {
max = arr[x];
}
}

return max;
}

最小值:
public static int getMin(int[] arr) {
int min = arr[0];

for(int x=1; x<arr.length; x++) {
if(arr[x] < min) {
min = arr[x];
}
}

return min;
}
C:逆序
方式1:
public static void reverse(int[] arr) {
for(int x=0; x<arr.length/2; x++) {
int temp = arr[x];
arr[x] = arr[arr.length-1-x];
arr[arr.length-1-x] = temp;
}
}

方式2:
public static void reverse(int[] arr) {
for(int start=0,end=arr.length-1; start<=end; start++,end--) {
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
}
}
D:查表
public static String getString(String[] strArray,int index) {
return strArray[index];
}
E:基本查找
方式1:
public static int getIndex(int[] arr,int value) {
for(int x=0; x<arr.length; x++) {
if(arr[x] == value) {
return x;
}
}

return -1;
}

方式2:
public static int getIndex(int[] arr,int value) {
int index = -1;

for(int x=0; x<arr.length; x++) {
if(arr[x] == value) {
index = x;
break;
}
}

return index;
}

Java中的内存分配相关推荐

  1. Java基础-Java中的内存分配与回收机制

    Java基础-Java中的内存分配与回收机制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一. 二. 转载于:https://www.cnblogs.com/yinzhengji ...

  2. java中堆栈内存_Java堆空间与堆栈– Java中的内存分配

    java中堆栈内存 Sometime back I wrote a couple of posts about Java Garbage Collection and Java is Pass by ...

  3. java中的内存分配原则

    问题:Java中这些类.变量.字符串.方法,在内存中是怎样分配的? 首先,Java中的内存区域如下: ◆寄存器:我们在程序中无法控制 ◆栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是 ...

  4. 论 Java 中的内存分配

    ------------------------------------------------------------------------- Java内存分配主要包括以下几个区域: 1. 寄存器 ...

  5. 深入理解Java中的内存泄漏

    理解Java中的内存泄漏,我们首先要清楚Java中的内存区域分配问题和内存回收的问题本文将分为三大部分介绍这些内容. Java中的内存分配 Java中的内存区域主要分为线程共享的和线程私有的两大区域: ...

  6. java中子类实例化过程中的内存分配

    知识点: 子类继承父类之后,实例化子类时,内存中子类是如何分配内存的呢? 下面,自己会结合一个例子,解释一下,一个子类实例化过程中,内存是如何分配的 参考博客:http://www.cnblogs.c ...

  7. ​Java 中的内存溢出和内存泄露是什么?我给你举个有味道的例子​

    作者 l 会点代码的大叔(CodeDaShu) JAVA中的内存溢出和内存泄露分别是什么,有什么联系和区别,让我们来看一看. 01 内存泄漏 & 内存溢出 1. 内存泄漏(memory lea ...

  8. 形式参数内存在哪java_深入浅出Java中JVM内存管理

    原标题:深入浅出Java中JVM内存管理 Java岗位面试,JVM是对程序员基本功考察,通常会问你对JVM了解吗?可以分几部分回答这个问题,首先JVM内存划分 | JVM垃圾回收的含义 | 有哪些GC ...

  9. java 物理内存_聊聊Java中的内存

    JVM的内存 先放一张JVM的内存划分图,总体上可以分为堆和非堆(粗略划分,基于java8) 那么一个Java进程最大占用的物理内存为: Max Memory = eden + survivor + ...

最新文章

  1. linux普通用户home目录锁定
  2. 048_CSS3用户界面
  3. Algorithms_基础数据结构(01)_线性表之数组数组的应用案例分析
  4. 机器学习中的训练与损失 test and loss (训练loss不下降原因集合)
  5. 王道计算机考研 数据结构 (图-上)
  6. matlab根据结构体数组,用邻接矩阵和序遍历创建树形结构:
  7. layui数据表格自定义复选框表头_layui中table表头样式修改方法
  8. [BZOJ3751] [NOIP2014] 解方程 (数学)
  9. one thread one loop 思想
  10. RedEngine11
  11. 【软件测试】验收测试是以最终用户为主的测试
  12. 【读书笔记】—— 《从 0 到 1》
  13. java字典类_Java字典类
  14. 【sklearn第二十七讲】模型持久性
  15. docker使用官方仓库上传与下拉images
  16. python 协程进阶
  17. [Matlab]维纳滤波器设计
  18. vue引入萤石云监控进行播放
  19. 服务器开机黑屏无法进入系统,电脑黑屏无法进入系统怎么办?
  20. mysql error 1236_MySQL Got fatal error 1236原因和解决方法

热门文章

  1. 机器学习数据预处理之缺失值:插值法填充+多项式插值
  2. HBase表结构设计(结构、创建、压缩、分区、命名空间等)
  3. 使用KNN模型进行多输出分类实战(Multioutput Classification)
  4. 相关系数(correlation coefficient)是什么?相关的类型有哪些?有哪些常用的计算方法?不同形态的点分布与相关系数之间的关系?如何评判相关性的强弱?
  5. Fastp对fastq质控
  6. linux上jar包无法识别本地文件格式,解决使用maven将项目打包成jar包后运行在linux系统中无法读取jar包中文件的问题...
  7. 中国科学家研发新的全基因组组装算法
  8. 创建Student Course SC表
  9. MR-CNN网络结构
  10. flask传值给js