6/23作业:static和final
来源:互联网 发布:苹果6为什么没有4g网络 编辑:程序博客网 时间:2024/06/06 12:47
1.高级类特性
可以通过以下修饰符实现类的一些高级特性
static:修饰属性、方法、块、内部类
final:修饰类、常量属性、方法、局部常量(部分在后续学习)
abstract:修饰类、方法
synchronized:修饰方法、同步代码块
2.static属性
----static基本概念
----static属性
static被称为静态,可以用来修饰类的属性或者方法。
如果类的某个属性,不管创建多少个对象,属性的存储空间只有唯一的一个,那么这个属性就应该用static修饰,被static修饰的属性被称为静态属性。
static属性可以使用对象调用,也可以直接用类名调用。
静态属性是类的所有对象共享的,即不管创建了多少个对象,静态属性在内存中只有一个。
public class Employee {
private String name ;
private double salary;
private static int count;
}
public class Employee {
private String name;
private double salary;
private static int count;
public Employee(String name, double salary) {
super();
this.name = name;
this.salary = salary;
count++;
}
public static void main(String[] args) {
Employee e1=new Employee("Alice",3000);
Employee e2=new Employee("John",6000);
System.out.println(e1.name+" "+e1.salary+" "+e1.count);
System.out.println(e2.name+" "+e2.salary+" "+e2.count);
}
}
可见,输出的count都为2,说明两个对象调用的count是一个内存空间的值,而name和salary分别是各自初始化时赋的值。
可以理解实例变量和静态变量的区别。静态的属性与对象没有关系,是所有对象共享的,只与类有关。
3.static方法
-----static方法定义
-----static方法的作用
-----static方法的重要性
如果某个方法不需要与某个特定的对象绑定,那么该方法可以使用static修饰,被static修饰的方法称为静态方法。
static方法可以使用对象调用,也可以直接用类名调用,建议用类名直接调用
public class TicketSeller{
private static int ticket=11;
public static void sellticket(){
ticket=ticket-1;
System.out.println("卖票的静态方法");
}
}
public class Test{
public static void main(String[] args) {
TicketSeller .sellticket();
}
}
如果某个方法与实例无关,也就是说不管哪个对象调用这个方法,都执行相同的操作,与对象没有关系,则应该定义为静态方法。不需要创建对象后再使用该方法。
例如:API中的Math类,都是静态方法,因为进行数学运算时,与Math对象本身无关,使用类直接调用即可。
※总结
static方法定义
static方法的作用
static方法的重要性
本类的方法之间的调用
任何方法都可以直接调用静态方法
静态方法不能直接调用非静态方法,需要创建对象,用对象名调用非静态方法
4.static块
----static块
----static块的语法
----static块的用途
static块和static的属性以及方法的性质是相同的,用static修饰的代码块表示静态代码块,当Java虚拟机加载类时,就会执行该代码块。
区别在于语法不同
直接在代码块前,加上关键字static即成为静态块。
static{
System.out.println("123");
System.out.println("123");
System.out.println("123");
}
静态块只有在类加载的时候被执行一次,不管创建多少个对象,都不会再执行。
如果一个类加载的时候,总要预先做一些事情,则可以放在静态块中,例如,读取一个属性文件,进行一些常规配置,写一些日志等。
一个类中可以有多个静态块,按照顺序执行。
5.final属性及参数
----final的定义
----final的使用
----Final 用于声明属性,方法和类
属性:定义就必须直接赋值或者在构造方法中进行赋值,并且后期都不能修改。
方法:定义必须有实现代码,并且子类里不可被覆盖。
类:不能被定义为抽象类或是接口,不可被继承。
final修饰属性
当final修饰属性时,基本数据类型的属性将成为常量,不能被修改
一些数学定理中的常量经常使用final修饰
π= 3.14159265358979
E= 2.718281828459045
private int index;
private static final double pai=3.14;
private final int level;
public Test(){
level=0;
}
public Test(int index){
this.index=index;
level=1;
}
final属性赋值
在声明时同时赋值,往往与static一起使用
声明时不赋值,必须在构造方法中逐一赋值
总的原则:保证创建每一个对象的时候,final属性的值是确定的
对参数做final修饰
在方法参数前面加final关键字,为了防止数据在方法体中被修改。
6.变量及常量的总结
public class Employee {
private String name;
private double salary;
private static int count;
public void work(String leader){
String taskname=null;
}
在类中声明的变量或常量叫属性,或者叫成员变量,如name、salary、count
在方法中声明的变量叫局部变量,或者临时变量。
属性可以使用四种权限修饰符修饰,局部变量不可以
属性可以使用static修饰,局部变量不可以
public class Employee {
private String name;
private double salary;
private static int count;
public void work(String leader){
String taskname=null;
}
属性可以使用final修饰,局部变量也可以
属性的生命周期很长,随着类加载或者创建对象被初始化,直到没有对象引用才回收
局部变量生命周期很短,执行某个方法时临时被初始化,方法结束即被回收。
如果局部变量与属性重名,则遵守就近原则,可以使用this区分,后续学习
public class Employee {
private String name;
private double salary;
private static int count;
public void work(String leader){
String taskname=null;
}
属性可以在整个类中使用,局部变量只在当前方法中使用
属性都有默认的初始化值,如引用类型都是null,整型是0等,局部变量不被自动初始化,必须手工初始化,如taskname手工指定为null才为null,而属性name默认就为null
- 6/23作业:static和final
- static final 和 final
- 6.20作业:static,final,继承和方法覆盖
- final和static、static final的区别
- static和final
- static和final关键字
- final和static
- final 和static区别
- final和static
- static,final和abstract
- final和static
- static 和 final 详解
- 总结final和static
- final和static
- Static 和 final关键字
- final和static
- Static 和 Final
- final和static
- B
- 构建乘积数组
- 数据库
- 【BZOJ3529】数表(莫比乌斯反演)(树状数组)(数学)
- Broadcast(广播接收者和发送者)
- 6/23作业:static和final
- Android通过Intent来调用第三方地图
- java学习(2) jdk配置注意事项以及简单知识点
- 【洛谷1855】 榨取kkksc03
- 机器视觉———旋转矩阵的计算(一)
- PAT程序设计考题——甲级1019( General Palindromic Number ) C++实现
- unable to establish loopback connection错误
- UVA1279星际游击队推导过程
- 使用curl测试websocket服务是否能正常连入