精华内容
下载资源
问答
  • javastatic方法与非static方法之间的调用关系,有以下四种:1、非static方法调用static方法,直接通过方法名调用2、static方法调用static方法,直接通过方法名调用3、非static方法调用static方法,直接通过方法...

    java中static方法与非static方法之间的调用关系,有以下四种:

    1、非static方法调用非static方法,直接通过方法名调用

    2、static方法调用static方法,直接通过方法名调用

    3、非static方法调用static方法,直接通过方法名调用

    4、static方法调用非static方法,通过类对象来调用

    示例如下:

    package com.chendi.objectNav;
    
    public class MainClass {
    
        public static void main(String[] args){
            Circle circle = new Circle();
            Line line = new Line();
    
            //静态方法调用静态方法
            doSomeThing(circle);
            doSomeThing(line);
    
            //静态方法调用非静态方法
            MainClass mainClass = new MainClass();
            mainClass.noStatic();
    
        }
    
        public void noStatic(){
            //非静态方法调用非静态方法
            test1();
            //非静态方法调用静态方法
            test2();
    
        }
    
        public void test1(){
            System.out.print("1");
        }
    
        public static void test2(){
            System.out.print("2");
        }
    
        public static void doSomeThing(Shape shape){
            shape.erase();
        }
    }

    展开全文
  • 一个方法用static修饰,便是静态方法或类...所以,在static方法内部无法直接调用static方法(可以通过先实例化对象,再用该对象调用static方法),但非static方法中可以调用static方法,通过类.方法名()的方式。

    一个方法用static修饰,便是静态方法或类方法。静态方法不属于特定对象。

    由于static方法在装载class时首先完成,比构造方法早,此时非static属性和方法还没有完成初始化。

    所以,在static方法内部无法直接调用非static方法(可以通过先实例化对象,再用该对象调用非static方法),但非static方法中可以调用static方法,通过类.方法名()的方式。

    展开全文
  • javastatic方法使用问题

    千次阅读 2017-03-05 23:30:56
    遇到一个问题:如图所示,在改行中IDE给出warning: The static method print() from the type demo should be accessed in a static...把text去掉,直接调用print()方法; 简单来说: 这个是警告,不是错误,不影响使用

    遇到一个问题:

    这里写图片描述

    如图所示,在改行中IDE给出warning:

    The static method print() from the type demo should be accessed in a static way

    有三种解决方案:

    1. 把text该为demo;
    2. 把print()方法中的static去掉;
    3. 把text去掉,直接调用print()方法;

    简单来说:

    • 这个是警告,不是错误,不影响使用
    • print()方法是static静态方法,直接使用”类.方法”调用,因为静态方法在对象创建前就存在了,他的使用不依赖对象是否被创建.
    • 非静态的方法用”对象.方法”的方式,因为他在对象创建前不存在,必须依赖对象的创建后,才能使用
    • 由于在本类调用,可以直接使用方法。

    以下是static方法和实例方法的区别:

    生命周期(Lifecycle):

    静态方法(Static Method)与静态成员变量一样,属于类本身,在类装载的时候被装载到内存(Memory),不自动进行销毁,会一直存在于内存中,直到JVM关闭。

    非静态方法(Non-Static Method)又叫实例化方法,属于实例对象,实例化后才会分配内存,必须通过类的实例来引用。不会常驻内存,当实例对象被JVM 回收之后,也跟着消失。

    在内存中存储位置

    静态方法和静态变量创建后始终使用同一块内存,是连续的。

    非静态方法会存在于内存的多个地方,是离散的。

    效率

    静态方法的使用效率比非静态方法的效率高。

    线程安全

    静态方法是共享代码段,静态变量是共享数据段。既然是“共享”就有并发(Concurrence)的问题。

    非静态方法是针对确定的一个对象的,所以不会存在线程安全的问题。

    使用范围

    静态方法:
    ⒈ 有静态属性的类,一般会定义静态方法。
    ⒉ 没有属性的类,一般会定义静态方法。
    ⒊ 如果一个方法与他所在类的实例对象无关,那么它就应该是静态的。静态方法可以被继承但是不能被覆盖。

    总计

    如果静态方法在系统中定义太多,会占用大量的资源,最后造成内存溢出,所以静态方法不能滥用。如果从线程安全、性能、兼容性上来看,选用实例化方法为宜。

    一般来说, 在程序里面,一些使用频率高的方法就用static 方法、使用频率低的则用实例方法。


    注意:

    1. 静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员。
    2. 如果希望在静态方法中调用非静态变量,可以通过创建类的对象,然后通过对象来访问非静态变量。
    3. 在普通成员方法中,则可以直接访问同类的非静态变量和静态变量。
    4. 静态方法中不能直接调用非静态方法,需要通过对象来访问非静态方法。
    展开全文
  • JAVA中的static方法调用static方法

    万次阅读 多人点赞 2012-03-21 22:33:43
    1、由JVM的执行机制决定了在... 因为类方法(static方法)执行的时候,其所在的堆栈中是没有指向对象的引用的任何信息的,而非static方法调用的时候又必须要知道调用该方法的对象的引用。所以从这里可以看出,stat

    转自:http://blog.csdn.net/jc_njj/article/details/5102556

    1、由JVM的执行机制决定了在static方法中是不能直接调用该类的其它非static方法的。

      因为类方法(static方法)执行的时候,其所在的堆栈中是没有指向对象的引用的任何信息的,而非static方法在调用的时候又必须要知道调用该方法的对象的引用。所以从这里可以看出,static方法中是没有办法直接调用非static方法的。

      从另外一方面来讲,static方法中是不存在this的,而this是一个很重要的指向对象的引用的关键字(每个非static方法中都应该存在的,并且指向了调用该方法的对象的引用;非static方法调用改类其他方法的时候实际上是用到了this.[Method])。所以没有this的static方法是不可能直接调用该类中的非static方法的。

     

    2、static方法中可以通过创建(new)该类的引用或者在调用static方法的时候传递一个对象的引用过去,这两种方法来调用非static方法。

      典型的例子就是static void main()方法,在这个static方法中可以看到,会创建任意的实例,然后通过这些实例来调用所属类的非静态方法。

     

    3、static方法是在编译的时候确定的,在类装入内存的时候也同时装入内存了。而非static方法是在类的实例化的时候装入内存的,其必须依赖于类的实例。

    实例在装入堆栈的时候是会附加上指向method area(具体的可以参看JVM Specificationhttp://java.sun.com/docs/books/jvms/second_edition/html/VMSpecTOC.doc.html)的指针,所以可以在非静态方法中调用static方法。

     

    展开全文
  • Javastatic方法实战

    千次阅读 2019-06-02 11:49:49
    使用static定义的方法可以由类名直接调用。 static的main方法可以接收一个String类型的数组参数,该数组中保存执行Java命令时传递给所运行的类的参数。格式如下: java类名称参数1参数2参数3 二实战——静态方法...
  • Javastatic方法与非static方法

    千次阅读 2017-04-18 21:40:42
    静态方法Static Method)与静态成员变量一样,属于类本身,在类装载的时候被装载到内存(Memory),不自动进行销毁,会一直存在于内存中,直到JVM关闭。 非静态方法(Non-Static Method)又叫实例化方法,属于...
  • Javastatic方法和普通方法的区别

    万次阅读 多人点赞 2017-05-08 13:36:47
    在类中使用static修饰的静态方法会随着类的定义而被分配和装载入内存中;而非静态方法属于对象的具体实例,只有在类的对象创建时在对象的内存中才有这个方法的代码段。 注意:非静态方法既可以访问静态数据成员 又...
  • 我在我在main方法调用了一个函数,并且这个函数没有用static修饰,就像这样: 这样报错了!!! 我虽然学Java 的时间也不多,但这个问题也帮助我更深刻的理解了一些东西。 我的方法体中间没有加上static,加上...
  • 1、由JVM的执行机制决定了在static方法中是不能直接调用改类的其它非static方法的。  因为类方法(static方法)执行的时候,其所在的堆栈中是没有指向对象的引用的任何信息的,而非static方法调用的时候又必须...
  • java的calss中,在public static void main(String[] args) { }方法中调用非static的方法:在main方法中创建该calss的对象,用对象调用static方法 public class Test{ public void testaction(){ //方法...
  • 最近重构项目时发现以前代码中,竟然有人用new对象的方式来调用类的静态方法,不都是通过类名.方法名直接调用嘛?这使我对自己认知产生了...new的时候会先把类中static修饰的方法加载到代码区,然后在开辟内存。 ...
  • JavaStatic方法和Static程序块的用法总结
  • Javastatic静态方法与普通方法

    千次阅读 2018-10-22 22:14:11
    所谓静态方法,就是方法前面加上static关键字,调用静态方法时一般用类名.方法名,当然也可以用对象名.方法名; 一般Java中工具类里面的工具方法都用static修饰,作为静态方法; 比如:String类里面的将字符串类型...
  • import java.io.*; import java.util.*;... public static void main(String args[]) throws Exception{ f(); } boolean f() { return true; } } 上述代码IDE报错:Cannot make a sta...
  • Java static修饰方法

    千次阅读 2017-04-24 23:29:09
    一、static 修饰方法 1、与静态变量一样,我们也可以使用 static 修饰方法,称为静态方法或类方法。其实之前我们一直写的 main ...//使用static关键字修饰静态方法 public static void print(){ System.out.println
  • javastatic关键字的使用说明

    万次阅读 多人点赞 2019-06-01 23:01:29
    static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。这实际上正是static方法的主要用途。”  这段话虽然只是说明了static方法的特殊之处...
  • javastatic方法的连续调用

    千次阅读 2018-09-22 14:49:13
    代码: package test922; public class ReturnThis { public int age; ... public ReturnThis grow() { ... // 返回调用方法的对象 } public static void main(String[] args) { ReturnThi...
  • 1. 非静态方法可以访问类中非staticstatic的变量  2.静态方法只能直接访问静态变量 例如: public class Test { private static String name = "wahaha"; private int age = 20; public void ...
  • 虽然很基础,但我还是写一下. 定义两个类:TestMethod和TestMet,TestMethod内容如下: package test;... public static void main(String[] args) { TestMet testMet=new TestMet(); testMet
  • 在类中使用static修饰的静态方法会随着类的定义而被分配和装载入内存中;而非静态方法属于对象的具体实例,只有在类的对象创建时在对象的内存中才有这个方法的代码段。 注意:非静态方法既可以访问静态数据成员 又...
  • 而静态方法(static) 无法直接调用非静态方法(non-static),想要调用的话有以下两个做法: 把非静态方法改成静态方法 使用<类名.方法名>调用非静态方法 public class Static_test { public ...
  • java static关键字修饰方法

    千次阅读 2018-10-22 00:24:45
    java static关键字修饰方法1.java static关键字修饰方法的特性2.注意要点 1.java static关键字修饰方法的特性 随着类的加载而加载,在内存中也是独一份 可以直接通过“类.类方法”的方式调用 在静态的方法内部...
  • javastatic方法并发问题

    千次阅读 2015-08-23 10:48:06
    只要你的静态方法不访问全局变量的话,就不会有并发...静态方法内部的变量,都是局部变量,每次调用静态方法时都会重新分配内存空间,所以是安全的 也就是是说只要你的静态方法不访问全局变量的话,就不会有并发问题
  • java static方法不能被重写

    千次阅读 2018-04-04 14:27:14
    语法上子类允许出现和父类只有方法体不一样其他都一模一样的static方法,但是在父类引用指向子类对象时,通过父类引用调用的依然是父类的static方法,而不是子类的static方法。 即:语法上static支持重写,但是运行...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,402,051
精华内容 960,820
关键字:

java调用static方法

java 订阅