java中静态方法的使用

JAVA中使用静态方法

编程时我们心里一定要清楚静态方法和类的非静态方法方法的区别: 
最根本区别从编译角度来说吧: 
1) 静态(static)方法是编译时直接加载加载到内存中(离cpu最近的一块内存区域也称为堆栈),比如程序的public static main(args []){}方法,你能实例话吗? 
静态方法不能被实例化,也不允许被实例化!

因此你可以通过“类名”+“.”+“静态方法的名()”来调用

2)非静态方法(类的非静态方法)通过关键字 “new” 字来实例化一个对象(object),这个对象放在内存的另一块区域堆(heap)中。 
也就是说编译时,非静态方法必须先实例化类的一个对象,通过“对象名”+“非静态方法名()”来调用,

或者是“对象引用(句柄)”+“.”+“静态方法的名()”;

Java代码  

  1. public class Student {
  2. private String name;
  3. //下面两个方法是类的非静态方法封装 属性name,看一下在 main()如何调用
  4. public void set(String init_name) {
  5. this.name = init_name;
  6. }
  7. public String get() {
  8. return this.name;
  9. }
  10. //构造函数
  11. public Student() {}
  12. public Student(String init_name) {
  13. this.name = init_name;
  14. }
  15. //下面是一个静态方法,看一下它在main()中如何调用
  16. public static void PrintClassName() {
  17. System.out.println("该类的名字:Student");
  18. }
  19. }

Java代码  

    1. public class MainClass {
    2. public static void main(String[] args) {
    3. //先调用静态方法,不需要实例化对象
    4. Student.PrintClassName();
    5. //现在调用非静态方法,一定要实例化对象
    6. Student stu1 = new Student();
    7. stu1.set("John");
    8. String stu1_name = stu1.get();
    9. }
    10. }
时间: 2024-08-06 03:19:41

java中静态方法的使用的相关文章

Java中静态方法能否被重写

??在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法.但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写(Override).方法重写又称方法覆盖. public class Test { public static void main(String[] args) { /** * 结论: * 静态方法可以被继承,但是不能被覆盖,即不能重写. * */ Son.staticMethod(); // 运行结果:Father staticMethod

<转>java中静态方法和非静态方法的存储

Java中非静态方法是否共用同一块内存? 将某 class 产生出一个 instance 之后,此 class 所有的 instance field 都会新增一份,那么所有的 instance method 是否也会新增一份?答案是不会,我们用field表示字段,用method表示方法,那么加上static区分后就 有四种: class field:有用static修饰的fieldclass method:有用static修饰的methodinstance field:没有用static修饰的f

java中静态方法中为什么不能使用this、super和直接调用非静态方法

这个要从java的内存机制去分析,首先当你New 一个对象的时候,并不是先在堆中为对象开辟内存空间,而是先将类中的静态方法(带有static修饰的静态函数)的代码加载到一个叫做方法区的地方,然后再在堆内存中创建对象.所以说静态方法会随着类的加载而被加载.当你new一个对象时,该对象存在于对内存中,this关键字一般指该对象,但是如果没有new对象,而是通过类名调用该类的静态方法也可以. 程序最终都是在内存中执行,变量只有在内存中占有一席之地时才会被访问,类的静态成员(静态变量和静态方法)属于类本

Java 中 静态方法与非静态方法的区别

静态方法和实例方法的区别主要体现在两个方面: 在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式.而实例方法只有后面这种方式.也就是说,调用静态方法可以无需创建对象. 静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法:实例方法则无此限制. 下面几个例子展示了这一区别. 1.调用静态方法示例. //-----------文件名hasStaticMethod.java,程

Java中静态关键字的使用方法介绍二

1         静态方法 前面我们了解了静态成员变量的一些使用的方式,现在我们接着探讨一下静态方法的相关内容,并了解一下静态方法的使用情况. 1.1      静态方法和一般方法的定义方法 在类中我们可以定义类的方法,如果当一个方法的前面加了关键字Static,也当方法使用静态修饰符时,我们则称这个方法为静态方法,没有这个关键字,则不是静态方法.还是以Car类为例,定义一个静态方法stop(),和一个非静态方法show(),具体看下面代码所示. public class Car { publ

Java基础知识强化03:Java中的堆与栈

1.在JVM中,内存分为两个部分,Stack(栈)和Heap(堆),这里,我们从JVM的内存管理原理的角度来认识Stack和Heap,并通过这些原理认清Java中静态方法和静态属性的问题. 一般,JVM的内存分为两部分:Stack和Heap.  注意: java程序运行时,数据会分区存放,heap.stack.method. 类的对象放在heap(堆)中,所有的类对象都是通过new方法创建,创建后,在stack(栈)会创建类对象的引用(内存地址). stack的区域很小,只有1M,特点是存取速度

java中父类的静态方法不能被重写

Java中父类的静态方法确实不能被重写的,但是有的人可能去做实验发现在子类中去重写父类static方法时,并没什么问题.这里我来具体解释下. public class Parent { public static void add(){   System.out.println("=========Parent");}} public class Children extends Parent { public static void add(){   System.out.print

java中静态属性和和静态方法的继承问题 以及多态的实质

首先结论是:java中静态属性和和静态方法可以被继承,但是没有被重写(overwrite)而是被隐藏. 静态方法和属性是属于类的,调用的时候直接通过类名.方法名完成的,不需继承机制就可以调用如果子类里面定义了静态方法和属性,那么这时候父类的静态方法 或属性称之为“隐藏”,你如果想要调用父类的静态方法和属性,直接通过父类名.方法名或变量名完成,至于是否继承一说,子类是有继承静态方法和属性,但是 跟实例方法和属性不太一样,存在“隐藏”的这种情况. 多态之所以能够实现是依赖于 继承 接口和 重写 .重

入门: 使用JNI 从C++代码中调用Java的静态方法

开发环境: 操作系统: (uname -a output)  Linux ubuntu 3.8.0-19-generic #29-Ubuntu SMP Wed Apr 17 18:16:28 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux JDK 版本 : (java -version) java version "1.7.0_51"OpenJDK Runtime Environment (IcedTea 2.4.4) (7u51-2.4.4-0ubun