07.特性修饰符——static属性
07. 特性修饰符——static属性
1、static属性
1.static属性的⽤途
· static被称为静态,可以⽤来修饰类的属性和⽅法。
·如果类的某个属性,不管创建多少个对象,属性的存储空间只有唯⼀的⼀个,那么这个属性就应该⽤static修饰,被static修饰的属性被称为静态属性。
2.静态成员的访问
(1)对象.静态成员
System.out.unt);
三级英语
(2)类.静态成员
System.out.unt);
问题:为什么⼏种不同的访问⽅式下,静态属性count的值都⼀样?
(1)静态成员是属于类的。
(2)类的对象可以共享类的静态成员。
2、static⽅法
⽤途:
·如果某个⽅法不需要与某个特定的对象绑定,那么该⽅法可以使⽤static修饰,被static修饰的⽅法称为静态⽅法。
·基本结构如下:
访问权限 static修饰符 返回值类型 ⽅法名称
public static void llticket(){
System.out.println("所有车票都是12306卖的");
}
静态⽅法的定义
public class Math {
public static int add(int a ,int b){
匿笑
return a + b;
}
}
静态⽅法的调⽤:类.⽅法名()
public class Client {
public static void main(String[] args){
int c = Math.add(1,2);
System.out.println(c);
}
哧哧英语}
区别:静态⽅法与⾮静态⽅法的调⽤
静态⽅法的调⽤:类.⽅法名()
⾮静态⽅法的调⽤:先实例对象,在对象.⽅法名()
3、常⽤系统中的静态⽅法**
//Math类的静态⽅法
System.out.println( Math.abs(-1));
conquerSystem.out.println(Math.random());
//Math类中的静态属性
System.out.println(Math.PI);
System.out.println(Math.E);
//包装类中的静态属性
System.out.println(Integer.MIN_VALUE);
System.out.println(Integer.MAX_VALUE);
//包装类中的静态⽅法
System.out.println(Integer.valueOf(10));
System.out.println(Integer.parInt("10"))
4、static块忍耐英文
**定义:**static块和static的属性以及⽅法的性质是相同的,⽤static修饰的代码块表⽰静态代码块,当Java虚拟机加载类时,就会执⾏该代码块。
区别在于语法不同
static块语法:
直接在代码块前,加上关键词static即成为静态块。
static{
感谢室友不杀之恩System.out.println("123");
}
英语口语练习static块的⽤途:
·静态块只有在类加载的时候被执⾏⼀次,不管创建多少个对象,都不会再执⾏。
·如果⼀个类加载的时候,总要预先做⼀些事情,则可以放在静态块中。例如,读取⼀个属性⽂件,进⾏⼀些常规配置,写⼀些⽇志等。
·⼀个类可以有多个静态块,按照顺序执⾏。
public static int count;
{
//实例块
System.out.println("我是实例块");
}
static{
//静态块
//初始化静态属性
System.out.println("我是静态块1");
}
static{
//静态块
propod
System.out.println("我是静态块2");
}
static{
观月记翻译//静态块
System.out.println("我是静态块3");
}
}
public class Client {
public static void main(String[] args){
// TODO Auto-generated method stub
Demo demo1 =new Demo();
Demo demo2 =new Demo();
Demo demo3 =new Demo();
//1.静态块在类加载的时候加载⼀次,和对象的创建个数⽆关
//2.静态块在实例块之前调⽤
//3.如果⼀个类中有多个静态块,它们会顺序执⾏
}
}
运⾏结果:
我是静态块1
我是静态块2
我是静态块3
我是实例块
我是实例块
我是实例块
5、静态类(只能是内部类,外部类不允许static修饰)static类基本语法:
//静态内部类
static class Inner{
}
}
public class Client {
public static void main(String[] args){
//语法:外部类.内部类,是把外部类当作特殊的包名来使⽤
Outer.Inner inner =new Outer.Inner();
}
}
static⽗⼦类继承:
public class Message {
//⽗类
static class TextMessage extends Message{
//⼦类
}
static class VoiceMessage extends Message{
}
}
screwed
public class Client {
public static void main(String[] args){
//外部类.内部类
//⽗类.⼦类
Message.TextMessage textMessage =new Message.TextMessage(); }
}
静态内部类是外部类的实例
//接⼝:飞
public interface FlyAble {
//静态内部类,是外部类型的实现类
static class Bird implements FlyAble{
}
static class Leaf implements FlyAble{
}
}
public class Client {
public static void main(String[] args){
//外部类.静态内部类
//接⼝.静态内部类
FlyAble.Bird bird =new FlyAble.Bird();
FlyAble.Leaf leaf =new FlyAble.Leaf();
}
}