java Day8

1.接口

package test2;

/**
 * 接口(类似父类) --- 实现类(必须重写方法 否则定义为抽象类) implement
 * 一个类可以调用多个接口   因为只能用接口调用接口的方法 eg:接口a里面方法run() 在类中调用 a.run();
 * 一个接口可合并多个接口
 * 支持抽象方法及常量
 * 1.默认方法 default修饰  由实现类的对象调用
 * 2.静态方法 必须 static 修饰  默认 public
 * 3.私有在接口内部才能访问
 *
 * 修改模块版本  ctrl+alt+shift+s - module - language level
 */

public interface Demo3 {    //接口
    public static final String name = "xsw";// public static final可以省略

    default void run(){
        System.out.println("xswdsg");
        run2();
    }

    static void run1(){
        System.out.println("666");
    }

    private void run2(){     //私有————只能用 default 调用
        System.out.println("666666");
    }

}

class test implements Demo3{   //实现类
}

class tast1{                  //调用实现类
    public static void main(String[] args) {
        test s = new test();
        s.run();//默认

        Demo3.run1();//静态
    }
}

2.多态

package test2;

/**
 * 多态
 * 同一个对象执行同一行为表现出不同特征
 * 方法调用: 编译看左边 运行看右边
 * 变量调用: 编译看左边 运行看左边
 * 转换 1.自动 父类-子类 2.强转 子类-父类:子类 对象变量 =(子类) 父类类型对象变量; 有继承可以强转  官方提出if( instanceof ){}
 *
 */
public class Demo4{
    private String compu;

    public Demo4(String compu) {
        this.compu = compu;
    }

    public String getCompu() {
        return compu;
    }

    public void setCompu(String compu) {
        this.compu = compu;
    }

    public void USBDOWN(Usb usb){    //多态
        usb.con();
        if (usb instanceof Keyb){
            Keyb a = (Keyb) usb;
            a.Keydown();
        } else if (usb instanceof Mouse) {
            Mouse b = (Mouse) usb;
            b.Mousedown();
        }
        usb.uncon();
    }

    public static void main(String[] args) {
        Demo4 n = new Demo4("len");
        System.out.println(n.getCompu());

        Usb q = new Keyb("雷蛇");
        n.USBDOWN(q);
        Usb w = new Mouse("罗技");
        w.con();
        n.USBDOWN(w);

    }
}



interface Usb {
  void con();
  void uncon();

}


class Keyb implements Usb{
    private String name;

    public Keyb(String name) {
        this.name = name;
    }

    public void Keydown(){   //独有功能
        System.out.println("键入");
    }

    @Override
    public void con() {
        System.out.println("链接");
    }

    @Override
    public void uncon() {
        System.out.println("取消链接");
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

class Mouse implements Usb{
    private String name;

    public Mouse(String name) {
        this.name = name;
    }

    public void Mousedown(){   //独有功能
        System.out.println("一键三连");
    }

    @Override
    public void con() {
        System.out.println("链接");
    }

    @Override
    public void uncon() {
        System.out.println("取消链接");
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

3.内部类

package test2;

/**
 * 内部类
 * 静态内部类:可以访问外部类中的静态成员  不能直接访问实例成员(可以设置对象访问)
 * 成员内部类(无static):
 *
 * **匿名内部类
 * 没有名字的内部类 定义在内部中代码块中
 * 作用:简化代码
 */
public class Demo5 {
    public static void main(String[] args) {
        animal n =new animal() {
            @Override
            public void run() {
                System.out.println("跑的快");
            }
        };
        n.run();
    }

}
abstract class animal{
    public abstract void run();
}

4.常用api

package test2;

/**
 * 常用api
 * StringBuilder
 * 最后转化为String
 */

public class Demo6 {
    public static void main(String[] args) {
        StringBuilder n1 = new StringBuilder();
        n1.append("123").append("456");
        System.out.println(n1);
        System.out.println(n1.reverse());
        String rs = n1.toString();
        System.out.println(rs);

        System.out.println("==========================");
        int[] arr = {20,30,12,430};
        System.out.println(toString(arr));
    }

    public static String toString(int[] arr){
        if (arr != null){
            StringBuilder n = new StringBuilder("[");
            for (int i = 0; i < arr.length; i++) {
                n.append(arr[i]).append(i == arr.length-1 ? "":",");
            }
            n.append("]");
            return n.toString();
        }else {
            return null;
        }
    }
}
package test2;

/**
 * 常用api
 * StringBuilder
 * 最后转化为String
 */

public class Demo6 {
    public static void main(String[] args) {
        StringBuilder n1 = new StringBuilder();
        n1.append("123").append("456");
        System.out.println(n1);
        System.out.println(n1.reverse());
        String rs = n1.toString();
        System.out.println(rs);

        System.out.println("==========================");
        int[] arr = {20,30,12,430};
        System.out.println(toString(arr));
    }

    public static String toString(int[] arr){
        if (arr != null){
            StringBuilder n = new StringBuilder("[");
            for (int i = 0; i < arr.length; i++) {
                n.append(arr[i]).append(i == arr.length-1 ? "":",");
            }
            n.append("]");
            return n.toString();
        }else {
            return null;
        }
    }
}
package test2;

/**
 * 二分查找
 */

public class Demo9 {
    public static void main(String[] args) {
        int[] arr = {20,35,60,82,94,100,150};
        System.out.println(binarySeach(arr,100));
        System.out.println(binarySeach(arr,200));
    }

    public static int binarySeach(int[] arr,int data){
        int left = 0;
        int right = arr.length-1;
        while (left <= right){
            int middle = (left+right)/2;
            if (arr[middle] < data) {
                left = middle + 1;
            } else if (arr[middle] > data) {
                right = middle - 1;
            }else {
                return middle;
            }
        }
        return -1;
    }


}

 

package test2;

import java.util.ArrayList;
import java.util.Arrays;

/**
 * math  system   BigDecimal(解决精度失真)
 * system.exit(0)别用!!!
 *
 */
public class Demo7 {
    public static void main(String[] args) {
        int[] arr1 = {1,2,3,4,5,6};
        int[] arr2 = new int[6];
        System.arraycopy(arr1,3,arr2,2,3);
        System.out.println(Arrays.toString(arr2));
    }
}

 5.正则表达式

package test2;

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 正则表达式
 * \d: 0-9    \s:[\t\n\x0B\f\r]    \w:[a-zA-z_0-9]     汉字^([\u4e00-\u9af5])    {n,}  n代表几位
 */

public class Demo8 {
    public static void main(String[] args) {
        System.out.println(Name());
        System.out.println(Tel());
        System.out.println(Email());

        /*
        Pattern pattern = Pattern.compile(re);//爬取格式
        Matcher matcher = pattern.matcher(rs);//爬取对象
        while (matcher.find()){
            String rs1 = matcher.group();
            System.out.println(rs1);
        }
         */

    }

    private static String Tel() {
        Scanner sc = new Scanner(System.in);
        while (true) {
            System.out.print("输入您的手机号:");
            String tel = sc.next();
            if (tel.matches("1[3-9]\\d{9}")) {
                System.out.println("注册成功");
                return tel;
            }else{
                System.out.println("注册失败");
            }
        }
    }

    private static String Email() {
        Scanner sc = new Scanner(System.in);
        while (true) {
            System.out.print("输入您的邮箱:");
            String eml = sc.next();
            if (eml.matches("\\w{1,30}@\\w{2,20}(\\.\\w{2,20}){1,2}")) {
                System.out.println("注册成功");
                return eml;
            }else{
                System.out.println("注册失败");
            }
        }
    }

    private static String Name(){
        Scanner sc = new Scanner(System.in);
        while (true) {
            System.out.print("输入您的姓名:");
            String name = sc.next();
            if (name.matches("\\w{2,130}|^([\\u4e00-\\u9af5]){2,10}") || name.matches("^([\\u4e00-\\u9af5]){2,10}")){
                System.out.println("注册成功");
                return name;
            }else{
                System.out.println("注册失败");
            }
        }
    }


}

6.二分查找

package test2;

/**
 * 二分查找
 */

public class Demo9 {
    public static void main(String[] args) {
        int[] arr = {20,35,60,82,94,100,150};
        System.out.println(binarySeach(arr,100));
        System.out.println(binarySeach(arr,200));
    }

    public static int binarySeach(int[] arr,int data){
        int left = 0;
        int right = arr.length-1;
        while (left <= right){
            int middle = (left+right)/2;
            if (arr[middle] < data) {
                left = middle + 1;
            } else if (arr[middle] > data) {
                right = middle - 1;
            }else {
                return middle;
            }
        }
        return -1;
    }


}

7.collection

package test2;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.function.Consumer;

/**
 * collection
 * api   .add  .clear  .isEmpty(判断集合是否为空     .size      .contains(包含      ..remove(删除重复
 * Object[] arrs = c.toArray();  集合转换为数组
 * Iterator(迭代器
 */

public class Demo10 {
    public static void main(String[] args) {
        Collection<String> list = new ArrayList<>();
        list.add("lihua");
        list.add("xiaobai");
        list.add("libai");
        list.add("bubai");
        System.out.println(list);
        Iterator<String> it = list.iterator();
//        String ele = it.next();
//        System.out.println(ele);
//        System.out.println(it.next());
        while (it.hasNext()){
            String ele = it.next();
            System.out.println(ele);
        }

        System.out.println("============");

        list.forEach(new Consumer<String>(){
            @Override
            public void accept(String s) {
                System.out.println(s);
            }
        });

        System.out.println("=============");

        list.forEach(s -> System.out.println(s));
        //list.forEach(System.out::println);


    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值