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);
}
}