Java中建立实例对象和使用静态方法分别有什么好处
作者&投稿:褒茂 (若有异议请与网页底部的电邮联系)
Static 修饰的方法或变量称为静态的.静态数据存在于内存中的方法区,数据加载以后可直接使用.如:A 类中有一个非静态的 B 方法和静态的 C 方法,那么调用B方法时需要创建A类的对象,而调用C方法时可直接类名加方法名调用,无需新建对象. 静态方法始终占据内存空间,调用方便.非静态相反,具体看情况你自己选择
当类不会有多个对象而是更像是一个公用类的时候,或当方法或属性是“公用”信息的时候声明成静态的比较好。只希望某个类提供一些服务,不需要创建具体实例时,就可以用它。
至于好处的话,个人觉得体现在:1、不用实例化,方便使用。2、被预编译;4、快。
当然,这些优势都是因为其占用内存,所以静态类静态方法不能太大太占资源,多了不见得好。
在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象。
静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制。
下面几个例子展示了这一区别。
1、调用静态方法示例。
//-----------文件名hasStaticMethod.java,程序编号1-----------------public class hasStaticMethod{//定义一个静态方法public static void callMe(){System.out.println("This is a static method.");}}
下面这个程序使用两种形式来调用静态方法。
//-----------文件名invokeStaticMethod.java,2-----------------public class invokeStaticMethod{public static void main(String args[]){hasStaticMethod.callMe(); //不创建对象,直接调用静态方法 hasStaticMethod oa = new hasStaticMethod(); //创建一个对象oa.callMe(); //利用对象来调用静态方法}}
程序3.36两次调用静态方法,都是允许的,程序的输出如下:
This is a static method.This is a static method.
允许不创建对象而调用静态方法,是Java为了减少程序员调用某些常用方法时的麻烦,而允许程序员按照传统的C语言中使用函数的方式来使用方法。典型的例子是前面某些程序中使用"Math.ramdon()"来获取随机数。
2、静态方法访问成员变量示例。
//-----------文件名accessMember.java,程序编号3.37-----------------class accessMember{private static int sa; //定义一个静态成员变量private int ia; //定义一个实例成员变量//下面定义一个静态方法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大学基础教程的图书目录
相等和关系运算符2.9本章小结第3章类和对象的基础知识3.1简介3.2类、对象、方法和实例变量3.3声明带有一个方法的类并实例化该类的一个对象3.4声明带形式参数的方法3.5实例变量、set方法和get方法3.6基本类型和引用类型的对比3.7用构造函数初始化对象3.8浮点数和double类型3.9 GuI和图形实例...
黎郭安持: 静态方法和实例方法的区别主要体现在两个方面:在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式.而实例方法只有后面这种方式.也就是说,调用静态方法可以无需创建对象.静态方法在访问...
柳江县19324394909: java 调用静态方法和实例(对象)方法的区别 - ?
黎郭安持: 静态方法可以直接用类名来调用,一般这类方法和成员变量无关; 例public class A { public static void fun1(){} public void fun2(){} }静态方法调用:A.fun1(); 非静态方法调用:A a=new A(); a.fun2();
柳江县19324394909: java中,什么是静态方法? - ?
黎郭安持: 类中的方法前加了static关键字,则该方法称为静态方法.静态方法为类所有,可以通过对象来使用,也可以通过类来使用,但一般提倡通过类名来使用,因为静态方法只要定义了类,不必建立类的实例对象就可使用.静态方法只能调用类的静态数据成员.希望采纳
柳江县19324394909: 用Java创建GeneralFunction类的实例对象,并尝试通过该对象来访问其静态方法 - ?
黎郭安持: 静态方法无需通过实例来访问,直接GeneralFunction.xxx()就可以
柳江县19324394909: java里静态变量和实例变量有什么区别 - ?
黎郭安持: 在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量.静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,...
柳江县19324394909: java 静态方法和实例方法的区别 - ?
黎郭安持: static 修饰的就是静态方法,调用的时候可以直接类名.方法调用.里面引用外部的变量和方法的时候必须是引用static修饰的关键字和方法.实例没有static修饰,正常使用就行.
柳江县19324394909: 静态方法和实例化方法的区别 - ?
黎郭安持: 他们使用的时候..表象上看是一个需要实例化 一个不需要.. 其实他们最最重要的区别不在这里.. 对于静态方法和一些静态的东西..譬如说静态变量啊什么的..这些是程序开始运行的时候就一直存在于内存里的..而对象的话..只有在实例化之后才会被放...
柳江县19324394909: JAVA中类方法(静态方法)和实例方法的区别 - ?
黎郭安持: 静态方法是使用了关键字static修饰的方法,并且静态方法是属于类的,可以用"类名.静态方法名"调用,也可以使用实例调用,但是尽量使用类名调用,而实例方法是属于一个实例的,只能使用实例来调用它
柳江县19324394909: Java中静态成员与实例成员的使用方法和区别?
黎郭安持: 静态变量 类加载时初始化,全类公有,类名.访问 成员变量 创建对象过程中初始化,对象公有,对象.访问
柳江县19324394909: Java中静态成员和实例成员的区别,及main函数 - ?
黎郭安持: 在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式.而实例方法只有后面这种方式.也就是说,调用静态方法可以无需创建对象.特殊的就是一个类的main方法,都是以public static void限制的,所...