Java静态方法和实例方法 java中的数组作为形参传入

Java虚拟机

启动一个Java程序的时候,会诞生一个虚拟机实例,当程序关闭退出时,该实例会消失。
如果一个机器上运行着三个Java程序,即有三个Java虚拟机实例
Java虚拟机会调用某个初始类的main()方法运行一个Java程序,此方法将会作为程序的初始线程启动,任何线程都是由主线程启动的。

守护线程和非守护线程

Java虚拟机有两种线程,守护线程和非守护线程。
例如垃圾收集任务的线程,属于守护线程。

Java可以将创建的任何线程定义为守护线程

main为非守护线程,当虚拟机中的所有非守护线程终止的时候,虚拟机实例将会自动退出。

类加载器

用于加载class文件中的类

运行数据区

分为本地方法区,堆,栈,寄存器,本地方法栈

方法区

被称为静态区,和堆一样,会被所有线程共享。方法区会包含静态的class和static变量

在java虚拟机启动的时候会被装载

储存对象,即new出的实例,会在堆中储存。
会被所有线程共享,不存放基本类型和对象引用。

对象中会有一个指向方法区的指针,用来把堆中new出的对象和方法区的类和静态变量连接起来

堆有两个部分,一个句柄池,一个对象池。

句柄池

句柄池有两部分,一个指向对象变量的指针

a e = new a()

其中,储存的是执行对象变量的指针,即指向栈中e的变量的地址

还有一部分是指向方法区中的指针
即指向方法区中类a的指针

对象锁

虚拟机中每个对象都有一个对象锁,用于协调多个线程访问同一个对象时的同步

关于数组

在Java中和js一个样子
数组即对象,对象即数组
数组是储存在堆中的
所以,在调用方法的时候传入数组即传入了对象,这个时候(由于java中只有一个堆,用来储存对象)在方法中对数组的操作,即操作了堆中对象的操作。

和栈不同,属于直接引用了堆中的地址,属于引用而不是开辟了一块新的储存空间。即一个指针,指向其堆中数组的地址

每次启动一个新线程的时候,Java虚拟机会为其其分配一个栈。
Java虚拟机只执行出栈和压栈的操作。
某个线程执行的方法称为该线程的当前方法,当前方法使用的栈帧属于当前帧。当前方法属于的类称为当前类,当前类的常量池称为当前常量池。
每个线程调用一个Java的方法的时候,会在该线程的Java栈中压入一个新栈,这个新栈称为当前帧,这个帧用来储存一些非静态变量的内容。
当方法调用完成以后,会弹出帧,销毁内容

关于方法调用传入数组和变量的的区别,数组,是一个对象,指向堆中的一块储存地址,变量,属于当前方法帧中的方法栈,调用的时候会直接压栈,调用完成以后会执行出栈操作。所以传入变量不会保存,传入数组会保存更改

Java栈上的数据所有数据是此线程私有的。不能被其他线程共享

堆 会被共享,方法区会被共享

静态方法和实例方法

静态方法会在程序运行的时候直接装载进入方法区。而实例方法会在new的时候以对象的方法装载进入堆中。
最大的区别在于内存的区别,由于main函数为static静态方法,会直接在运行的时候装载进入内存区,实例方法必须new,在堆中创建内存区域。再进行引用。

