关于java静态方法的问题

来源:百度知道 编辑:UC知道 时间:2024/06/24 09:50:10
1 为什么静态方法中只能访问静态变量
2 同样是在静态方法中却可以访问非静态方法
3 为什么要出现静态方法

我是初学java,对这些基本的理论还不太懂。上面若有写错的地方请指出,万分感谢!

如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来调用的时候,需要使用静态方法,这种代码是被动执行的。
静态代码块可用来初始化一些项目最常用的变量或对象;静态方法可用作不创建对象也可能需要执行的代码。

看到这么多非专业人员回答,我实属心痛,连最简单的问题都搞不明白,却都能成为经理。
其实很简单的,说到底,就是因为他们的生存周期不一样。
对于一个类,他有类成员(用static修饰的)和普通成员(没有static修饰的,也成为实例成员)。
那么,类成员和一个类的生存时间是一样的;而实例成员,只有当这个对象被实例出来,那么,这个成员才开始使用,一直当这个对象被JVM回收了,这个成员也会随之消失。而这个时候,类成员还存活着。
鉴于你初学,一些底层东西我不多讲。
现在就回答你的问题
1、因为他们生存周期不一样
2、静态方法中不能访问非静态方法,必须是实例化了一个对象,然后通过对象访问这个非静态方法,那么当这个对象挂了得时候,他的方法自然就挂了。当然,非静态方法可以访问静态方法。
3、类成员和实例成员,其实和函数中的全局变量和局部变量一样,把那些常用的,我们可以声明为类成员,典型的就是main()方法,而不常用的,就整成实例成员。也就是说,类成员作用范围要实例成员范围广。

一个简单的代码
public People{
private String name;
private int age;
private void say(){

System.out.println("我是: "+name+" 年龄为:"+age);
}
public People(String name,int age){
this.name=name;
this.age=age;
}
public static void main(String[] args){
People p=new