牛客网Java刷题知识点之关键字static、static成员变量、static成员方法、static代码块和static内部类...

 

 

 

  不多说,直接上干货!

 

 

 

牛客网Java刷题知识点之关键字static

  static代表着什么

       在Java中并不存在全局变量的概念,但是我们可以通过static来实现一个“伪全局”的概念,在Java中static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,当然也可以修饰代码块和内部类

       Java把内存分为栈内存和堆内存,其中栈内存用来存放一些基本类型的变量、数组和对象的引用变量,堆内存主要存放一些引用类型的变量。在JVM加载一个类的时候,若该类存在static修饰的成员变量和成员方法,则会为这些成员变量和成员方法在固定的位置开辟一个固定大小的内存区域,有了这些“固定”的特性,那么JVM就可以非常方便地访问他们。同时如果静态的成员变量和成员方法不出作用域的话,它们的句柄都会保持不变。同时static所蕴含“静态”的概念表示着它是不可恢复的,即在那个地方,你修改了,他是不会变回原样的,你清理了,他就不会回来了。

       同时被static修饰的成员变量和成员方法是独立于该类的,它不依赖于某个特定的实例变量,也就是说它被该类的所有实例共享。所有实例的引用都指向同一个地方,任何一个实例对其的修改都会导致其他实例的变化。

 

ublic class User {  private static int userNumber  = 0 ;  public User(){  userNumber ++;  }  public static void main(String[] args) {  User user1 = new User();  User user2 = new User();  System.out.println("user1 userNumber:" + User.userNumber);  System.out.println("user2 userNumber:" + User.userNumber);  }  
}      
------------  
Output:  
user1 userNumber:2  
user2 userNumber:2  

 

 

 

 

 

 

 

牛客网Java刷题知识点之static成员变量

  static变量

       static修饰的变量我们称之为静态变量,没有用static修饰的变量称之为实例变量,它们两者的区别是:

  静态变量是随着类加载时被完成初始化的,它在内存中仅有一个,且JVM也只会为它分配一次内存,同时类所有的实例都共享静态变量,可以直接通过类名来访问它

       但是实例变量则不同,它是伴随着实例的,每创建一个实例就会产生一个实例变量,它与该实例同生共死。

       所以我们一般在这两种情况下使用静态变量:对象之间共享数据、访问方便。

 

 

 

 

 

 

 

 

牛客网Java刷题知识点之static成员方法

  static方法

       static修饰的方法我们称之为静态方法,我们通过类名对其进行直接调用由于它在类加载的时候就存在了,它不依赖于任何实例,所以static方法必须实现,也就是说它不能是抽象方法

       Static方法是类中的一种特殊方法,我们只有在真正需要他们的时候才会将方法声明为static。如Math类的所有方法都是静态static的。

 

 

 

 

 

牛客网Java刷题知识点之关键字static代码块

  static代码块

       被static修饰的代码块,我们称之为静态代码块,静态代码块会随着类的加载一块执行,而且它可以随意放,可以存在于该了的任何地方。

 

 

 

 

 

 

 

 

牛客网Java刷题知识点之关键字static内部类

   它可以不依赖于外部类实例对象而被实例化,而通常的内部类需要在外部类实例化后才能实例化。注意:只能内部类才能被定义为static

   静态内部类不能与外部类有相同的名字

   静态内部类不能访问外部类的普通成员变量,只能访问外部类中的静态成员和静态方法。

 

 

 

 

 

Static的局限

       Static确实是存在诸多的作用,但是它也存在一些缺陷。

         1、它只能调用static变量。

         2、它只能调用static方法。

         3、不能以任何形式引用this、super。

         4、static变量在定义时必须要进行初始化,且初始化时间要早于非静态变量。

      总结:无论是变量,方法,还是代码块、内部类,只要用static修饰,就是在类被加载时就已经"准备好了",也就是可以被使用或者已经被执行,都可以脱离对象而执行。反之,如果没有static,则必须要依赖于对象实例。

 

