- 一.static关键字
- 1.static关键字概念
- 2.static关键字的特点
- 二.代码块
- 三.类的加载执行
- 四.包(package)
- 1.包的概念
- 2.包的作用
- 3.命名规则
- 五.访问权限修饰符
static被称为**静态.**可以用来修饰类中的属性,方法,代码块和内部类.
2.static关键字的特点1.随着类的加载而加载.static修饰的变量或者方法只有一份,在方法区中存储,类加载之后就可以直接使用.
2.优先于对象存在.代码运行是从主方法开始的,如果使用的是面向对象的思想,jvm会先加载类,如果主方法需要创建对象,才会在堆空间中创建出对象.因为static修饰的变量或者方法在方法区中存储,类加载也在方法区中,因此即使不创建对象,在方法区中也会存在static修饰的变量或者方法.
3.修饰的成员,可以被所有对象共享.如果第一个对象调用了static变量,但是没有给static变量进行操作,但是第二个对象对其进行了相应的操作.那么对象一调用的static变量也会发生改变.
4.可以不创建对象,直接被类调用.因为类与static变量同加载.
注意:
1.所有对象共有的相同属性的时候,我们就可以把这个变量用static关键字来修饰,修饰之后在内存中就只有一份,所有对象都可以直接访问.
2.static方法或者变量可以使用对象调用,也可以使用类名调用.*建议使用类名调用.
static可以修饰成员方法,**修饰后的成员方法只能访问静态变量.**静态方法随着类的加载而加载,类加载后不一定创建对象.
非静态方法可以访问静态变量.
二.代码块代码块:类似于一个没有名称的方法.分为实例代码块(非静态代码块),静态代码块.
实例代码块没有任何的修饰
{
//任何符合语法的Java代码
}
实例代码块在每次创建对象的时候自动执行
静态代码块需要用static修饰
static{
//任何符合语法的Java代码
}
静态代码块在类加载的时候调用,仅加载一次,与是否创建对象无关.
三.类的加载执行当进行类名.静态变量/方法,创建对象的操作时.就会触发类的加载.
类中元素的加载顺序;
先加载静态的变量和方法.按照在代码中的位置,从上到下加载.
后创建对象:按照成员变量,实例代码块,构造方法,成员方法顺序加载.
四.包(package) 1.包的概念为了更好的组织类, Java提供了包机制.用于区别类名的命名空间,也就是说包为了管理类,用于为类作命名空间(地址).
例如第一节提到的Car是类的简称.全类名=包名+类名简称.
2.包的作用1.避免类名重复.(如果需要导入其他包中的类,会在代码的头部添加关键字impor,同包不需要导入.)
2.按照不同的功能管理类.(比如公共功能,数据库交互的功能,与前端交互的功能放在不同的包中.)
3.控制访问权限
注意:
在Java中java.lang中的包不需要导入,可以直接使用.
3.命名规则在包名中,可以使用符号’.'来区分包的级别;包名一般情况是小写.
第一级:指该项目的类型,如:com,org,等等
第二级:指该项目所开发或者运行的公司名称.如:oracle,sun等
第三级:指项目的名称.如:bcms,oa等
第四级:指项目模块的名称,如:bean,action,excption等.
五.访问权限修饰符Java语言有四种权限修饰符,权限从大到小依次分为:
1.public:**公共权限.**修饰类,属性,方法,可以被任何类访问.
2.protected:**受保护的权限.**修饰属性,方法.可以被同包类访问,如果不是同包类,必须是该类的子类才可以访问.
3.default(默认)*同包权限.**修饰类,属性,方法.只能被同包的类访问.
4.private:**私有权限.**修饰属性,方法.只能在本类中访问.
这四种访问权限修饰符都可以修饰内部类.
注意:
一个文件里如果有两个或者两个以上的类,只能有一个用public修饰.
| public | protected | default | private | |
|---|---|---|---|---|
| 同类 | √ | √ | √ | √ |
| 同包 | √ | √ | √ | |
| 不同包子类 | √ | √ | ||
| 不同包的其他类 | √ |



