1、static修饰的变量和方法,在类加载时即被初始化,可直接通过类名.变量名和类型.方法名进行调用。

2、static修饰的变量,在类加载时会被分配到数据区的方法区。类的实例可共享方法区中的变量。如果static修饰的变量发生改变,那么所有类实例引用的变量都会一起发生改变。

3、static修饰的方法中不能使用this或super,static修饰的方法属于类的方法,而this或super只是对象的方法。

4、static修饰的方法不能引用非static 修饰的变量, 在类加载过程中,当static修饰的方法加载完成时,非static修饰的变量

还未加载,所以无法引用非static修饰的变量。

5、非static修饰的方法可以引用static 修饰的变量,在类加载过程中,static修饰的变量优先完成加载,所以当非static修饰的方法

完成加载后可以引用static 修饰的变量。

举例

假设Student 类有static 修饰的变量name和方法getName(String name), 那么是否可以直接通过类名调用呢?

public class Student {

private static String name;

private static void getName(){

System.out.println(name);

}

public static void main(String[] args) {

Student.name = "Jack Ma";

Student.getName();

}

}

运行结果:

Jack Ma

可见,static 修饰的变量和方法是可以直接通过类名调用的。

那么,在static 修饰的main方法内, Student 对象s1 和s2 是否可以直接调用static 修饰的变量和方法呢?

public class Student {

private static String name;

public static void getName(){

System.out.println(name);

}

public static void main(String[] args) {

Student s1 = new Student();

s1.name = "大黄";

s1.getName();

Student s2 = new Student();

s2.name = "二黄";

s2.getName();

}

}

运行结果:

大黄

二黄

从运行结果来看,在static 修饰的main方法内,Student 对象s1 和s2 是可以直接调用static 修饰的变量和方法。

如果此时修改static 修饰的变量name方法,那么Student对象s1, s2调用的变量name是否也会一起被修改呢?

public class Student {

private static String name;

public static void getName(){

System.out.println(name);

}

public static void main(String[] args) {

Student s1 = new Student();

// 修改static 修饰的变量name

s1.name = "Jack";

s1.getName();

Student s2 = new Student();

s2.getName();

}

}

运行结果:

Jack

Jack

从运行结果来看,当对象s1修改了在方法区(数据共享区)的static变量name,那么对象s2调用的static变量name必然会一起被修改。

在static修饰的方法中是否可以应用this呢?

在static修饰的方法中是否可以应用super呢?

在static修饰的方法是否能引用非static 修饰的变量呢?

非static修饰的方法是否能引用static修饰的变量呢?

public class Student {

private static String name;

private int age;

public void getInfo(){

// 非static 方法getInfo()引用static修饰的变量name

System.out.println("姓名:"+ name + ", 年龄" + age);

}

public static void main(String[] args) {

Student s1 = new Student();

//通过类名Student直接调用static 变量 name

Student.name = "Jack Ma";

s1.age = 19;

s1.getInfo();

}

}

运行一下

姓名:Jack Ma, 年龄19

可见,非static修饰的方法可以引用static修饰的变量

