接口
接口 jdk1.8后进行了优化
优化后可以写成员方法
1.静态方法
2.默认的方法
a.不能使用接口直接去调用 因为接口不能实例化对象
必须使用该接口的实现类的对象去调用
b.默认方法在实现类中可以重写 不强制你必须重写
c.如果想调用父类中的默认方法
可以使用 接口名.super.默认方法名
抽象类 和 接口的区别:
成员变量 :
抽象类:常量 和变量
接口:常量
成员方法 :
抽象类: 有成员方法 有抽象方法
接口: 只能有 静态成员方法 抽象方法 默认方法
构造方法 :
抽象类:有
接口: 没有
class Demo01 {
public static void main(String[] args) {
// 调用接口中的静态方法
InterA.sb();
// 调用接口中的默认成员方法
InterA a = new InterImpl();
a.defalutsb();
//调用实现类的成员方法
//向下转型
InterImpl nImpl = (InterImpl)a;
nImpl.sb1();
InterImpl.sb();
InterA.sb();
}
}
interface InterA{
public abstract void fun();
public static void sb() {
System.out.println("我是静态成员方法 sb");
}
//默认方法
public default void defalutsb() {
System.out.println("我是接口中默认成员方法 defaultsb");
}
}
class InterImpl implements InterA{
public InterImpl() {
// TODO Auto-generated constructor stub
}
@Override
public void fun() {
// TODO Auto-generated method stub
System.out.println("我是实现类 的抽象方法实现");
}
@Override
public void defalutsb() {
// 重写的同时 希望可以钓到接口类的默认方法
InterA.super.defalutsb();
System.out.println("我是实现类 defalutsb()方法");
}
// 实现类中定义一个成员方法
public void sb1() {
InterA.super.defalutsb();
System.out.println("我是实现类中的 成员方法 sb1()");
}
public static void sb() {
System.out.println("我是实现类的静态方法 sb()");
}
}
String
字符串(系统提供的一个类)
如何定义一个字符串类提供的方法 的用法 学习常用方法
1.获取
根据索引获取字符串中的字符
根据字符获取字符传中位置
indexof(int ch)
indexof(int chnint, intfromIndex)
替换 切割 获取子串 转换大小写 去空格 比较
判断两个字符串相等忽略大小写
把字符数组转化为字符串
把字符串转化为字符数组
字符串类 中的一些常用方法:
//测试字符串获取位置
public static void fun3() {
String string = "wang,long";
String string1 =string.replace("long", "ning");
String[] string2 = string.split(",");
System.out.println(string2.length);
// 增强for循环
// 遍历 的是数组中的元素
// 冒号后 是要遍历的容器(数组)
// 冒号前 表示的是 数组中的元素
for (String str : string2) {
System.out.println(str);
}
}
//把字符数组转化为字符串
// 把字符串转化为字符数组
public static void fun9(){
char[] array = new char[] {'w','a','n','g'};
String string = new String(array);
char[] array1=string.toCharArray();
for(char c : array1) {
System.out.println(c);
}
}
//两字符串比较(比较 的字符的ASCII吗 相等返回0)
public static void fun8() {
String string = "abc";
String string2 = "afc";
int i =string.compareTo(string2);
System.out.println(i);
}
//去空格 (去前后空格)
public static void fun7() {
String string = " wang long ";
String string2 = string.trim();
System.out.println(string2);
}
// 判断字符串相等(忽略大小写)
public static void fun6() {
String string1 = "wanglong";
String string2 = "WANGLONG";
boolean b =string1.equalsIgnoreCase(string2);
System.out.println(b);
}
// 转换大小写(出现率较高)
public static void fun5() {
String string = "wanglong";
String string2 =string.toUpperCase();
System.out.println(string2);
String string3 = string2.toLowerCase();
System.out.println(string3);
}
public static void fun4() {
String string = "wanglong";
// 留头 不留尾 [2,5)(出现率比较高)
String string2 = string.substring(2,5);
System.out.println(string2);
}
public static void fun1() {
//字符串相当于字符数组
String string ="wanglang";
int index = string.indexOf("a");
System.out.println(index);
//参数二 从哪一位开始查找
int index2=string.indexOf('g',4);
System.out.println(index2);
int index5 =string.indexOf("n");
System.out.println(index5);
int index3 = string.lastIndexOf('g');
System.out.println(index3);
int index4= string.lastIndexOf('g',5);
System.out.println(index4);
char ch = string.charAt(5);
System.out.println(ch);
}
public static void fun2() {
String string ="www.baidu.com";
Boolean boolean3 = string.contains("baidu");//是否包含baidu
Boolean boolean4 = string.startsWith("www");//是否以www开始
Boolean boolean5 = string.endsWith("com");//是否以com结束
System.out.println(boolean3);
System.out.println(boolean4);
System.out.println(boolean5);
}
例题
将 字符串 ” abc def ” 将字符串中前后空格去掉
两个方法
public static void main(String[] args) {
String string = " abc def ";
char[] array = string.toCharArray();
char[] array1;
int st =0;
int end = string.length()-1;
for(int i = 0;i<array.length&&st<end;i++) {
if(array[i]!=' ') {
st =i;
break;
}
}
for(int i = array.length-1;i>=0;i--) {
if(array[i]!=' ') {
end =i;
break;
}
}
String string2 =string.substring(st,end+1);
System.out.println(string2);
String string3 = " abc def ";
int start = 0;
int end1 = string.length()-1;
// 一位一位的查看 该位置空格的话 就让开始坐标++
while(string.charAt(start)==' '&& start<end1) {
start++;
}
while(string.charAt(end1)==' '&& start<end1) {
end1--;
}
String newStr = string.substring(start,end1+1);
System.out.println(newStr);
}
将字符串 ” abc def” 反转
String string = " abc def";
char[] array = string.toCharArray();
char temp;
for (int i = 0; i <string.length()/2; i++) {
temp=array[i];
array[i]=array[string.length()-i-1];
array[string.length()-i-1]=temp;
}
//字符数组转换化位字符串
String string2=new String(array);
System.out.println(string2);
计算 wwwasdwwwdlaskwwwalkjasdwwwda;
www的次数
String string ="wwwasdwwdlaskwwalkjasdwwda";
int num = 0;
String k = "www";
for(int i=0;i<string.length()-1&&i+k.length()<string.length()-1;i++) {
if(string.substring(i,i+k.length()).equals(k)) {//判断是否指定值与子字符串的值相等
//每次截取字符串 计数
num++;
}
}
System.out.println(num);