Java静态方法和实例方法 java中的数组作为形参传入
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,在堆中创建内存区域。再进行引用。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
springboot整合druid连接池
依赖 //mysql 驱动 compile group: 'mysql', name: 'mysql-connector-java', version: '5.1.21' //druid compile group: 'com.alibaba', name: 'druid', version: '1.1.10' 1. 新建druid配置信息类DruidConfiguration.java package com.futao.springmvcdemo.foundation.configuration; import com.alibaba.druid.pool.DruidDataSource; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Component; import javax.sql.DataS...
- 下一篇
爬虫实战——百度贴吧
开始 首先使用chrome浏览器,进入百度贴吧 注意输入框中的url 分析 为了进行具体的url分析,我在搜索框中输入"Python",看一下url的变化 观察url变化 这时url变成了: http://tieba.baidu.com/f?ie=utf-8&kw=python&fr=search&red_tag=b2531475437 通过分析,做一个测试, 删除url一些东西: http://tieba.baidu.com/f?&kw=python 依旧可以得到正常的页面 下面进行翻页测试: 得到这样的一条url: http://tieba.baidu.com/f?kw=python&ie=utf-8&pn=50 通过分析,再进行一次测试,删除url中的一些东西: 得到下面的url http://tieba.baidu.com/f?kw=python&pn=50 依旧可以得到相应的页面,因此可以得出结论: kw 和 pn 是这个页面中最重要的关键词,kw控制关键词(其实就是keyword的缩写), pn(其实就是page_nu...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Red5直播服务器,属于Java语言的直播服务器
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装