1.package和import
1.package:声明包
避免类的命名冲突
同包中的类不能同名,但不同包中的类可以同名
类的全程:包名.类名
包名常常用层次结构,建议所有的字母都小写
2.import:导入
同包中的类可以直接访问
不同包中的类不能直接访问,若想访问:
1.先import声明类,再访问类----------建议
2.输入类的全程---------------------------太繁琐不建议
2.访问控制修饰符-------------------保证数据的安全
public:公开的,任何类
private:私有的,本类
protected:受保护的,本类,派生类,同包类
默认的:啥也不写,本类,同包类
补充:
类的访问权限只能是public或默认的
类中成员的访问权限如上4种都可以
访问权限由高到低依次为:public>protected>默认的>private
final:最终的、不可改变的------------单独应用几率极低
修饰变量:变量不能被改变
修饰方法:方法不能被重写
修饰类:类不能被继承
static:静态的
静态变量:
由static修饰
属于类,存储在方法区中,只有一份
常常通过类名点来访问
何时用:所有对象所共享的数据(图片、音频、视频等)
静态方法:
由static修饰
属于类,存储在方法区中,只有一份
常常通过类名点来访问
静态方法中没有隐式this传递,不能直接访问实例成员
何时用:方法的操作与对象无关
public class StaticDemo {
public static void main(String[] args) {
Moo.test();
}
}
//演示静态方法
class Moo{
int a; //实例变量(对象点来访问)
static int b; //静态变量(类名点来访问)
void show(){ //有隐式this
System.out.println(this.a);
System.out.println(Moo.b);
}
static void test(){ //没有隐式this
//静态方法中没有隐式this传递
//没有this就意味着没有对象
//而实例变量a必须通过对象点来访问
//所以如下代码发生编译错误
//System.out.println(a); //编译错误
System.out.println(Moo.b);
}
}
//演示静态方法在何时用
class Noo{
int a; //对象的属性a
//在show()中用到了对象的属性a,意味着show()方法与对象有关,所以不能设计为静态方法
void show(){
System.out.println(a);
}
//在plus()中没有用到对象的属性,意味着plus()方法与对象无关,所以可以设计为静态方法
static int plus(int num1,int num2){
int num = num1+num2;
return num;
}
}
静态块:
由static修饰
属于类,在类被加载期间自动执行,一个类只被加载一次,所以静态块只执行一次
何时用:加载/初始化静态资源(图片、音频、视频等)
补充:
数据(成员变量)私有化(private),行为(方法)大部分公开化(public)
成员变量分两种:
实例变量:没有static修饰,属于对象的,存储在堆中,有几个对象就有几份
通过引用(对象)点来访问
静态变量:由static修饰,属于类的,存储在方法区中,只有一份
通过类名点来访问
内存管理:由JVM来管理
堆:new出来的对象(包括实例变量)
栈:局部变量(包括方法的参数)
方法区:.class字节码文件(包括静态变量、所有方法)
版权声明:本文为m0_67446239原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。