JAVA学习_10 static关键字和Arrays、Math提供的常用静态方法

1.概述。

一旦使用了static关键字,那么它所修饰的内容不再属于对象自己,而是属于类的,所以凡是本类的对象,都共享一份。

例如:下面的学生类,姓名,年龄,学号对于每个对象来说都是不一样的,但是因为是同班同学,所以所在教室是一致的,所以这时的教室就可以用static修饰。

JAVA学习_10 static关键字和Arrays、Math提供的常用静态方法

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来访问时,直接是在方法中找类,然后再对应到静态区,全程跟对象是无关的。

JAVA学习_10 static关键字和Arrays、Math提供的常用静态方法

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);四舍五入