java static 修饰变量吗_Java面试 - static 修饰的变量和方法有哪些特点?相关推荐

  1. java静态变量特点_Java中static的特点

    前两天面试时被问到静态的特点,当时回答地不是很好,现在来总结一下 在了解某样东西的时候我们通常会从它是什么,为什么,和怎么样在三方面来衡量,对于java中的static,我们也这样讨论下,要明确以下几 ...

  2. java static是单例_JAVA基础-static关键字及单例设计模式

    static关键字 基本概念使用static关键字修饰成员变量表示静态的含义, 此时成员变量由对象层级提升为类层级, 也就是整个类只有一份并被所有对象共享. 该成员变量随着类的加载准备就绪, 与是否创 ...

  3. java 多态判断非空_Java 面试知识点解析基础知识

    文本公众号来源: 我没有三颗心脏作者: 我没有三颗心脏 (一)Java 基础知识点 1)面向对象的特性有哪些? 答:封装.继承和多态(应要多算一个那就是抽象) 封装是指将对象的实现细节隐藏起来,然后通 ...

  4. 2020年Java面试题及答案_Java面试宝典_Java笔试题(持续更新中)

    推荐面试视频教程 2019年最新Java互联网大厂面试精粹 前言 前言: 少年易老学难成,一寸光阴不可轻.未觉池塘春草梦,阶前梧叶已秋声 .-朱熹<劝学诗> 勤奋才是改变你命运的唯一捷径. ...

  5. 用java实现互换和清空_java使用异或实现变量互换和异或加密解密示例

    import java.util.Scanner; public class VariableExchange { public static void main(String[] args){ Sy ...

  6. java 可以重载等于号码_Java面试之Java基础4——重载与重写的区别

    目录 重载与重写的概念 重载与重写的区别 重载与重写的总结 构造器是否能被重写override 为什么函数不能根据返回类型来区分重载 重载与重写的概念 重载:同样一个方法可以根据输入参数列表的不同,做 ...

  7. java 静态变量 存储_Java学习笔记9---类静态成员变量的存储位置及JVM的内存划分...

    笔记8提到了类静态成员变量的访问方式,但静态成员变量存储在哪里呢?在网上查阅不少资料,发现好多内容都是过时的了,其中主流观点是静态成员变量存放在方法区.JDK8之前,静态成员变量确实存放在方法区:但J ...

  8. java 多线程变量可见性_Java多线程:易变变量,事前关联和内存一致性

    java 多线程变量可见性 什么是volatile变量? volatile是Java中的关键字. 您不能将其用作变量或方法名称. 期. 我们什么时候应该使用它? 哈哈,对不起,没办法. 当我们在多线程 ...

  9. java左转两位_Java面试编程题-火星车、火星漫游车

    题目描述如下: 一队机器人漫游车将被美国宇航局降落在火星高原上.漫游车将在这个奇怪的长方形高原上巡游,以便他们的机载摄像头可以获得周围地形的完整视图,并将其发送回地球.漫游者的坐标和位置由x和y坐标的 ...

最新文章

  1. (C++)将整型数组所有成员初始化为0的三种简单方法
  2. 彻底解决Linux索引节点(inode)占用率高的告警
  3. 可编辑树Ztree的使用(包括对后台数据库的增删改查)
  4. 网易云音乐Android版使用的开源组件
  5. java加密工作模式None_java加解密算法--对称加密工作模式
  6. [js] 举例说明js立即执行函数的写法有哪些?
  7. Centos7更新 SQLite3至版本3.29.0
  8. 微软“.Net社区虚拟大会”dotnetConf2015:关键词:.NET 创新、开源、跨平台
  9. 高并发模拟( 测试 )
  10. 创业者都认为经营一家新公司最主要的目标是融资
  11. 利用linux内核代码玩转c链表
  12. 有关lodop.js和CLodop服务
  13. 会说话的汤姆猫纪念徽章藏品上线,集齐赢实物盲盒!
  14. 【ESP 保姆级教程】玩转emqx认证篇③ ——认证安全之使用 MySQL 的密码认证
  15. 3dsnbsp;max基础材质初学者必读(15)——设置砖墙纹理
  16. 最新易语言调用大漠插件制作脚本入门教程
  17. 自动控制原理笔记-根轨迹的概念-根轨迹方程
  18. 下次激活策略10_实体店生意经:6招引流策略,引爆客流!可套用任何行业
  19. Android端 WebP图片压缩与传输的一点探索
  20. Linux下查看DNS服务器IP地址

热门文章

  1. dc持久内存与mysql_Calypso Systems推出测试软件和服务器测试傲腾数据中心级持久内存...
  2. linux 键盘过滤,linux – 需要拦截HID Keyboard事件(然后阻止它们)
  3. centos7调节虚拟机字体_初次安装虚拟机中Ubuntu16.04系统设置的一些小问题(小白教程)...
  4. python刷题+leetcode(第三部分)
  5. Deep Alignment Network(人脸对齐)
  6. 穷举法破解集合小游戏~
  7. qt在visual studio 2015下的使用
  8. 微信你scope 参数错误 php,微信开发: scope参数错误或没有scope权限解决方法
  9. 数据增强 transform_深度学习-Pytorch框架学习之数据处理篇
  10. 服务器网站显示多协议,解决高防IIS8服务器https协议多个同时访问的解决方法