基础知识

类的访问权限

访问权限 同一个类 同一个包 不同包的子类 不同包的非子类
private
default
protected
public

静态方法

  • 在外部调用静态方法时,可以使用”类名.方法名”的方式,也可以使用”对象名.方法名”的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象。
  • 静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制。
  • 静态方法只能访问静态成员,实例方法可以访问静态和实例成员。之所以不允许静态方法访问实例成员变量,是因为实例成员变量是属于某个对象的,而静态方法在执行时,并不一定存在对象。同样,因为实例方法可以访问实例成员变量,如果允许静态方法调用实例方法,将间接地允许它使用实例成员变量,所以它也不能调用实例方法。基于同样的道理,静态方法中也不能使用关键字this。
  • main()方法是一个典型的静态方法,它同样遵循一般静态方法的规则,所以它可以由系统在创建对象之前就调用。
  • 静态main方法中调用本类的动态方法时,要用new ClassName().MethodName();

TestStaticMain

    public class TestStaticMain {
        A a;
        public static void main(String[] args) {
    // start();//这样是错的,要生成当前类的对象
            new TestStaticMain().start();
    // a = new A();//是错的,要放到动态函数里
        }
        public void start() {
            a = new A();
        }
    }
    class A {
    }

命令行下运行一个class文件

  • 要在com的同级目录下执行.class文件 java com.coder352.AAA
  • 问题是这样的,他要去他的一个web项目下执行一个class文件(这个文件是带有main函数入口的,所以执行是可行的),但是根据自己的经验直接java com.xxx.yyy.AAA 来执行,果断报错,找不到这个class.
  • Exception in thread “main” java.lang.NoClassDefFoundError: com/myproject/ChangePassword.
  • 只要环境变量中 CLASSPATH -> .;%JAVA_HOME%\lib;%JRE_HOME%\lib; 就行了
  • java 编译生成.class文件,要用 java aaa.java
  • javac 运行.class文件,不加后缀名 java aaa

你可能感兴趣的:(基础知识)