转载于:https://www.cnblogs.com/zlslch/p/7470670.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/454800.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

30天自制操作系统(二)汇编语言学习与Makefile入门

1 介绍文本编辑器这部分可直接略过2 继续开发helloos.nas中核心程序之前的内容和启动区以外的内容先不讲了,因为还涉及到一些软盘方面的知识。然后来讲的是helloos.nas这个文件; hello-os ; TAB4ORG 0x7c00 ; 指明程序的装载地址; 以下这部分记录…

java房产源码_基于jsp的房屋交易管理系统-JavaEE实现房屋交易管理系统 - java项目源码...

基于jspservletpojomysql实现一个javaee/javaweb的房屋交易管理系统, 该项目可用各类java课程设计大作业中, 房屋交易管理系统的系统架构分为前后台两部分, 最终实现在线上进行房屋交易管理系统各项功能,实现了诸如用户管理, 登录注册, 权限管理等功能, 并实现对各类房屋交易管…

Docker 精通之入门

Docker 精通系列 Docker 精通之入门Docker 精通之微服务Docker 精通之常用命令Docker 精通之 Dockerfile 2013年发布至今, Docker 一直广受瞩目,被认为可能会改变软件行业。 但是,许多人并不清楚 Docker 到底是什么,要解决什么问…

bzoj3156 防御准备 - 斜率优化

Input 第一行为一个整数N表示战线的总长度。 第二行N个整数&#xff0c;第i个整数表示在位置i放置守卫塔的花费Ai。 Output 共一个整数&#xff0c;表示最小的战线花费值。 Sample Input 102 3 1 5 4 5 6 3 1 2 Sample Output 18 HINT 1<N<10^6,1<Ai<10^9 这题还是…

Eclipse GCC 入门

下面是本人入门的一些做法及结论: 1. 安装&#xff1a;下载Eclipse3.5 CPP版本 和Cygwin. 如果Cygwin安装成功, 则配置开发环境基本无问题。网上有关于Cygwin和MinGW的Eclipse配置&#xff0c;这里也无需我多费口水。 2. Note&#xff1a; Cpp源代码的后缀名要小心&#xff0c;…

java反序列化后不相等_Jackson:使用不同的属性名称序列化/反序列化 - java

我有这个POJO&#xff1a;public class SetPoint {private String tagName;//more fields//getters and setters}我从REST API获取SetPoints&#xff0c;对它们进行处理&#xff0c;然后再次发送。问题是我想从JSON反序列化SetPoint&#xff0c;例如&#xff1a;{"tagname…

如何实现线程间的通讯(转载)

原文出处&#xff1a; wingjay正常情况下&#xff0c;每个子线程完成各自的任务就可以结束了。不过有的时候&#xff0c;我们希望多个线程协同工作来完成某个任务&#xff0c;这时就涉及到了线程间通信了。 本文涉及到的知识点&#xff1a;thread.join(), object.wait(), objec…

Doracle.jdbc.J2EE13Compliant=true

To make the Oracle driver behave in a Java EE-compliant manner, you must define the following JVM property: -Doracle.jdbc.J2EE13Complianttrue转载于:https://www.cnblogs.com/heben/p/7472989.html

Docker 精通之微服务

Docker 精通系列 Docker 精通之入门Docker 精通之微服务Docker 精通之常用命令Docker 精通之 Dockerfile Docker 是一个容器工具&#xff0c;提供虚拟环境。很多人认为&#xff0c;它改变了我们对软件的认识。 站在 Docker 的角度&#xff0c;软件就是容器的组合&#xff1a;业…

苦逼的程序员怎么发展

今天组长开会时跟我谈话了&#xff0c;说的意思是我更适合另外一个组&#xff0c;我现在这个组没有什么技术含量&#xff0c;另外一个组技术含量可能更深些。 苦逼啊&#xff0c;这世界缺少的都是耐心&#xff0c;老是用一成不变的模式看人&#xff0c;我是那么还和以前一样沉…

php根据浏览器调用支付_Android通过外部浏览器调用微信H5支付,Android+PHP详解

