1、static变量

 依照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫静态变量或类变量;还有一种是没有被static修饰的变量,叫实例变量。

两者的差别是:

 对于静态变量在内存中仅仅有一个拷贝(节省内存),

wd=jvm&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1YdnWc1myRvPHRzuH64PW6d0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6K1TL0qnfK1TL0z5HD0IgF_5y9YIZ0lQzqlpA-bmyt8mh7GuZR8mvqVQL7dugPYpyq8Q1c4PjRkPWn3r0" target="_blank" rel="nofollow">jvm仅仅为静态分配一次内存,在载入类的过程中完毕静态变量的内存分配。可用类名直接訪问(方便)。当然也能够通过对象来訪问(可是这是不推荐的)。

 对于实例变量,没创建一个实例。就会为实例变量分配一次内存,实例变量能够在内存中有多个拷贝,互不影响(灵活)。



所以一般在须要实现下面两个功能时使用静态变量:

 在对象之间共享值时

 方便訪问变量时



2、静态方法

静态方法能够直接通过类名调用,不论什么的实例也都能够调用,

因此静态方法中不能用this和superkeyword,不能直接訪问所属类的实例变量和实例方法(就是不带static的成员变量和成员成员方法)。仅仅能訪问所属类的静态成员变量和成员方法。

由于实例成员与特定的对象关联。这个须要去理解,想明确当中的道理,不是记忆。!

由于static方法独立于不论什么实例。因此static方法必须被实现,而不能是抽象的abstract。



比如为了方便方法的调用,

wd=java&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1YdnWc1myRvPHRzuH64PW6d0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6K1TL0qnfK1TL0z5HD0IgF_5y9YIZ0lQzqlpA-bmyt8mh7GuZR8mvqVQL7dugPYpyq8Q1c4PjRkPWn3r0" target="_blank" rel="nofollow">java
API中的Math类中全部的方法都是静态的,而一般类内部的static方法也是方便其他类对该方法的调用。



静态方法是类内部的一类特殊方法,仅仅有在须要时才将相应的方法声明成静态的,一个类内部的方法一般都是非静态的



3、static代码块

 static代码块也叫静态代码块。是在类中独立于类成员的static语句块,能够有多个。位置能够随便放,它不在不论什么的方法体内,

wd=jvm&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1YdnWc1myRvPHRzuH64PW6d0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6K1TL0qnfK1TL0z5HD0IgF_5y9YIZ0lQzqlpA-bmyt8mh7GuZR8mvqVQL7dugPYpyq8Q1c4PjRkPWn3r0" target="_blank" rel="nofollow">jvm载入类时会运行这些静态的代码块。假设static代码块有多个,jvm将依照它们在类中出现的先后顺序依次运行它们,每一个代码块仅仅会被运行一次。

总结一下:

1、static修饰的变量和函数,在内存中都仅仅要一份拷贝,不同对象间共同拥有的

2、static方法仅仅能调用static方法和static变量

3、static块在jvm载入类是时候运行;

java中statickeyword的更多相关文章

  1. Java中的statickeyword具体解释

    1.statickeyword主要有2个作用: ①为某特定的数据类型或者对象分配单一的存储空间.而与创建对象的个数无关. ②在不创建对象的情况下能够直接通过类名来直接调用方法或者使用类的属性. 2.s ...

  2. Java中普通代码块,构造代码块,静态代码块的代码演示样例及区分

    //运行顺序:(优先级从高到低.)静态代码块>mian方法>构造代码块>构造方法. 当中静态代码块仅仅运行一次.构造代码块在每次创建对象是都会运行. 1 普通代码块 <span ...

  3. java中的锁

    java中有哪些锁 这个问题在我看了一遍<java并发编程>后尽然无法回答,说明自己对于锁的概念了解的不够.于是再次翻看了一下书里的内容,突然有点打开脑门的感觉.看来确实是要学习的最好方式 ...

  4. java中的字符串相关知识整理

    字符串为什么这么重要 写了多年java的开发应该对String不陌生,但是我却越发觉得它陌生.每学一门编程语言就会与字符串这个关键词打不少交道.看来它真的很重要. 字符串就是一系列的字符组合的串,如果 ...

  5. Java中的Socket的用法

                                   Java中的Socket的用法 Java中的Socket分为普通的Socket和NioSocket. 普通Socket的用法 Java中的 ...

  6. java中Action层、Service层和Dao层的功能区分

    Action/Service/DAO简介: Action是管理业务(Service)调度和管理跳转的. Service是管理具体的功能的. Action只负责管理,而Service负责实施. DAO只 ...

  7. Java中常用集合操作

    一.Map 名值对存储的. 常用派生类HashMap类 添加: put(key,value)往集合里添加数据 删除: clear()删除所有 remove(key)清除单个,根据k来找 获取: siz ...

  8. java中的移位运算符:<<,>>,>>>总结

    java中有三种移位运算符 <<      :     左移运算符,num << 1,相当于num乘以2 >>      :     右移运算符,num >& ...

  9. 关于Java中进程和线程的详解

    一.进程:是程序的一次动态执行,它对应着从代码加载,执行至执行完毕的一个完整的过程,是一个动态的实体,它有自己的生命 周期.它因创建而产生,因调度而运行,因等待资源或事件而被处于等待状态,因完成任务而 ...

随机推荐

  1. Unity相机平滑跟随

    简介 unity中经常会用到固定视角的相机跟随,然后百度发现大家都是自己写的,然后偶也写咯一个,分享一下 PS: 由于刚学C#不久,才发现delegate这个东东,也不知道对性能影响大不大,但是看MS ...

  2. D3.js 力导向图(气泡+线条+箭头+文字)

    <!DOCTYPE html> <meta charset="utf-8"> <style> .link { fill: none; strok ...

  3. Linux(centOS7.2)+node+express初体验

    赶着阿里云服务器老用户服务器半折的好时机,手痒买了一个低配. 想着对于低配用Linux应该比较好(无可视化界面) 于是选择安装了centOs7.2: 我是通过SecureCRT进行远程连接的(如何操作 ...

  4. centos7下手动制作trove镜像

    获取镜像 [root@bldattet1 ~]#  wget http://mirrors.aliyun.com/centos/7.5.1804/isos/x86_64/CentOS-7-x86_64 ...

  5. oracle 用户的操作

    语法: CREATE USER user   IDENTIFIED { BY password              | EXTERNALLY [ AS 'certificate_DN' ]    ...

  6. python编辑csv

    import csv import time def timestamp_to_timestr(timeStamp): timeArray = time.localtime(int(timeStamp ...

  7. Lazarus 1.6 增加了新的窗体编辑器——Sparta_DockedFormEditor.ipk

    一下是该控件官网的介绍 "Hello A package for a docked form editor can be found in : components/sparta/docke ...

  8. scss基础

    1.变量$ 全局 局部 .div{ $color:yellow; } 2.类似函数@mixin border-radius($radius) { }引用:@include border-radius( ...

  9. python 获取本机环境信息

    一.函数 1.socket.gethostname():不带任何参数,返回一个字符串(主机名),通常不完整.比如csm.example.com 只会返回csm 2.socket.getfqdn():带 ...

  10. JavaScript day2(变量)

    变量(variable) 允许计算机以一种动态的形式来存储和操作数据,通过操作指向数据的指针而不是数据本身来避免了内存泄露,变量(Variable)的名字可以由数字.字母.$ 或者 _组成,但是不能包 ...