java.util.Arrays 此类主要是用来操做数组,里面提供了不少的操做的api方法,如【排序】和【搜索】功能。其全部的方法均为静态方法,调用起来很是简单java
public static void main(String[] args) { // 初始化一个int类型的数组 动态初始化只指定长度,不指定内容,而静态初始化只指定内容,不指定长度,二者不能混合使用。 int[] arr = {12,345,112,78,489}; // 打印数组,输出内存地址值 System.out.println(arr);// 地址值 // 把数组内容转换成字符串 String str = Arrays.toString(arr); // 打印字符串,输出数组内容 System.out.println(str);// [12,345,112,78,489] 内容顺序不变 }
public static void main(String[] args) { // 定义一个int类型数组 int[] arr = {12,345,112,78,489}; //输出排序前的内容 System.out.println(Arrays.toString(arr));// 排序前 [12,345,112,78,489] // 升序排序 Arrays.sort(arr); System.out.println(Arrays.toString(arr));// 排序后 [12,78,112,345,489] }
练习:使用Arrays相关的api方法,将一个任意给定的字符串中的全部字符按照升序排序,倒序打印输出。api
public class ArraysDemo01 { public static void main(String[] args) { // 定义一个任意字符串 String str = "asdhfkjadhfs2342354234kjhkljhkj"; // 把字符串转换成字符数组 char[] chs = str.toCharArray(); // 使用Arrays类中的sort()方法 Arrays.sort(chs); // 倒序打印输出 // 反向遍历 for (int i = chs.length-1; i >= 0 ; i--) { System.out.print(chs[i] + " "); } } }
public static int binarySearch(int[] arr,int key):使用二分搜索法来搜索指定的 int 型数组,以得到指定的值,此时key指的是要搜索的值,而方法返回值声明的int指的是搜索值对应的索引值。数组
使用binarySearch()方法。搜索数组当中的元素时,数组必须是有序的。【升序】ide
获得的索引值是排序以后的新的数组的索引值函数
若是没有找到对应的元素值,获得的索引值是负值。测试
public static void main(String[] args) { // 定义一个int类型的数组 int[] arr = {10,20,5,30,40,15,18}; // 对arr数组进行排序 Arrays.sort(arr); // 搜索5这个数值在arr数组当中的索引值 int index = Arrays.binarySearch(arr,5); // 打印输出index的值 System.out.println("5在arr数组当中的索引值为:" + index); }
public static void fill(int[] arr,int val): 将指定的 int 值分配给指定 int 型数组的每一个元素。this
public static void main(String[] args) { // 定义一个int数组 int[] arr = {10,20,5,30,40,15,18}; // 想要把100元素值分配给arr数组 Arrays.fill(arr,100); // 打印输出 System.out.println(Arrays.toString(arr));//[100, 100, 100, 100, 100, 100, 100] }
java.util.Math 包含了用于执行基本数学运算的方法,如指数,幂次方,对数,平方根,三角函数等运算。里面的方法均是静态方法,而且也不须要建立对象,调用起来也是很是方便。code
double d1 = Math.abs(-5.3);// d1的值为5.3 double d2 = Math.abs(5.3);// d2的值为5.3 double d3 = Math.abs(0.0);// d3的值为0.0
double d1 = Math.ceil(5.3);// d1的值为6.0 double d2 = Math.ceil(5.9);// d2的值为6.0 double d3 = Math.ceil(-5.9);// d3的值为-5.0
double d1 = Math.floor(5.9);// d1的值为5.0 double d2 = Math.floor(5.1);// d2的值为5.0 double d3 = Math.floor(-5.9);// d3的值为-6.0
long d1 = Math.round(5.5);// d1的值为6 long d2 = Math.round(5.4);// d2的值为5 long d3 = Math.round(-5.5);// d3的值为-5 long d4 = Math.round(-5.6);// d4的值为-6
练习:使用Math类相关的api方法,计算在-10.8到5.9之间,绝对值大于6或者小于2.1的整数有多少个,分别是哪些数字?对象
public static void main(String[] args) { double max = 5.9; double min = -10.8; int count = 0;// 统计个数 // 遍历循环 获取整数 for (double i = Math.ceil(min) ; i <= Math.floor(max); i++) { // 判断条件 if (Math.abs(i) > 6 || Math.abs(i) < 2.1) { System.out.print(i + " "); count++; } } System.out.println(); // 打印输出个数 System.out.println("知足条件整数个数为:" + count + "个"); }
若是多个类中存在相同的属性和行为时,将这些内容抽取到单独的一个类中,那么多个类就无需再定义这些属性和行为,只要去继承这个单独的类便可。blog
其中,多个类称为子类,派生类,单独的那一个类称为父类、超类(superclass)、基类
继承描述的是事物之间的所属关系,这种关系是:is-a
的关系,在继承关系中,“子类就是一个父类”。也就是说,子类能够被看成父类看待。
例如:父类是员工,子类是讲师,那么“讲师就是一个员工”。关系:is-a。
通常状况下,父类更通用,子类更具体。咱们能够经过继承,使多种事物之间造成一种关系体系。
好处:
能够提升代码的复用性。
经过extends
关键字,能够声明一个子类继承另外一个父类:
public class FuClass { //.... } public class ZiClass extends FuClass { // .... }
代码演示:
/* 定义一个员工类Employee,父类 */ public class Employee { String name;// name属性 int id;// 工号属性 // 定义一个员工的工做方法 public void work() { System.out.println( name + "努力的工做!"); } } /* 定义讲师类Teacher 继承 员工类Employee */ public class Teacher extends Employee { // 定义讲师类中的专有的方法 public void teach() { System.out.println(name + "在教课"); } } /* 定义一个测试类 */ public class TestExtendsDemo01 { public static void main(String[] args) { // 建立一个讲师类 Teacher t = new Teacher(); // 为该员工类的name属性赋值 t.name = "小张"; // 调用该员工中的教课的方法 t.teach(); // 调用Teacher类继承过来的work()方法 t.work(); } }
当类之间产生了关系后,其中各种中的成员变量有哪些影响?
若是子类父类中定义的成员变量名字不重名,这时的的访问没有任何影响。代码演示
public class Fu { // 定义一个变量 int num = 10; } public class Zi extends Fu { // 定义一个变量 int num2 = 20; // 定义一个子类的成员方法 public void show() { // 访问父类中的成员变量 num System.out.println("父类中的成员变量num = " + num);// 10 继承而来的,能够直接访问 // 访问子类中的成员变量 num2 System.out.println("子类中的成员变量num2 = " + num2);// 20 } } public class TestExtendsField { public static void main(String[] args) { // 建立子类的对象 Zi zi = new Zi(); // 调用子类的方法 zi.show(); } } // 演示结果: // 10 // 20
若是子类父类中出现重名的成员变量,这时的访问是有影响的。代码演示:
public class Fu { // 定义父类中的成员变量 int num = 10; } public class Zi extends Fu { // 定义子类中的成员变量 int num = 20; // 定义子类中的成员方法 public void show() { // 访问父类中的成员变量 num System.out.println("父类中的成员变量num = " + num);// 20 // 访问子类中的成员变量 num System.out.println("子类中的成员变量num = " + num);// } } // 结果展现 // 20 // 20
在父子类的继承关系当中,若是成员变量重名,则建立子类对象时,访问有两种方式:
直接经过子类对象访问成员变量:等号左边是谁,就优先用谁,没有会向上找
间接经过成员方法访问成员变量:该方法属于谁,就优先用谁,没有则继续向上找。
子父类中出现了重名的成员变量时,在子类中想要访问父类中的非私有的成员变量时,须要使用super
关键字,修饰父类的成员变量,相似于this
操做。
使用格式:
super.父类的成员变量名
子类方法中的代码须要修改
public class Zi extends Fu { // 定义子类中的成员变量 int num = 20; // 定义子类中的成员方法 public void show() { // 访问父类中的成员变量 num System.out.println("父类中的成员变量num = " + super.num);// 10 // 访问子类中的成员变量 num System.out.println("子类中的成员变量num = " + num);// } } // 结果展现 // 10 // 20
但愿对你们有帮助,若是喜欢的话记得点赞加关注哦