1.package:
1)作用:避免类名的冲突
2)包名可以有层次结构,同包中的类不能同名
3)类的全称: 包名.类名
4)建议:包名所有字母都小写
1)作用:避免类名的冲突
2)包名可以有层次结构,同包中的类不能同名
3)类的全称: 包名.类名
4)建议:包名所有字母都小写
建议:
域名反写 . 项目名称 . 模块名称 . 类名
cn.tedu . aproject . amou
cn.tedu . aproject . bmou
import:
1)同包中的类可以直接访问,
不同包中的类想访问两种方式:
1.1)先import声明类----建议
1.2)类的全称----------太繁琐,不建议
2.访问控制修饰符:
1)public:公开的,任何类
2)private:私有的,本类
3)protected:受保护的,本类、子类、同包类
4)默认的:什么也不写,本类、同包类
类的访问修饰符: public、默认的
类中成员的访问修饰符: 如上4种都可以
变量----------------------private
方法----------------------public
超类中的变量--------------protected
3.static:静态的

1)静态变量:
成员变量分两种:
1)实例变量:没有static修饰,属于对象的,存在堆中
有几个对象就有几份
通过对象名点来访问
2)静态变量:由static修饰,属于类的,存在方法区中
只有一份
通过类名点来访问
class Aoo{
int a; //实例变量
static int b; //静态变量
}
栈:局部变量(包括方法的参数)
堆:new出来的对象(包括实例变量)
方法区:.class字节码文件(包括方法、静态变量)
1.1)由static修饰
1.2)属于类的,存储在方法区中,只有一份
1.3)常常通过类名点来访问
1.4)何时用:所有对象所共享的数据(图片、音频、视频等)
2)静态方法:
class Foo{
int a;
static int b;
void show(){ //有个隐式的this传递
System.out.println(this.a);
System.out.println(Foo.b);
}
static void test(){ //没有隐式this传递
System.out.println(a);
System.out.println(Foo.b);
}
}
2.1)由static修饰
2.2)属于类的,存储在方法区中,只有一份
2.3)常常通过类名点来访问
2.4)静态方法没有隐式的this传递,
静态方法中不能直接访问实例成员
2.5)何时用:方法的操作仅与参数相关而与对象无关
何时用:方法的操作仅与参数相关而与对象无关
double a = Math.sqrt(25);---------------静态的
无论m1,m2,m3,...,m100中的哪个对象
去sqrt()的结果,都是一样的
说明sqrt()的操作与对象无关,而仅与参数相关
假设sqrt()不是静态的:
Math m1 = new Math();
double a = m1.sqrt(25);
Math m2 = new Math();
double b = m2.sqrt(25);
Math m3 = new Math();
double c = m3.sqrt(25);
3)静态块:
3.1)由static修饰
3.2)属于类的,在类被加载时自动执行,
因类只被加载一次,所以静态块也只执行一次
3.3)何时用:初始化/加载静态资源(图片、音频、视频等)
4.final:最终的、不可改变的--------单独应用几率非常小
1)修饰变量:变量不能被改变
2)修饰方法:方法不能被重写
3)修饰类:类不能被继承
5.static final:常量,应用率高
1)必须声明同时初始化
2)通过类名点来访问、不可被改变
3)建议:常量名所有字母都大写,多个单词用_分隔
4)编译器在编译时将常量直接替换为具体的值,效率高
5)何时用:数据永远不会改变,并且还常常被使用