总结

抽象类

抽象类的概念

一个没有方法体的方法应该定义为抽象方法,而类中如果有抽象方法,该类必须定义为抽类。

抽象类的格式

格式:
public abstract class 类名{}
public abstract void 方法名();

抽象类的成员特点

成员变量
 可以是常量
 可以是变量
成员方法
  可以抽象方法(强制子类必须重写)
  也可以非抽象方法
构造方法
 有构造方法,但是不能实例化
 构造方法作用(用于子类访问父类的数据初始化)
有抽象方法一定是抽象类,抽象类不一定有抽象方法

接口

接口的概念

接口就是具有某些特定的功能,没有给出具体的实现

接口的格式

接口的定义  
  关键字 interface
  格式:interface 接口名{}
实现接口
   关键字 implements
   格式:calss 类名+Impl implements 接口名{}
接口是不能实例化的,只能通过实现接口的子类实例化

接口成员特点

成员变量
    只能是常量
    默认格式:public static final
成员方法
    只能是抽象方法
    默认格式:public abstract
无构造方法

抽象类与接口的区别

都不实例化

成员区别
   抽象类
      成员变量  可以是常量、变量
      成员方法  可以是抽象方法、非抽象方法
      有构造方法
   接口
      成员变量  只能是常量 默认格式:public static final
      成员方法  只能是抽象方法 默认格式:public abstract

关系区别
    类与类 
      类只能单继承,不能多继承,可以多层继承
    类与接口
      一个类在继承另一个类同时,还可以实现多接口
    接口与接口
       接口可以单继承,也可以多继承

设计理念区别
    抽象类  是 is a 关系,共性功能
    接口    是 like  a关系,扩展功能

   

包的概念

其实就是一个文件夹

包的注意事项

定义包的格式
  package 包名;
  多级包用.分开即可
注意事项:
  package语句必须是程序的第一条可执行的代码
  package语句在一个java文件中只能有一个
如果没有package,默认表示无包名

导包

导包概述
 不同包下的类之间的访问,我们发现,每次使用不同包下的类的时候,都需要加包的全路径。比较
 麻烦。这个时候,java就提供了导包的功能。
 导包格式
import 包名;
注意:
 这种方式导入是到类的名称。
 虽然可以最后写*,但是不建议。

修饰符

静态修饰符  static
抽象修饰符  abstract
常量修饰符  final
权限修饰符
  public
  private
  protected
  默认

权限修饰符的范围

publicprotected默认private
同一类中
同一包子类,其他类
不同包子类
不同包其他类

内部类

内部类的概念

把类定义在其他类中,这个类就被称为内部类

内部类的分类

     成员内部类 定义在类的成员位置
     局部内部类 定义在类成员方法    
    
创建类的实例
     外部类名.内部类名 对象名 = 外部类对象.内部类对象;  
     

成员内部类

1)被静态修饰的成员内部类只能访问外部类的静态成员
         内部类被静态修饰后的方法
         可以是静态方法,也可以是非静态方法

2)非静态的成员内部类,成员只能是非静态的。
3)内部类被静态修饰后的方法有静态和非静态之分。他们的访问和不用静态是不一样的。
         访问非静态方法:外部类名.内部类名 对象名 = new 外部类名.内部类名();
         访问静态方法:上面创建的对象访问,或者外部类名.内部类名.方法

局部内部类

1)可以直接访问外部类的成员
2)可以创建内部类对象,通过对象调用内部类方法,来使用局部内部类功能
3)局部内部类访问局部变量的注意事项:
    必须被final修饰?jdk1.8后面默认final
    为什么呢?
    因为局部变量会随着方法的调用完毕而消失,这个时候,局部对象并没有立马从堆内存中消失,还
    要使用那个变量。为了让数据还能继续被使用,就用fianl修饰,这样,在堆内存里面存储的其实
    是一个常量值

匿名内部类

 格式: new 类名/接口(){
           重写方法
   };
 本质:继承类(抽象类)的子类对象或实现接口的子类对象

形参参数和返回值

基本类型
引用类型
    形式参数如果是具体类,实际参数传递需要转递该具体类的对象
    形式参数如果是抽象类,实际参数传递需要该抽象类的子类对象或是匿名内部类
    形式参数如果是接口,实际参数传递需要该接口的子实现类或者接口的匿名内部类
 

    方法的返回值如果是具体类,方法return 需要该类的具体类对象
    方法的返回值是抽象类,需要返回该抽象类的子类对象或是匿名内部类
    方法的返回值是接口,需要返回该接口的子实现类或者接口的匿名内部类

