关于Java中static关键字的用法以及从内存角度解析
在Java中,static可以用来修饰成员变量和成员方法。
修饰成员变量,称为静态成员方法
修饰静态方法,称为静态成员方法
搞清楚用法和区别之前,先搞清static声明的变量和普通非静态变量在内存的分布是怎样的,这样的话,理解起来会事半功倍的。
代码测试如下:
public class Person {
static String firstName;
String lastName;
public void showName(){
System.out.println(firstName+lastName);
}
public static void viewName(){
System.out.println(firstName);
}
}
public static void main(String[] args) {
Person p =new Person();
//p.firstName="张";
Person.firstName = "张";
p.lastName="三";
p.showName();
Person p2 =new Person();
//p2.firstName="王";
Person.firstName="王";
p2.lastName="隔壁";
p2.showName();
}
运行结果:
张三 王隔壁
在内存的结果分析如下:

静态成员变量加载在方法区,声明一次,即可被所有类对象所使用
非静态成员变量加载在堆内存,是每个对象内部维护的独立变量,互相之间没有影响
具体测试如下:
用法一:Static修饰成员变量
(1)修饰成员变量,叫做静态成员变量
作用:静态成员变量被当前所有类对象所共享
内存:存储在方法区内
调用:A:类名.静态成员变量 推荐使用
B:对象.静态成员变量 不正规
public static void main(String[] args) {
Person p =new Person();
//p.firstName="张";
Person.firstName = "张";
p.lastName="三";
p.showName();
Person p2 =new Person();
//p2.firstName="王";
Person.firstName="王";
p2.lastName="隔壁";
p2.showName();
}
运行结果:
张三 王隔壁
(2)修饰成员方法,叫做静态成员方法
作用:静态成员方法中只能直接的使用静态成员方法和调用其他静态成员方法
调用:A:类名.静态方法 推荐使用
B:对象.静态方法 不正规
public static void main(String[] args) {
Person p =new Person();
//p.firstName="张";
Person.firstName = "张";
p.lastName="三";
p.showName();
Person p2 =new Person();
//p2.firstName="王";
Person.firstName="王";
p2.lastName="隔壁";
Person.viewName();
}
运行结果:
张三
王
区别:非static修饰的成员变量和成员方法
(1)非static修饰的成员变量 也称实例变量
作用:是每个对象内部维护的独立变量,互相之间没有影响
内存:存储在堆内存中
调用:对象.成员变量 唯一方式
(2)非static修饰的成员方法 也称实例方法
作用:方法中可以使用静态和非静态的成员方法和成员变量
调用:对象.成员方法
关于Java中static关键字的用法以及从内存角度解析的更多相关文章
- java中static关键字的作用
java中static关键字主要有两种作用: 第一:为某特定数据类型或对象分配单一的存储空间,而与创建对象的个数无关. 第二,实现某个方法或属性与类而不是对象关联在一起 简单来说,在Java语言中,s ...
- 【转】Java中static关键字用法总结
1. 静态方法 通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法 声明为static的方法有以下几条限制: · 它们仅能调用其他的static 方法. · 它 ...
- 【java_需阅读】Java中static关键字用法总结
1. 静态方法 通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法 声明为static的方法有以下几条限制: · 它们仅能调用其他的static 方法. · 它 ...
- Java中static关键字用法总结
1. 静态方法 通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法 声明为static的方法有以下几条限制: · 它们仅能调用其他的static 方法. · ...
- java中synchronized关键字的用法
在java编程中,经常需要用到同步,而用得最多的也许是synchronized关键字了,下面看看这个关键字的用法. 因为synchronized关键字涉及到锁的概念,所以先来了解一些相关的锁知识. j ...
- Java关键字-----------------java中synchronized关键字的用法
在java编程中,经常需要用到同步,而用得最多的也许是synchronized关键字了,下面看看这个关键字的用法. 因为synchronized关键字涉及到锁的概念,所以先来了解一些相关的锁知识. j ...
- Java中static关键字的定义
1.static存在的主要意义 static的主要意义是在于创建独立于具体对象的域变量或者方法.以致于即使没有创建对象,也能使用属性和调用方法! static关键字还有一个比较关键的作用就是 用来形成 ...
- Java:Java中static关键字作用
static关键字最基本的用法是: 1.被static修饰的变量属于类变量,可以通过类名.变量名直接引用,而不需要new出一个类来 2.被static修饰的方法属于类方法,可以通过类名.方法名直接引用 ...
- JAVA中static关键字
用法:是一个修饰符,用于修饰成员(成员变量,成员函数),不能用于修饰局部变量!被static修饰后,就多了一种调用方式,除了可以被对象调用外,还可以直接被类名调用,写法格式是:类名.静态成员.优点:被 ...
随机推荐
- Module build failed: Error: Cannot find module 'babel-runtime/core-js/get-it
npm i babel-loader@7.1.5 -D
- 关于 sip
1.html页面 添加拨打按键 拨打按键 下面 添加 音频流/视频流 2 引入 sip.js 和 **.js **.js页面 获取各个元素 创建 simple实例 3. addEventL ...
- mysql强制索引和禁止某个索引
1.mysql强制使用索引:force index(索引名或者主键PRI) 例如: select * from table force index(PRI) limit 2;(强制使用主键) sele ...
- Java的String和StringBuilder
一.String 1.创建String对象的方法: String s1="haha"; String s2=new String(); String s3=new String(& ...
- SpringBoot配置mybatis
一直都说SpringBoot是零配置,当然,真正实现零配置是不可能的,但是在配置mybatis这里真的是太简单了,哈哈,下面我们一起看一下. 1.先导入基于SpringBoot的mybatis依赖包 ...
- Bootstrap 模态框(Modal)插件id冲突
<!DOCTYPE html><html><head> <meta charset="utf-8"> <titl ...
- HTML&CSS_基础01
一.预备知识: # 1. HTML5 是 W3C 与 WHATWG 合作的结果. W3C 指 World Wide Web Consortium,万维网联盟. WHATWG 指 Web H ...
- 「FFT」题单(upd 2019.4.28)
持续更新(last upd 2019.4.28) ZJOI2014 力 [题目链接] 解法 对原式进行转换,然后卷积FFT套上去求解就可以了. 推导过程简洁版: \[F_i=\sum_{j<i} ...
- 2019余姚培训游记+ZJOJD2划水记
2019余姚培训游记 突然就想写一个... 注意:以下全是胡言乱语的自high,还有很多错别字 Day 0 来的比较早,早上就到了 上午把一本小说看完了,是一个年轻作者的处女作. 我觉得我第一本书一定 ...
- [Windows Doc]微软官方文档
desktop: https://docs.microsoft.com/en-us/windows/desktop/index server:https://docs.microsoft.com/en ...