Java中静态static的基础和数组工具类、数学工具类的介绍
1-1.静态static的概述
对学生类,每个对象都有自己的姓名,学号等独立的数据,
但是班级作为多个对象都有的数据,可以共享为多个对象的一份数据。
一旦使用了static关键字,那么这个类的内容就不再属于自己,而是属于类,凡是苯类的对象,都共享同一份数据。
1-2.静态static关键字修饰成员变量和成员方法
一旦使用了static关键字修饰成员变量或成员方法,那么这就成为了静态变量或方法。
静态变量或静态方法不属于对象而是属于类,如果没有static关键字在,则必须首先创建对象才能使用它,在创建static关键字后,可以通过类名称直接使用静态变量或静态方法。
对静态变量或静态方法的调用:
格式1:
对象名.静态变量或静态方法 这种调用方法虽然正确,但不推荐这种方法
格式2:
类名.静态变量或静态方法 推荐使用这种方法对静态变量或静态方法进行调用
注意事项:
1).在本类中,可以省略类名称对静态变量或静态方法进行调用。
2).静态只能访问静态,不能直接访问非静态。因为在内存中,现有静态内容后有非静态内容。
3).静态方法中不能使用this关键字。因为this代表当前对象。
4).根据类名称访问静态成员变量时,全程和对象没有关系,只和类有关系。
1-3.静态代码块
格式:
public class 类名称{
static { 静态代码块的内容 }
}
特点:
1).第一次使用到本类时,静态代码块执行,且静待代码块仅执行这一次。
2).静态内容总是优先于非静态内容执行。
3).静态代码块典型用途:用来一次性对静态成员变量进行赋值。
2-1.数组工具类Arrays的介绍
Arrays里面提供了大量的静态方法,用来实现数组的常见操作。
格式1:
public String tostring(数组);
功能:将参数数组变成字符串(按照默认格式:[元素1,元素2...])。
格式2:
public static void sort(数组);
功能:按照默认升序(从小到大)对数组的元素进行排序。
注意:
1).如果是数值,sort默认按照升序从小到大排序。
2).如果是字符串,sort默认按照字母升序。
3).如果是自定义的类型,那么这个定义的类需要有compareable或comprator接口的支持。
对Arrays类的实例操作:
例题:请使用Arrays相关的API,将一个随机字符串中的所有字符升序排列,并倒序打印。
源代码:
public static void A(){ //Scanner类 Scanner sc = new Scanner(System.in); System.out.println("请输入字符串"); String str = sc.next(); //调用String的toCharArray()方法,将字符串转换为字符数组 char[] chars = str.toCharArray(); //调用sort方法进行升序排序 Arrays.sort(chars); //通过for循环输出倒序字符串 for (int i = chars.length - 1; i >= 0; i--) { System.out.print(chars[i]+" "); } }
执行结果:
2-2.数学工具类Math的介绍
Math类是与数学相关的工具类,内有大量静态方法,完成与数学运算相关的操作。
1).abs方法:
格式:
public static abs(double num);
功能:获取绝对值。
2).ceil方法:
格式:
public static ceil(double num);
功能:向上取整。
3).floor方法:
格式:
public static floor (double num);
功能:向下取整。
格式:
public static long(double num);
功能:四舍五入。
注:Math.PI代表近似的圆周率常量。
对Math类的实例操作:
例题:计算在-10.8~5.9之间,绝对值大于6或者小于2.1的整数有多少个。
源代码:
//计算在-10.8~5.9之间,绝对值大于6或者小于2.1的整数有多少个。 public static void B(){ //使用Scanner类输入-10.8和5.9 Scanner sc = new Scanner(System.in); System.out.println("输入最小值:"); float min = sc.nextFloat(); System.out.println("输入最大值:"); float max = sc.nextFloat(); //count统计合格数字的个数 int count = 0; //通过for循环对每个整数进行比较 for(int i = (int) min; i >= min && i <= max; i++){ //取绝对值并赋值给num int num = Math.abs(i); //比较并输出 if(num > 6 || num < 2.1){ System.out.print(i+","); count++; } } //输出结果 System.out.println("一共有"+count+"个数字满足题意。"); }
执行结果: