一。Math:
Scanner con=new Scanner(System.in);
double m=con.nextDouble();
double n=con.nextInt();
System.out.println("随机0.0~1.0"+"\t"+Math.random());
System.out.println("绝对值"+Math.abs(m));
System.out.println("向上取整"+Math.ceil(m));
System.out.println("向下取整"+Math.floor(m));
System.out.println("四舍五入"+Math.round(m));
System.out.println("开方"+Math.sqrt(m));
System.out.println("指数"+Math.pow(m,n));
二。ArrayList-类:用来存储数据, 可变长数组 -> 集合,可以实现数组长度动态变化,所属软件包: java.util,ArrayList 仅支持引用类型
1.构造方法:
ArrayList < > arrList = new ArrayList<E>()
《E》: 泛型, 可以所有的引用类型, 规定集合中元素类型
基本数据类型都有对应的引用类型
int -> Integer
char -> Character
byte -> Byte
boolean -> Boolean
double -> Double
String[] a={"p","k"};
ArrayList <String> list = new ArrayList();//< >泛型:规定集合中元素的类型
list.add("kjsd");//从数组中加元素
list.add("qwe");
list.add("uiui");
list.add("gdfg");
list.add(list.get(1));
list.add(a[0]);
System.out.println(list);
list.remove(2);//从数组中删元素,参数为下标
System.out.println(list);
// list.size()获得list长度
String m= list.get(2);//从集合中获取list下标为2的元素
System.out.println("获得"+m);
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
三。继承: extends
1.概念:子类/衍生类/扩展类: Dog
父类/基类: Animal
2.子类继承父类, 就继承了父类所有的成员变量和方法
3.所有的类, 都有唯一的父类,
如果没有写父类, 说明父类就是 Object
4.子类中还可以定义自己的独特的成员变量和方法
子类的功能一定比父类要强大
特殊情况:
1.子类中的成员变量和父类同名 name
Dog d = new Dog();
d.name -> 就是指自己定义的name,不是继承过来的name
结论: 父子类中的成员变量不要同名
2.子类中可以引用父类对象
super
3.创建子类对象之前, 会先创建父类对象,
加载子类之前, 会先加载父类
4.构造方法: 父类的构造方法不能被子类继承的
创建子类对象, 会先默认调用父类的无参构造器
原因: 子类构造方法中, 第一行默认 super()
可以手动调用父类其他构造方法
结论: 子类构造方法中, 一定会先调用父类的构造方法
父类中, 建议先写无参构造器
5.通过子类对象调用方法时
先看子类中有没有定义这个方法, 定义了, 调用子类方法
子类中没有这个方法, 调用父类继承的方法
public class Animal extends Object {
String name;
char sex;
int age;
Animal() {
sex = '男';
System.out.println("Animal空参构造器");
}
Animal(String name) {
this.name = name;
System.out.println("Animal有参构造器");
}
void eat() {
System.out.println(this.name + "在吃好吃的!");
}
}
/**
* 小狗类 继承了 动物类
* 1.概念:子类/衍生类/扩展类: Dog 父类/基类: Animal
* 2.子类继承父类, 就继承了父类所有的成员变量和方法
* 3.所有的类, 都有唯一的父类, 如果没有写父类, 说明父类就是:Object
* 4.子类中还可以定义自己的独特的成员变量和方法
* 子类的功能一定比父类要强大
*/
public class Dog extends Animal {
String name;
Dog() {
// 调用父类有参构造方法
super("");
System.out.println("Dog空参构造器");
}
Dog(String name) {
super(); // 默认调用父类无参构造方法
super.name = name;
this.name = "小强";
System.out.println("Dog有参构造器");
}
void wang() {
System.out.println(name + "汪汪!");
}
// 重写的父类中的eat
void eat() {//子类方法重写
// 子类自己的功能
System.out.println(this.name + "舔舔小爪子!");
// 和父类中的eat方法一致
super.eat();
// 子类自己的功能
System.out.println(this.name + "舔舔嘴巴!");
}
}
public class Demo01Extends {
public static void main(String[] args) {
Dog d = new Dog("旺财");
// name是在父类中声明的, 子类可以直接使用
System.out.println(d.name);
// d.name = "旺财";
d.eat(); // 子类方法
// d.wang();
}
}
四。修饰词abstract 抽象的
抽象方法: 方法没有方法体
一个类中, 存在抽象方法, 那么这个类就必须也是abstract
抽象类: 用abstract修饰的类
抽象类不能直接new对象
有构造方法, 为了给子类使用
抽象类的非抽象子类, 必须实现/重写抽象类的所有抽象方法
判断:
1.有抽象方法的类叫抽象类 √
2.抽象类就是有抽象方法的类 ×
3.抽象类中可以没有抽象方法 √
public abstract class Flyobject {//抽象类
//抽象类中,不一定包含抽象方法,但是有抽象方法的类必定是抽象类
int x;
int y;
//抽象类中可以有构造方法,以供子类创建对象时初始化使用
Flyobject(){
}
abstract void move();//为了让所有子类统一,父类方法体没有意义,不写。--抽象方法
}
public class Hero extends Flyobject {
void move(){//此时的方法重写是子类对父类抽象方法完成实现,也叫实现方法
System.out.println("英雄飞机在发射子弹");
//继承抽象类的子类要重写抽象方法。否则,该子类也必须声明为抽象类
}
}
public class Main {
public static void main(String [] ages){
//抽象类不可以创建对象,只有其非抽象子类可以创建对象
Fly a=new Fly();
a.move();
Hero b=new Hero();
b.move();
}
}