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. jvm gc日志解读

    参考 https://blog.csdn.net/yxc135/article/details/12137663 认识gc日志每个位置的含义 java 8 full gc [Full GC (Meta ...

  2. [Windows Server 2012] 安装SQL Server 2012

    ★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频.★ 本节我们将带领大家:安装SQL S ...

  3. Python语言之变量2(命名规则,类型转换)

    1.命名规则 1.起始位为字母(大小写)或下划线('_') 2.其他部分为字母(大小写).下划线('_')或数字(0-9) 3.大小写敏感 2.先体验一把: #Ask the user their n ...

  4. 9、scala面向对象编程之继承

    1.  extends 2.override 和super 3.override field 4.isInstanceOf和asInstanceOf 5.getClass和classOf 6.使用模式 ...

  5. 基于saltstack svn的一个发布系统

      1.登录页 2.分组管理页 3.添加项目页 4.项目列表和项目编辑页 5.项目发布回滚页

  6. MFC TAB控件顺序

    在MFC中添加控件后,按Ctrl+d可以改变控件TAB顺序,怕自己忘了,一个神奇的东西,记下. 关于改变Tab顺序的方法有以下几种: 方法一:在动态创建控件的时候STYLE设置成为WS_CHILD|W ...

  7. How To:配置Linux iSCSI客户端

    1.安装客户端 [root@node01 Packages]# rpm -Uvh iscsi-initiator-utils-6.2.0.873-2.el6.x86_64.rpm warning: i ...

  8. codevs1231 最优布线问题

    1231 最优布线问题 题目描述 Description 学校需要将n台计算机连接起来,不同的2台计算机之间的连接费用可能是不同的.为了节省费用,我们考虑采用间接数据传输结束,就是一台计算机可以间接地 ...

  9. Django settings.py的一些配置

    官方文档:settings配置 静态文件配置链接 # 语言改为中文: LANGUAGE_CODE = "zh-hans" # 时区由UTC改为Asia/Shanghai,这样有关时 ...

  10. django访问静态变量的设置

    在项目的urls.py文件中 默认urlpatterns是空的列表需要填入url匹配的路由,默认使用static from django.conf.urls import include, url f ...