静态字段和方法
用static修饰的字段称为静态字段
①普通字段在每个实例中都有自己的一个独立空间
②静态字段只有一个共享空间,所有实例都共享该字段
③推荐用类名访问静态字段,不推荐用实例变量访问(会报warning)
④可以把静态字段理解为描述class本身的字段(非实例字段)
public class Person{
public String name;
public int age;
public static int number=100;
}
Person ming = new Person();
Person hong = new Person();
ming.number = 99;//warning
System.out.println(ming.number);//99
Person.number = 98;
System.out.println(Person.number);//98
用static修饰的方法称为静态方法
①调用实例方法必须通过实例变量(要有new过程)
②调用静态方法不需要实例变量直接用类名调用
③静态方法相当于其他语言当中的函数
④因为不创建实例变量,静态方法不能访问this变量
⑤静态方法不能访问实例字段,可以访问静态字段
⑥静态字段经常用于工具类如Arrays.sort() Math.random()
⑦静态方法经常用于实验方法
⑧Java程序的入口main()也是静态方法
pubilc class Person{
public String name;
public int age;
public static int number = 100;
public static getnumber(int num){
number = num;
}
}
Person.getnumber(999);
System.out.println(Person.number)//999
访问权限
Java的类、接口、字段和方法都可以设置访问权限
①访问权限是指在一个类的内部,能否引用到另一个类以及访问它的字段和方法
②访问权限有public、private、protected和package四种
③定义为public的class、method、field和interface可以被其他类访问
④定义为private的类无法被其他的类访问
⑤访问private被限定在外层class内部
⑥定义在一个class里面的class称为内部类(inner class)
public class Hello{
public void hi{
}
private void hey{
}
}
class Main{
void fun{
Hello h = new Hello();
h.hi();//调用了public的类当中的public方法
h.hey();//编译器报错
}
}
⑦protected作用于继承关系,表明除内部外还可被子类访问
⑧定义为package的类允许访问同一个包中同为package类型(无public,private修饰)的类以及同一个包中没有public、protected、private修饰的字段和方法
package abc
class Hello{
protected void hi{
}
void hey{
}
}
class nihao extends Hello{//继承自Hello
Hello H = new nihao();
H.hi();//可以调用父类中protected的方法
}
}
package xyz//改成abc下面就不会报错了
class Main{
void fun{
Hello h = new Hello();//编译器报错,无法调用另一包中的方法
h.hey();
}
}
如果不确定是否需要public,就不声明为public,即尽可能减少对外暴露
final与访问权限不冲突
一个 .Java文件只能包含一个public class但可以包含多个非public class
classpath
①class path是一个环境变量
②class path指示虚拟机(JVM)如何搜索class
③class path设置的搜索路径和操作系统有关
jar包
①jar包是zip格式压缩文件,包含若干class文件
②使用jar包能避免大量的目录和class文件
如何创建jar包
①使用jdk自带的jar命令,使用构建工具如Maven等
②压缩后改成 .jar 文件
③在命令提示符中调用main函数(META-INF\MANIFEST.MF可以提供jar包的信息)~其实这里我看的一脸懵逼,但还是记了笔记到时候再理解理解