Java静态方法和实例方法 java中的数组作为形参传入相关推荐

  1. java 静态对象数组_Java静态方法和实例方法 java中的数组作为形参传入

    原标题:Java静态方法和实例方法 java中的数组作为形参传入 Java静态方法和实例方法 java中的数组作为形参传入 Java虚拟机 启动一个Java程序的时候,会诞生一个虚拟机实例,当程序关闭 ...

  2. java 静态方法和实例方法的区别

    静态方法和实例方法的区别主要体现在两个方面: 在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式.而实例方法只有后面这种方 ...

  3. java 静态方法与实例方法的区别_静态方法与实例方法的区分

    Java系列之:看似简单的问题 静态方法和实例化方法的区别 Java程序启动class文件被读取时类被加载,如果有static方法,此时会分配内存,非static方法实例化类时才在内存中分配控件存储, ...

  4. java静态方法和实例方法

    Java系列之:看似简单的问题 静态方法和实例化方法的区别 Java程序启动class文件被读取时类被加载,如果有static方法,此时会分配内存,非static方法实例化类时才在内存中分配控件存储, ...

  5. java 静态方法重写_Java 类中可以覆盖静态方法吗?

    Java技术栈 www.javastack.cn 打开网站看更多优质文章 Java 类中可以覆盖静态方法吗? 不,你不能在Java中覆盖静态方法,但在子类中声明一个完全相同的方法不是编译时错误,这称为 ...

  6. java静态方法this_在Java的静态方法中可以使用“ this”关键字吗?

    静态方法属于该类,它们将与类一起加载到内存中. 您可以在不创建对象的情况下调用它们. (使用类名作为引用). 示例public class Sample{ static int num = 50; p ...

  7. java主类调用数组_用java编写在主函数中调用数组

    importjava.util.Scanner;publicclassja{publicstaticvoidmain(Stringargs[]){Scannerscanner=newScanner(S ...

  8. java 静态方法_自学JAVA每日记录(11)-欢迎指点欢迎共勉

    第二季 什么是类和对象 1.对象的概率 2.什么是面向对象 3.类 4.什么是对象的属性 5.什么是对象的方法 6.类和对象的关系/区别 对象:万物皆对象,客观存在的事物皆为对象:面向对象就是关注对象 ...

  9. java静态方法求n,java之静态属性和静态方法

    前言 静态属性和方法必须用static修饰符 static 可以修饰属性.方法.代码块.内部类 静态属性和非静态属性的区别: 1.在内存中存放位置不同   所有带static修饰符的属性或者方法都存放 ...

最新文章

  1. Windows 10离线安装.NET Framework 3.5
  2. WPF多表头技术探索总结
  3. 使用VS2015远程GDB调试
  4. 检查数据报:防火墙和入侵检测系统
  5. 机器学习 KD树生成(matlab实现)
  6. C++ vector容器中用erase函数和迭代器删除重复元素问题分析
  7. android实现箭头流程列表_Android开发关于ExpandableListView上下箭头左右显示的笔记...
  8. 10万人参加过的公开课(大数据、AI、云计算、5G、物联网),你都学了吗?
  9. 阿里云计算赶超 IBM;扎克伯格或遭逼宫;IntelliJ IDEA 新版支持 Java 11 | CSDN极客头条...
  10. MySQL出现Incorrect integer value: ‘‘ for column ‘id‘ at row 1解决方法
  11. linux服务器_Linux 服务器为什么被黑?
  12. 如何在 Windows Server 2003 中配置权威时间服务器
  13. 重锤痛击 robocode!
  14. 计算机应用技术三级学科,三个计算机专业的区别是什么?
  15. 网赚项目之站群第一课如何利用站群快速赚钱
  16. 郑州调频广播频率表 转载
  17. C#实现Omron欧姆龙PLC的Fins Tcp协议
  18. linux上系统烧录工具,烧录操作系统安装光盘镜像到 U 盘的方法
  19. 互联网下半场的基本玩法
  20. stream报错: stream has already been operated upon or closed

热门文章

  1. 系统最小的服务最小的权限最大的安全。
  2. CoreData 从入门到精通(五)CoreData 和 TableView 结合
  3. H5项目常见问题汇总及解决方案
  4. typedef函数用法
  5. openerp mac os 下 报表中文乱码问题。
  6. 周末之个人杂想(四)
  7. java scri p t_深入浅析JavaScript中数据共享和数据传递_javascri
  8. [TaskList] 省选前板子补完计划
  9. 基于SpringCloud的微服务架构演变史?
  10. SVG 与 HTML5 的 canvas 相比较: