⑴ 在java中调用非静态方法
在一个类中创建一个这个类的对象,像这样:类 对象 = new 类();
然后用 对象.goAhed(这里传一个String类型的数组) 就可以了。
⑵ java静态方法与非静态方法有什么区别
静态方法和非静态方法的区别总结如下:
1、静态方法属于类所有,类实例化前即可使用;
2、非静态方法可以访问类中的任何成员,静态方法只能访问类中的静态成员;
3、因为静态方法在类实例化前就可以使用,而类中的非静态变量必须在实例化之后才能分配内存;
4、static内部只能出现static变量和其他static方法!而且static方法中还不能使用this等关键字,因为它是属于整个类;
5、静态方法效率上要比实例化高,静态方法的缺点是不自动进行销毁,而实例化的则可以做销毁;
6、静态方法和静态变量创建后始终使用同一块内存,而使用实例的方式会创建多个内存。
主要区别:静态方法在创建对象前就可以使用了,非静态方法必须通过new出来的对象调用。
静态方法与实例方法在性能和占用内存上没有明显的区别,是否声明为静态方法需要从类型的非静态字段、事件、面向对象扩展和多态这三方面来考虑。
⑶ java中如何在静态方法中实现对非静态方法的调用,请问各位有没有具体的例子。
public class A{
//类A中非静态方法
public void func(){ ...... }
//类A中静态方法(主函数)
public static void main(String[] args){
A a=new A();//需实例化A的对象后才可以调用A中非静态方法
a.func();
}
如上面这个简单的例子,静态方法对非静态方法发起调用时,需实例化包含非静态方法的类的对象。如果类A中静态方法需调用类B中非静态方法时,也需实例化B的对象。
原因解释:类中静态的方法或者属性,本质上来讲并不是该类的成员,在java虚拟机装在类的时候,这些静态的东西已经有了对象,它只是在这个类中"寄居",不需要通过类的构造器(构造函数)类实现实例化;而非静态的属性或者方法,在类的装载是并没有存在,需在执行了该类的构造函数后才可依赖该类的实例对象存在。所以在静态方法中调用非静态方法时,编译器会报错(Cannot make a static reference to the non-static method func() from the type A)。
不知这么说你懂了没,如果还有什么不懂可以继续问我。
⑷ java 静态方法可以调用非静态方法吗
//必须可以!
publicclass非静态方法
{
publicstaticvoidmain(String[]args)
{
System.out.println("
==========java静态方法可以调用非静态方法吗!==========
");
init();
}
//测试案例,静态方法!
privatestaticvoidinit()
{
//这里调用下面的,看控制台输出!
new非静态方法().show();
//很好调用,创建对象即可!
}
//测试2,非静态方法!
privatevoidshow()
{
System.out.println("show--是非静态方法!");
}
}

⑸ 为什么java提供的非静态方法可以直接在静态主方法里使用比如charAt()
非静态方法的使用,必须有个对象存在。而 比如 "ABC" 之类就是实体类。静态方法中也可以创建实体类,或者把实体类作为参数。
所以charAt(),肯定是作为某个实体类的方法被调用的。这个完全没有问题。
⑹ java非静态方法里可以调用静态方法吗
静态static方法中不能调用非静态(non-static)方法,准确地说是不能直接调用non-static方法。但是可以通过将一个对象的引用传入static方法中,再去调用该对象的non-static方法。
其实这个事实的应用很经常,以至于我们不去重视:
在主函数(static方法)中我们经常创建某个类的实例,再利用其引用变量调用它的非静态方法。
⑺ java非静态成员变量中的基本变量到底存在哪里

其实我觉得书上就想说:基本数据类型创建的值存在栈内存中,引用数据类型的值存在堆内存中,
配合上图详解:基本数据类型 int i=3;就是在栈内存中开个房子给 i,名字叫 i , 里面住着 3 。而 引用数据类型 String str="abc" 就是栈内存给它开后院,叫 str 去 堆内存地址为 0x2253的地方去住,所以引用类型的值存在 堆内存中,而栈内存中存的是它住的房号,也就是值所在的堆内存地址。
这样说不知道你能不能理解。但我想说:图自己画的,文字自己敲的,如果有错,请尊重回答者。
⑻ 关于java中的静态方法和非静态方法
静态方法属于类的。一般情况下写一些工具方法,跟自己定义的对象无关的方法。强烈不建议用对象去调用静态方法。具体的你可以看下java虚拟机。
⑼ java主方法如何调用非静态方法
java主方法调用非静态方法的步骤:
** * Created by Administrator on 2016/7/25.
*/
public class NOstaticMethod {
//satement new variable name: studentName
public static String studentName = "xxx";
//satetment new variable nmae: country
public static String country;
//satement new variable name: nation
private static String nation;
//satement new variable name: subject
public String subject = "物理";
//satement new variable name: school
private String school;
//create main method
public static void main(String[] args) {
//NOstaticMethod.Method_1(); 在静态方法main中是不能直接调用非静态方法Method_1的
//只能通过创建类的对象,再由对象去调用成员方法以及成员变量。
NOstaticMethod wangyan = new NOstaticMethod();
//call methol
wangyan.Method_1();
// String physics= subject;在静态方法中也是不能访问非静态成员变量的
//call not static variable
String physics = wangyan.subject;
System.out.println("在主方法main()中只能通过对象来调用非静态成员变量subject:" + physics);
}
//create new method name: Method_1()
public void Method_1() {
System.out.println("Method_1是一个公共的、非静态的方法");
System.out.println("在非静态方法Method_1中访问静态成员变量“学生姓名”(studentName):" + studentName);
System.out.println("在method_1中直接调用非静态成员变量subject:" + subject);
}
Method_1是一个公共的、非静态的方法
在非静态方法Method_1中访问静态成员变量“学生姓名”(studentName)
在method_1中直接调用非静态成员变量subject(科目)
在主方法main()中只能通过对象来调用非静态成员变量subject
public static void main(String[] args) {
//NOstaticMethod.Method_1(); 在静态方法main中是不能直接调用非静态方法Method_1的
//只能通过创建类的对象,再由对象去调用成员方法以及成员变量。
NOstaticMethod wangyan = new NOstaticMethod();
//call methol
wangyan.Method_1();
// String physics= subject; 在静态方法中也是不能访问非静态成员变量的
//call not static variable
String physics = wangyan.subject;
System.out.println("在主方法main()中只能通过对象来调用非静态成员变量subject:" + physics);
}
⑽ java中什么是非静态方法
用Static修饰的方法叫静态方法 那么不用它修饰的当然就是非静态方法了,非静态方法需要创建对象并初始化后才可以使用。