目录
28.7Integer和Character包装类中常用的方法
28.1什么接口--简单理解。
接口理解为特殊的抽象类,
1.8以前接口中所有的方法都是抽象方法,而且接口中所有的属性都是静态常量。
而且他也弥补了抽象类的缺陷-只允许单继承。--理解为干爹。
28.1.2如何定义接口
public interface 接口名{//成员-1.8以后//1.静态常量成员//2.抽象方法成员}
public interface Usb {
//静态常量
public static final String WIDTH="1cm";
//使用
public abstract void use();
}
既然接口中所有的成员都有固定的修饰符。那么我们就可以省略固定的修饰符
public interface Usb {
//静态常量
String WIDTH="1cm";
//使用
void use();
}
接口也是无法创建对象。--如何使用接口中的成员。它需要类实现该接口。
28.2类实现接口的语法
//注意:一个类可以实现多个接口。
public class 类名 implements 接口名,接口名,....{
}
//注意: 类实现类接口那么该类必须实现接口中所有的抽象方法。
public class Mouse implements Usb {
@Override
public void use() {
System.out.println("鼠标实现了Usb接口");
}
}
public class Test {
public static void main(String[] args) {
//父类声明 子类创建---对象的多态。
Usb usb=new Mouse();
usb.use();
}
}
28.3接口与接口之间使用继承
一个接口可以继承多个接口。
interface A{
public void a();
}
interface B{
public void b();
}
interface C extends A,B{
public void c();
}
class F implements C{
@Override
public void a() {
}
@Override
public void b() {
}
@Override
public void c() {
}
}
总结:
同类型之间使用继承,类与接口使用实现。
类与类之间: 只允许单继承。 extends
接口与接口之间: 允许多继承。 extends
类与接口之间: 允许多实现。 implements
例子:
鸟: 飞
飞机: 飞
超人: 飞
Fly接口: fly()抽象方法;
都有飞的功能---> 把相同的功能--->抽取到接口中---让这些类实现接口。
28.4包装类
万事万物皆为对象-->基本类型就不符合这句话。-->把基本类型封装成对应的类。
什么是包装类?--把基本类型封装成对应的类这个过程就是包装。类中具有相应的方法功能
byte--->Byte
short-->Short
int --->Integer
long--->Long
float--->Float
double--->Double
boolean--->Boolean
char--->Character
28.5自动装箱
转型: 基本类型向它对应的包装类转化。
public class Test {
public static void main(String[] args) {
int a=15; //基本类型。
Integer c=new Integer(a);//手动装箱。
Integer b=a;//把基本类型转化为引用类型。--自动的转到转化 [1.5以后]。
long l=25;
Long l1=l;//自动装箱
Long l2=new Long(l);//手动装箱
}
}
28.6自动拆箱
拆箱: 把引用类型转化为对应的基本类型。
public static void main(String[] args) {
Integer a=new Integer(15);//包装类型
int b=a;//自动拆箱。把引用类型转化为基本类型。【1.5以后】
int c=a.intValue();//手动拆箱
}
28.7Integer和Character包装类中常用的方法
Integer类中常用的方法。
//Integer a=15;
//parseInt(String a): 静态方法、把数字字符串转化为整数。注意: 该方法可能出现异常。
//java.lang.NumberFormatException: For input string: "abc"
int i = Integer.parseInt("abc");
System.out.println("整数:"+i);
Integer a=new Integer(18);
Integer b=new Integer(16);
int i1 = a.compareTo(b);
int compare = Integer.compare(a, b);//比较两个整型的大小。
System.out.println("~~~~~~~~~~~~"+i1);
System.out.println("~~~~~~~~~~~~"+compare);
Character类常见的方法
static boolean isDigit(char ch) : 判断指定的字符是否为数字。
static boolean isLetter(char ch) :判断指定的字符是否为字母
static boolean isLowerCase(char ch) :判断指定的字符是否为小写字母
static boolean isUpperCase(char ch) :判断指定的字符是否为大写。
给定一个字符串,判断字符串中小写字母,大写字母,数字以及其他的个数。
String str="asadasASDHG@#@#R%#1234";
28.8 其他类的API
StringBuffer和StringBuilder----对字符串的操作。--适合频繁改变字符串内容。
StringBuffer sb=new StringBuffer("hello");
//修改sb的内容。
sb.append("world");//追加。
// sb.reverse();//倒置
sb.insert(5,"闫克起真帅");//指定位置插入相应的字符串
sb.delete(0,3);
StringBuilder和StringBuffer里面的方法完全一样。区别:一个是线程安全的一个线程不安全。
StringBuffer:它是线程安全的,效率慢。
StringBuilder:它是线程不安全,但是效率搞。
/**
* String底层使用字符串数组,而该数组使用final修饰了,所以它是不可变。每次改变都会生成新的空间,而指针指向新的空间。不适合频繁改变的字符串。
* StringBuffer中的方法和String中的方法类似。StringBuffer底层使用的也是字符数组,但是没有使用final修饰。可变。
*
*/
public class Test02 {
public static void main(String[] args) {
long start = System.currentTimeMillis();
String str=new String("hhhhhhh");
for(int i=0;i<100000;i++){
str+=i;
}
System.out.println(str);
long end = System.currentTimeMillis();
System.out.println("耗时:"+(end-start));
}
}