选择排序

思想:
     索引值为0的元素与其他元素进行比较,第一次比较完毕后,最小值出现在最小索引处
     第二次比较,索引值为1的元素与其他元素进行比较,小的元素取代索引值为1的位置
     依次下去...
     最终比较次数:length-1
写法
    int[] arr={13,31,56,78,8,2};
    for(int i = 0;i<arr.length-1;i++){
       for(int j = i;j<arr.length;j++){
           if(arr[i]>arr[j]){
              int temp =arr[i];
              arr[i]=arr[j];
              arr[j]=temp;
           }
       }
    }

常用类

string类

string的特点

1.字符串是常量,一旦被赋值,其值不能被更改
2.对象不可变,可以被共享
形式参数改变,不会影响到实际参数

构造方法

public String() :初始化新创建的 String对象,以使其表示空字符序列。
public String(char[] value) :通过当前参数中的字符数组来构造新的String。
public String(byte[] bytes) :通过使用平台的默认字符集解码当前参数中的字节数组来构造新的String。


常用方法

判断功能的方法
    public boolean equals (Object anObject) :将此字符串与指定对象进行比较。
    public boolean equalsIgnoreCase (String anotherString) :将此字符串与指定对象进行比较,忽略     小写。
获取功能的方法
    public int length () :返回此字符串的长度。
    public String concat (String str) :将指定的字符串连接到该字符串的末尾。
    public char charAt (int index) :返回指定索引处的 char值。
    public int indexOf (String str) :返回指定子字符串第一次出现在该字符串内的索引。
    public String substring (int beginIndex) :返回一个子字符串,从beginIndex开始截取字符串到字     符串结尾。
    public String substring (int beginIndex, int endIndex) :返回一个子字符串,从beginIndex到
    endIndex截取字符串。含beginIndex,不含endIndex。
转换功能的方法
    public char[] toCharArray () :将此字符串转换为新的字符数组。
    public byte[] getBytes () :使用平台的默认字符集将该 String编码转换为新的字节数组。
    public String replace (CharSequence target, CharSequence replacement) :将与target匹配     的字符串使用replacement字符串替换。
    public String toLowerCase();将字符转换成小写
    public String totoUpperCase(); 将字符转换成大写 
分割功能的方法
    public String[] split(String regex) :将此字符串按照给定的regex(规则)拆分为字符串数组。

字符串的常量相加和变量相加

    变量相加:  先开空间,产生地址,之后在相加---->还需要看是否有这个值!
    
    常量相加:  先直接相加(拼接) ----->在常量池中找,是否存在这个值,如果存在直接返回这个地址;如果不存在,需要在常量池中开辟空间地址!

StringBuffer类

StringBuffer类的特点

StringBuffer:线程安全的可变字符序列
        线程安全的类--->同步的
	StringBuffer作为形式参数,形参的改变会影响实际参数

构造方法

    StringBuffer() :无参构造方法 :构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符。
    public StringBuffer(int capacity):构造一个字符串缓冲区,指定容量大小
    public StringBuffer(String str):构造一个带内容的字符串缓冲区:字符串的初始容量为 16 加上字符串参 数的长度
 
     public int capacity():获取容量大小
     public int length():获取字符串长度

常用方法

添加功能
    public StringBuffer append(xxx);将任意类型的内容追加到此序列中(字符串缓冲区中)
    public StringBuffer insert(int offset,String xxx):在指定位置处插入指定的元素
删除功能
    public StringBuffer deleteCharAt(int index):删除指定位置处的字符序列
    public StringBuffer delete(int start,int end):从指定位置删除到指定位置结束的字符序列(包含start位置,结束到end-1)
替换功能
    public StringBuffer replace(int start,int end,String str)从指定位置处开始到end-1处,使str字符进行替换,返回StringBuffer本身
截取功能
    public String substring(int start):从指定位置开始截取,默认截取到末尾,返回值是新的字符串
    public String substring(int start,int end):从指定位置开始截取到end-1的位置,返回值是新的字符串
反转功能
    public StringBuffer reverse():将缓冲区中的字符串进行反转

String和StringBuffer之间的相互转换

String转StringBuffer
  两种方式
        方式1:利用StringBuffer的构造方法
        StringBuffer(String str)
        
        方式2:利用StringBuffer的追加功能 append
        空参构造+append(xx)
StringBuffer转String
两种方式
        方式1:利用String的构造方法 public String(StringBuffer buffer)      
        
        方式2:StringBuffer的功能
        public String toString()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值