JAVA学习_10 static关键字和Arrays、Math提供的常用静态方法
1.概述。
一旦使用了static关键字,那么它所修饰的内容不再属于对象自己,而是属于类的,所以凡是本类的对象,都共享一份。
例如:下面的学生类,姓名,年龄,学号对于每个对象来说都是不一样的,但是因为是同班同学,所以所在教室是一致的,所以这时的教室就可以用static修饰。
2.static关键字在成员变量和成员方法中的使用。
(1)修饰成员变量。举例:如果对于student类的两个实例对象one和two,他们有一个static修饰的room成员变量,在用one.room="xxx"赋值时,two的room值也会变成刚才的赋值,这就是上面所说的“共用”。
(2)修饰成员方法。一旦用static修饰成员方法,那么它就成为了一个静态方法。静态方法是不属于对象的,而是属于类的。在之前的学习中,没有static修饰的成员变量,必须要创建对象,然后通过对象才能访问;现在有了static修饰的,不需要创建对象,直接通过类名称来使用它。
推荐访问格式:
静态变量:类名称.静态变量
静态方法:类名称.静态方法()
注意:
(1)静态不能直接访问非静态。(比如在同一个类中的静态方法要访问非静态的成员变量,语法是错误的)
原因:因为在内存中,是先有的静态内容,后有的非静态内容,先创建的是不知道后创建的内容的。
(2)静态方法中不能用this。
原因:this代表了当前对象,但是静态方法是直接用类来调用的,是不存在对象的。
3.static内存图
对于static修饰的静态变量和方法,它存放的地方是在方法区中开辟的一个小地方,所以当通过Student.room来访问时,直接是在方法中找类,然后再对应到静态区,全程跟对象是无关的。
4.静态代码块
格式:
public class 类名称{
static{ //静态代码块内容
}
}
特点:在首次使用本类时,静态代码块执行唯一的一次。
用途:用来一次性的对静态成员变量进行赋值。
5.Arrays工具类提供的常用静态方法。
(1)public static String toString(数组);可以将参数数组转换成字符串,转换后的字符串是默认格式([元素1,元素2,元素3])。
(2)public static void sort(数值);可以将参数数组默认升序排列(从小到大),
备注:
(1)如果是数值,sort默认按照升序从小到大。
(2)如果是字符串,sort默认按照字母升序。
(3)如果是自定义的类型,那么这个自定义的类需要有Comparable或者Comparator接口的支持。
6.Math类的相关静态方法,都与数学运算相关。
(1)public static double abs(double num); 获取绝对值
(2)public static double ceil(double num); 向上取整
(3)public static double floor(double num); 向下取整
(4)public static long round(double num);四舍五入