package和import
1、命名建议:
域名是全球唯一的。
域名反写 . 项目名称 . 模块名称 . 类名
com.baidu . aproject . studentmanager .
com.taobao . aproject . teachermanager .
2、package
1)作用:避免类名 的冲突
2)包名可以有层次结构,同包中的类不能同名
3)类的全称:包名.类名,同包中的类不能重名
4)建议:包名所有字母都小写
3、import
1)同包中的类可以直接访问,不同包的类不能直接访问,想访问有以下两种方式:
1.1)先import声明类再直接使用类------建议
1.2)类的全称------太繁琐、不建议,想要使用哪个类,直接使用类名称
访问控制修饰符
1、修饰符共有四种类型:
1)public:公开的,任何类
2)private:私有的,本类用
3)protected:受保护的,本类、派生类、同包类
4)默认的:什么也不写,本类、同包类
2、说明:
2.1)类的访问修饰符只能是public或默认的
2.2)类中成员的访问修饰符如以上四种都可以
修饰符 | 本类 | 同一个包类 | 继承类 | 其他类 |
---|---|---|---|---|
public | 可以访问 | 可以访问 | 可以访问 | 可以访问 |
protected | 可以访问 | 可以访问 | 可以访问 | 不可以访问 |
默认 | 可以访问 | 可以访问 | 不可以访问 | 不可以访问 |
private | 可以访问 | 不可以访问 | 不可以访问 | 不可以访问 |
3、使用
1)数据:私有(派生类的)、受保护的(超类)
2)行为:公开
final(了解)
1、作用:最终的、不可变的
2、修饰成员变量:变量不可被改变,两种方式初始化:
1)声明同时初始化
2)构造函数中初始化
3、修饰方法:方法不能被重写
4、修饰类:类不能被继承
static
1、静态变量
1)成员变量与静态变量的区别:
1.1)实例变量:没有static修饰,属于对象的,存储在堆中;有几个对象就有几份
1.2)静态变量:由static修饰,属于类,存储在方法区中;只有一份
2)常通过类名点来访问
3)何时用:所有对象所共享的数据(图片、音频、视频等)
2、静态方法
1)由satic修饰
2)属于类的,存储在方法区中,只有一份
3)常通过类名点来访问
4)静态方法没有隐式this传递,没有this意味这没有对象,而实例对象必须通过对象点来访问
所以在静态方法中不能直接访问实例成员
注意:static是静态的修饰,不能直接访问实例变量,由于没有this,存储的位置在方法区中,加载一次
静态用类名点来访问
5)何时用:方法的操作仅与参数相关而与对象无关
#实例方法
Scanner san = new Scanner(system.in);
int a = san.nextInt();
double b = san.nextDouble();
#静态方法
double c = Math.Random();
int[] a1 = Arrays.copyOf(a,6);
Arrays.sort(arr);
3、静态块
1)属于类的代码块,在类加载期间执行的代码块,只执行一次,可以用来在软件中加载静态资源;类只被加载一次,所以静态块只执行一次
2)何时用:常用于加载/初始化静态资源(图片、音频、视频、标题 等)
public class Static1Demo {
public static void main(String[] ages) {
Static1Demo o = new Static1Demo();
Static1Demo o1 = new Static1Demo();
}
static {
System.out.println("hello world");
}
Static1Demo(){
System.out.println("111");
}
}
显示结果:
显示一次static中的内容
4 、内存管理:
1)堆:new出来的对象(包括实例变量)
2)栈:局部变量(包括方法的参数)
3)方法区:.class字节码文件(包括方法、静态变量)
static final常量
1、概述
1)static final 修饰的成员变量成为常量,必须声明同时初始化,不可被改变
2)static final常量会在编译期替换
2、注意事项
1)必须声明同时初始化
2)类名点来访问、不能被改变
3)建议:常量名所有字母都大写,多个单词之间用_分隔
4)编译器在编译时将常量直接替换为具体的值,效率高
5)用途:为程序设计状态(停止、运行中、运行完毕)等
public static final int a = 50;
private static final double a;//编译错误,常量必须要赋初值
抽象类 – 不完整类
1、作用:为子类中的方法提供一个入口
2、如果子类中都存在该方法,并且程序结构都不一样,则设计为抽象类
3、修饰词:abstratct,如果子类中的方法设计为抽象方法,则该类在class前加上abstract修饰词;如果父类为抽象类,则子类必须进行重写