java中java 静态变量量在方法里面与方法外面的区别

java中static(静态成员变量.方法与普通成员变量.方法区别) - 简书
java中static(静态成员变量.方法与普通成员变量.方法区别)
如果文章对你有所帮助,请点喜欢并关注,这将是我最大的动力,谢谢
PS:这里的普通方法和成员变量是指,非静态方法和非静态成员变量
首先static是静态的意思,是修饰符,可以被用来修饰变量或者方法。
静态成员变量是指类的成员变量,他不属于类的对象,只属于类单独,与一般意义上的成员变量有视区别。
方法同上。
栗子: static int i=1; 这里的i就是一个静态变量。具体特性如下
静态成员变量与普通成员变量
静态静态,就是当类被加载时,这个内存就静静的待在这里,就已经存在,而普通成员变量,只有类被实例化时才分配内存。
成员变量需要对象才能被调用;而静态成员变量可以直接通过类来调用,当然也可以直接调用
PS:小小疑问为什么可以直接调用,我看一些参考书上只说可以通过类来调用?
public class demo {
static int i=10;
public static void main(String[] args){
int k=i;//直接调用
int j=demo.i;//通过类来调用
System.out.println("直接调用k:"+k);
System.out.println("通过类来调用j:"+j);
静态成员变量从类被加载开始到类被卸载,一直存在;普通成员变量只要在类被实例化也就是创建对象是才开始存在,一直到对象结束,生命也告终。
静态成员变量是全类共享的,即使不是对象,也可以调用,并且内存不变;普通成员变量是每个对象单独享用的,就是说你这个对象有一个int i=1,我再给该类创建一个新的对象,他也有一个int i,但他可以不等于1,可以等于5,也可以等于10,但无论等于多少,都不会影响之前对象的i的值,而静态成员变量不是这样。
静态方法与普通方法
我们一直用的main方法就是静态方法
在此我只讨论一下调用的问题
静态方法可以调用静态成员变量,调用普通成员变量时需创建对象;非静态方法可以随意调用静态成员变量或普通成员变量。
静态方法和普通方法调用特性同上,静态调用普通方法时需创建对象,而普通方法随意。
静态方法的使用情况
是在类中执行该方法时,该方法并不对成员变量有任何操作,也就是说该静态方法的操作不针对对象,只针对该类时,使用。那么使用该类也就不需要创建对象,而可以直接通过类名.方法名实现。
工具类.png
使用类.png
爱健身,爱写作,爱编程,更爱生活
欢迎添加微信:xyg
知乎:徐亚光
CNDS:http://blog.csdn.net/sunopar
github:sunOpar
1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集合的语法,io的语法,虚拟机方面的语法。 1、一个&.java&源文件中是否可以包括多个类(不是内部类)?有什么限制? 可以有多个类,但只能有一个publ...
百战程序员_ Java1573题 QQ群:034603 掌握80%年薪20万掌握50%年薪10万 全程项目穿插, 从易到难,含17个项目视频和资料持续更新,请关注www.itbaizhan.com 国内最牛七星级团队马士兵、高淇等11位十年开发经验专...
(一)Java部分 1、列举出JAVA中6个比较常用的包【天威诚信面试题】 【参考答案】 java.java.java.java.java.java.javax.swing 2、JDK中哪些类是不能继承的?【信雅达面试题】 ...
一、基本数据类型 注释 单行注释:// 区域注释:/*
*/ 文档注释:/** */ 数值 对于byte类型而言,有28个可能的数值,一半是负数一半是正数。因为0被存储为正的二进制,因此整数的个数比负数少1。 如果要表示八进制在数值前加0,要表示十六进制在数值前加0x。 ...
一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工具和jre。2,JRE:Java Runtime Environment,java程序的运行环境,java运行的所需的类库+JVM(java虚拟机)。3,配置环...
1.在表结构里新增一个用户状态标示,当用户登录的时候,首先查看用户的当前处于什么状态,如果是未登录状态,直接允许其登录,如果是登录状态要求其验证登录信息 2.新增一个数据结构( 表或者其他什么),跟踪当前用户,包括其浏览记录,操作记录等,记得要记录请求来源及时间,通过监控程...
香港印象(2) 文:杨庆瑞 时尚的城市,汇集着各方风潮 如夜幕下的霓虹,瞬息万变 走到不同转角,不同景象闯入眼帘, 如电影镜头般快速切换 想象两边街景向后掠 先不管华丽的店铺 天后宫,将军庙 道观清修,佛寺参禅, 路边摊算命,天桥下打小人 古老的传统,犹如海底水藻 一任海面...
每次和别人聊天,别人问我大学生活怎么过的,无聊吗? 其实不无聊,哪怕累的不想动,也很开心,初中到高中,班级里的班干部我都当过,唯独体育委员,上大学了。投票选,哇塞塞,心里那个美滋滋呀。最后多一票任选了。 第一次的体育课被嘲笑了,不会喊口号,不会整理队形等等~~ 我喜欢打篮球...
2017中奥媒体国际足球友谊赛将于4月14日在陕西省体育场内场举行。大战在即,4月11日,陕西盈科媒体联队正式建队并举行了出征仪式和动员大会。盈科律师事务所西安分所执行主任庄瑞彪激励队员要在比赛中发扬敢打敢拼的作风,展示出陕西媒体人良好的精神面貌。 2017中奥媒体国际足球...
现在是凌晨一点半,距离最后一个室友上床的时间大概五十分钟,而我从十一点就试图入睡,却发现再也睡不着了。 昨天上午十点有课。 原本我是一个坚持每天六点起床的好孩子,不过自从四月份来了姨妈之后就再也没能早起过,其实我也不明白这是为什么,冬天那样艰苦的环境下我都可以离开我温暖的床...JAVA面向对象之静态变量 静态方法 内存解析
<span type="1" blog_id="2068749" userid='
分享到朋友圈
好的文章,和好友一起分享在java语言中,静态变量是不是不能在方法中定义?只能在类里面,方法外面定义?_百度知道
在java语言中,静态变量是不是不能在方法中定义?只能在类里面,方法外面定义?
我有更好的答案
静态的东西是类加载的时候初始化的。如果是一般方法,类加载的时候不会初始化。你想定义静态变量可以定义在静态方法里嘛。(多看看类、对象初始化时那个图)=======================修正下,是静态方法里面可以使用静态变量额,还是你啊。静态变量一般定义在类里。你还是不太理解静态变量,不可以定义
Hi~ o(* ̄▽ ̄*)ブ刚开始学,很多不明白的地方= ̄ω ̄=静态方法……是什么,是main方法么?
就是用static关键字修辞的方法。不光是main方法。
哦哦,这下明白了……昨晚我还在奇怪为什么有的要加static……谢谢啦(&#65381;&#3636;&#982;&#65381;&#3636;)っ
采纳率:64%
静态变量又叫类变量,估计只能在类内部,方法外面定义。你试着在方法内定义一个静态变量,看能否通过编译?
静态方法可以用类名进行调用,不必依赖实例对象。相对立的是实例方法,必须依赖实例调用之。
是这样的,这不是挺明白的嘛.
为您推荐:
其他类似问题
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。java中静态方法和静态变量的作用
有时你希望定义一个类成员,使它的使用完全独立于该类的任何对象。通常情况下,类
成员必须通过它的类的对象访问,但是可以创建这样一个成员,它能够被它自己使用,
而不必引用特定的实例。在成员的声明前面加上关键字static(静态的)就能创建这样的
成员。如果一个成员被声明为static,它就能够在它的类的任何对象创建之前被访问,
而不必引用任何对象。你可以将方法和变量都声明为static。static 成员的最常见的
例子是main( ) 。因为在程序开始执行时必须调用main() ,所以它被声明为static。
声明为static的变量实质上就是全局变量。当声明一个对象时,并不产生static变量的
拷贝,而是该类所有的实例变量共用同一个static变量。声明为static的方法有以下几
· 它们仅能调用其他的static 方法。
· 它们只能访问static数据。
· 它们不能以任何方式引用this 或super(关键字super 与继承有关)。
如果你需要通过计算来初始化你的static变量,你可以声明一个static块,Static 块
仅在该类被加载时执行一次。下面的例子显示的类有一个static方法,一些static变
量,以及一个static 初始化块:
// Demonstrate static variables,methods,and blocks.
class UseStatic {
static int a = 3;
static void meth(int x) {
System.out.println("x = " + x);
System.out.println("a = " + a);
System.out.println("b = " + b);
System.out.println("Static block initialized.");
b = a * 4;
public static void main(String args[]) {
一旦UseStatic 类被装载,所有的static语句被运行。首先,a被设置为3,接着
static 块执行(打印一条消息),最后,b被初始化为a*4 或12。然后调用main(),main
() 调用meth() ,把值42传递给x。3个println ( ) 语句引用两个static变量a和b,以
及局部变量x 。
注意:在一个static 方法中引用任何实例变量都是非法的。
下面是该程序的输出:
Static block initialized.
在定义它们的类的外面,static 方法和变量能独立于任何对象而被使用。这样,你只
要在类的名字后面加点号运算符即可。例如,如果你希望从类外面调用一个static方
法,你可以使用下面通用的格式:
classname.method( )
这里,classname 是类的名字,在该类中定义static方法。可以看到,这种格式与通过
对象引用变量调用非static方法的格式类似。一个static变量可以以同样的格式来访
问——类名加点号运算符。这就是Java 如何实现全局功能和全局变量的一个控制版
下面是一个例子。在main() 中,static方法callme() 和static 变量b在它们的类之外
class StaticDemo {
static int a = 42;
static int b = 99;
static void callme() {
System.out.println("a = " + a);
class StaticByName {
public static void main(String args[]) {
StaticDemo.callme();
System.out.println("b = " + StaticDemo.b);
下面是该程序的输出:
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。静态方法和实例方法的区别主要体现在两个方面:
在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象。
静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制。
下面几个例子展示了这一区别。
1、调用静态方法示例。
//-----------hasStaticMethod.java-----------------public class hasStaticMethod{//定义一个静态方法public static void callMe(){  System.out.println("This is a static method.");}}
下面这个程序使用两种形式来调用静态方法。
//-----------invokeStaticMethod.java-----------------public class invokeStaticMethod{  public static void main(String args[]){  hasStaticMethod.callMe();& //不创建对象,直接调用静态方法&&&   hasStaticMethod oa = new hasStaticMethod();&& //创建一个对象  oa.callMe();&&&&& //利用对象来调用静态方法}}
程序两次调用静态方法,都是允许的,程序的输出如下:
This is a static method.This is a static method.
允许不创建对象而调用静态方法,是Java为了减少程序员调用某些常用方法时的麻烦,而允许程序员按照传统的C语言中使用函数的方式来使用方法。典型的例子是前面某些程序中使用"Math.ramdon()"来获取随机数。
还有一个很典型的代表就是数组的处理工具Arrays
2、静态方法访问成员变量示例。
//-----------accessMember.java-----------------class accessMember{p //定义一个静态成员变量private&& //定义一个实例成员变量//下面定义一个静态方法static void statMethod(){  int i = 0;&&& //正确,可以有自己的局部变量sa = 10;&&   //正确,静态方法可以使用静态变量  otherStat();&   //正确,可以调用静态方法  ia = 20;&& //错误,不能使用实例变量  insMethod();& //错误,不能调用实例方法}static void otherStat(){} //下面定义一个实例方法 void& insMethod(){  int i = 0;&&& //正确,可以有自己的局部变量  sa = 15;&&& //正确,可以使用静态变量  ia = 30;&&& //正确,可以使用实例变量  statMethod();&& //正确,可以调用静态方法}}
本例其实可以概括成一句话:静态方法只能访问静态成员,实例方法可以访问静态和实例成员。之所以不允许静态方法访问实例成员变量,是因为实例成员变量是属于某个对象的,而静态方法在执行时,并不一定存在对象。同样,因为实例方法可以访问实例成员变量,如果允许静态方法调用实例方法,将间接地允许它使用实例成员变量,所以它也不能调用实例方法。基于同样的道理,静态方法中也不能使用关键字this。
main()方法是一个典型的静态方法,它同样遵循一般静态方法的规则,所以它可以由系统在创建对象之前就调用
阅读(...) 评论()

我要回帖

更多关于 java 静态变量赋值 的文章

 

随机推荐