Arrays类
什么是Arrays类:
java.util.Arrays包下,主要是用来操作数组,里面提供很多操作api方法,主要是【排序】和【搜索】方法
特点
1.主要用来操作数组
2.里面封装的全部都是静态方法,调用简单 类名.方法名。
操作方法(操作数组)
1.public static String toString(int[] arr) 返回指定数组的字符串形式
2.public static void sort(int[] arr): //数组从小到大升序排序
3.public static int binarySearch(int[] arr,int key); 使用二分搜索法,来搜索指定的int数组,以获得指定数值,key指的是在数组中要要搜索的值,返回值int表示搜索之所在的索引。二分搜索法,一半一半的搜索
注意:
1.使用的时候数组元素必须先经过【升序排序】在进行搜索得到之后的索引值是排序之后的索引值
2.没找到返回【负数值】
4.public static void fill(int[] arr,int val); 把val值填满数组
Math类:
什么是math类:
java.longl.Math; 用于基本数学运算
特点:
1.包含了很多的基本数学运算,指数,幂次方,平方根,三角函数
2.里面的方法都是静态方法·,可以直接调用。
操作使用
1.public static double abs(double a); 返回double值得绝对值
2.public static double ceil(double a); 数字往上取整,返回大于等于参数的最小整数
3.public static double floor(double a); 向下取整,返回小于等于参数最小整数
4.public static long round(double a);返回最接近参数的long类型,传入float,返回int类型。四舍五入
继承
什么是继承?
1.多个类中存在相同的属性和内容。。。。我们可以把相同的属性和行为,存放到单独类中,多个类就不用再单独声明。。。。继承父类就可以,使用这些属性和行为了。
2.多个类称为子类:派生类。。。。。。单独类称为父类:超类,基类
3.继承描述的是事物之间的所属关系,【is-a】关系,继承关系中【子类就是一个父类】,例如【讲师就是一个员工】。【is-a】-----------【讲师是一个员工】。
4.父类更通用,子类更具体,使多种事物形成关系体系。
定义
继承就是:继承继承父类中【非私有】的属性和行为,使得子类对象与父类有相同的属性和行为,子类可以直接访问父类中【非私有的属性和行为】。继承主要解决问题就是共性【抽取效果】
优点
1.提高代码复用性
2.类与类之间可以长生一种关系,是【多态的前提】
继承格式
通过【extends】关键字可以声明一个子类继承另一个父类
public class FuClass{
}
public class Ziclass extends Fuclass{
}
代码演示
//定义一个员工类
public class Employee{
String name; //姓名
int id; //工号
//定义一个员工工作方法
public void work{
System.out.println(name+"努力工作");
}
}
//定义讲师类,继承员工类
public class Teacher extends Employee{
//定义讲课方法
public void teach(){
System.out.println("教学");
}
}
//定义一个助教类
public class Ta extends Employee{
//助教类
}
//定义一个测试类
public class Test{
public static void main(String[] args){
//创建一个讲师类
Teacher t=new Teacher();
//为该员工类的name属性赋值,
t.name="小张";
//调用该员工中的讲课方法
t.teach();
//调用teach中继承过来的work方法
t.wokrk();
//使用助教里面继承的属性和方法方法
ta.name="如意";
ta.work();
}
}
解释:就是说子类对象可以使用父类里面【非私有】的属性和方法,也能给他赋值,使用的理由就是很多子类的时候不用每个子类都去写属性很方便。
继承和多态的关系
继承是多态的前提,没有继承就没有多态
继承特点---成员变量:
1.成员变量不重名: 子类和父类中成员变量不重名,访问没有影响
public class Fu{
int num=10;
}
public class Zi extends Fu{
int num1=20;
//定义成员方法
public void show(){
System.out.println("父类中的参与变量:"+num);
System.out.println("子类中的成员变量:"+num1);
}
}
public class Test1{
public static void main(String[] args){
//创建子类对象
Zi zi=new Zi();
//调用子类方法
zi.show();
}
}
2.如果子类和父类吹醒那重名变量,这时候访问是有影响的。父类中的成员变量依然在子类的当中
public class Fu{
//定义父类中的成员变量
int num=10;
}
public class Zi extends Fu{
intn num=20;
//定义成员方法
public void show(){
System.out.println("父类中的参与变量:"+num);
System.out.println("子类中的成员变量:"+num);
}
}
public class Test2{
public static void main(String[] args){
//创建子类对象
Zi zi=new Zi();
//调用子类方法
zi.show();
}
}
备注:在父子类继承关系中,如果成员变量重名了,则创建子类对象时候访问有两种方式;
1.直接通过子类对象访问成员变量:等号左边new 的哪个类,就会优先使用那个类里面的成员变量,如果没找到就像上去父类找
2.间接通过成员方法访问成员变量,该方法属于谁就优先用谁,不会向上去父类找成员变量,没有才向上找
super关键字
如果父子类中出现了重名的成员变量,子类像访问父类中【非斯有】成员变量时需要使用 【super关键字】,修饰父类的成员变量,
使用格式:
super.父类的成员变量名;
字类方法中的代码需要修改
public class Zi extends Fu{
intn num=20;
//定义成员方法
public void show(){
System.out.println("父类中的参与变量:"+super.num);
System.out.println("子类中的成员变量:"+num);
}
}
备注:父类中的成员变量是非私有的,子类中可以直接访问,私有之后子类不能直接访问。遵循封装原则,使用private修饰成员变量,所以子类不能直接访问。值能借助父类提供的公共的setXxx和getXxx方法。