接口
接口 jdk1.8后进行了优化
1 以前不能写成员方法
优化后可以写成员方法
a(不能使用接口直接去调用 因为接口不能实例化对象 必须要使用接口类去调用)
b 默认方法可以在实现类中可以重写也可以不重写
c 如果想调用接口类的 默认方法 可以使用
接口名.super.默认方法
抽象类 和 接口 的区别
1 成员变量
抽象类:可以是常量 也可以是变量
接口:常量
2 成员方法
抽象类:有成员方法 有抽象方法
接口:只能有静态的成员方法 抽象方法 默认方法
3构造方法
抽象类:有
接口:没有
public class Demo1 {
public static void main(String[] args) {
//调用接口中的静态成员方法
InterA.staticFun();
//调用接口中的默认成员方法
//InterA a = new InterA();
InterA a = new InterAImpl();
a.defaultFun();这里写代码片
//调用实现类的成员方法
//向下转型
//必须要有向上转型 才能有向下转型
InterAImpl aImpl=(InterAImpl)a;
aImpl.fun1();
InterAImpl.staticFun();
InterA.staticFun();
}
}
interface InterA{
//抽象方法
public abstract void fun();
//静态成员方法
public static void staticFun() {
System.out.println("我是接口静态的成员方法");
}
//默认的成员方法
public default void defaultFun() {
System.out.println("我是接口中的默认的成员方法");
}
}
class InterAImpl implements InterA{
public void fun() {
System.out.println("我是实现类的抽象方法的实现");
}
//重写接口类的默认方法
public void defaultFun() {
//重写的同时,想调到接口类的 默认方法
InterA.super.defaultFun();
System.out.println("我市实现类的default方法");
}
//实现类重新定义一个成员方法
public void fun1() {
InterA.super.defaultFun();
System.out.println("我是实现类中的成员方法的fun1()");
}
public static void staticFun() {
System.out.println("我是实现类的staticFun方法");
}
}
字符串 —– 系统提供的一个类
学习的是字符串类型的方法 和用法 学习的是常用的方法
public class Demo01 extends Object {
//测试字符串的位置
public static void fun1() {
//字符串 就相当于 字符数组
String string = "qujinyao";
int index = string.indexOf('q');
System.out.println(index);
if (index == 0 ) {
System.out.println("傻逼");
}
//参数4是从哪一位开始查找
int q = string .indexOf('a', 4);
System.out.println(q);
int w = string.indexOf("inyao", 2);
System.out.println(w);
//按下标取出对应的字符
char ch = string. charAt(5);
System.out.println(ch);
//判断 n 是否包含于 asasiasdusd
}
public static void fun2() {
String string = "www.baidu.com";
boolean rel1 = string.contains("baidu");
System.out.println(rel1);
//判断前缀
boolean rel2 = string.startsWith("www");
System.out.println(rel2);
//判断后缀
boolean rel3 = string.endsWith("com");
System.out.println(rel3);
}
//替换
public static void fun3() {
String string = "wangLong";
// String string2 = "wanghong";
// string.replace(string, string2);
//这里要注意,别选错了方法
//(old new)
String string2 = string.replace("wangLong", "wangning");
System.out.println(string2);
}
//切割
// qinghua_girl_ningning
public static void fun4() {
String str = "wang,long,haha";
String[] array = str.split(",");
System.out.println(array.length);
//增强for循环 forech
//遍历是数组中的元素
//:后 是要遍历的容器(数组)
//:前 表示的是数组的元素
for (String string : array) {
System.out.println(string);
}
}
//获取子字符串(出现率比较高)
public static void fun5() {
String string = "qujinyao2NB";
// 留头不留尾
String string2 = string.substring(2, 5);
System.out.println(string2);
}
//转换大小写(出现率较高)
public static void fun6() {
String string = "qujinyao";
String string2 = string.toUpperCase();
System.out.println(string2);
String string3 = "YAOJINNI";
String string4 = string.toLowerCase();
System.out.println(string4);
}
//判断两个字符创相等(忽略大小写)(常用)
public static void fun7() {
String string = "qujinyao";
String string2 = "Qujinyao";
System.out.println(string.equalsIgnoreCase(string2));
}
//去空格(前后空格)(常用)
public static void fun8() {
String string = " abc def ";
String string2 = string.trim();
System.out.println(string2);
}
//俩个字符串进行比较 比较的是字符的ASII 相等的返回的是0 不相同的
public static void fun9(){
String string = "abc";
String string2 = "aBc";
int num= string.compareTo(string2);
System.out.println(num);
System.out.println((int)'a');
}
// 把字符属猪 转换为字符串 把字符串转换为字符数组
public static void fun10() {
char[] array = new char[] {'w','l','o','g'};
String string = new String(array);
System.out.println(string);
String string2 = "wlong";
char[] charArray = string2.toCharArray();
//便利数组
for(char c : charArray) {
System.out.println(c);
}
}