看了好多关于讲解微信H5支付开发的文章&#xff0c;大多数都是通过微信内部浏览器来调用支付接口(其实就是公众号支付)&#xff0c;可能是因为H5支付接口刚开放不久吧。微信官方体验链接&#xff1a;http://wxpay.wxutil.com/mch/pay/h5.v2.php&#xff0c;请在微信外浏览器打开…

秒杀系统架构分析与实战

0 系列目录 秒杀系统架构 秒杀系统架构分析与实战1 秒杀业务分析 正常电子商务流程 &#xff08;1&#xff09;查询商品&#xff1b;&#xff08;2&#xff09;创建订单&#xff1b;&#xff08;3&#xff09;扣减库存&#xff1b;&#xff08;4&#xff09;更新订单&#xff1…

Docker 精通之常用命令

Docker 精通系列 Docker 精通之入门Docker 精通之微服务Docker 精通之常用命令Docker 精通之 Dockerfile 配置文件路径 /etc/sysconfig/docker docker镜像及容器目录 主目录&#xff1a;/var/lib/docker 容器存放目录&#xff1a;/var/lib/docker/containers/ 镜像存放目…

世界500强面试题(经典)

本书中的问题&#xff0c;是软件业人士在面试时常问的&#xff0c;其中大多数出自微软公司&#xff0c;也有一些来自世界500强公司中的其 他公司。其实道理是相通的&#xff0c;认真领会&#xff0c;加以变通&#xff0c;当你读完全书时&#xff0c;你会发现你已经找到了一块进…

php 获取字符串中的url,php使用正则表达式获取字符串中的URL

今天写一个问答系统上线之后发现有很多人发链接了,由于业务部门要我们过滤掉网站地址了,下面我给大家分享一个提取字符串url地址函数,代码如下:$str 本文实例讲述了php匹配字符串里所有URL地址的方法。http://www.manongjc.com 分享给大家供大家参考;preg_match_all("/htt…

如何提高安卓代码的质量和语法

本文讲的是如何提高安卓代码的质量和语法&#xff0c;在这篇文章中&#xff0c;我会介绍几种不同的方式&#xff0c;让你通过自动化工具提高你的Android代码质量&#xff0c;包括 Checkstyle&#xff0c; Findbugs&#xff0c;PMD&#xff0c; 当然&#xff0c;还有我们最熟悉的…

洛谷 U3357 C2-走楼梯

https://www.luogu.org/problem/show?pidU3357 题目背景 在你成功地解决了上一个问题之后&#xff0c;方方方不禁有些气恼&#xff0c;于是他在楼梯上跳来跳去&#xff0c;想要你求出他跳的方案数。.. 题目描述 方方方站在一个n阶楼梯下面&#xff0c;他每次可以往上跳一步或两…

Liunx 系统调优

Sysctl命令用来配置与显示在/proc/sys目录中的内核参数&#xff0e;如果想使参数长期保存&#xff0c;可以通过编辑/etc/sysctl.conf文件来实现。 命令格式&#xff1a;sysctl [-n] [-e]-w # 临时改变某个指定参数的值&#xff0c;如sysctl -w net.ipv4.ip_forward1-a # 显示…

php多文件上传存储到表,PHP 实现一种多文件上传的方法

搜索热词之前在实现表单中file类型input选择多图片的时候找到一种方式 也许不是最好的但亲测可行且支持ie7以上以及chrome浏览器在表单中使用正常多文件选择multiple属性PHP;">然后使用AjaxFileUpload或其他方式提交将对应命名的file文件 $file[‘image] 转化为 json打…

CentOS7设置自定义开机启动,添加自定义系统服务

Centos 系统服务脚本目录&#xff1a; /usr/lib/systemd/ 有系统&#xff08;system&#xff09;和用户&#xff08;user&#xff09;之分&#xff0c;如需要开机没有登陆情况下就能运行的程序&#xff0c;存在系统服务&#xff08;system&#xff09;里&#xff0c;即&#xf…