【入门】java基础--2

面向对象  

对象: 一切客观存在的事物

1)属性: 有什么

2)方法: 能做什么



对象间的关系:

1.继承关系              is a    宝马汽车  汽车

2.关联关系(聚合关系)    has a   汽车  发动机  

3.依赖关系                   use a   司机  汽车



面向对象:

先找出解决问题所需要的对象, 再通过对象间的关系,完成需求

计算机中的对象: 数据 一段连续的存储空间  代表现实中的对象


1) 各司其职   简单的对象组成复杂的系统

2) 可重用性   

3) 弱耦合性 

4) 可扩展性  


类:

1. 对象的模板    对象共性的抽象

2. 客观对象在人脑中的反映  人对对象的认识


属性: 成员变量 (实例变量)

1.有默认值 

2.作用范围:本类内部

3.可以和局部变量重名,局部变量优先


方法: 

方法声明: 修饰符 返回值类型 方法名 (参数表) 抛出的异常   

          代表对象能做什么

方法实现: {}

          代表对象怎么做


重载(Overload)  方法名相同 参数表不同 (参数个数 参数类型 参数类型排列不同)

              形参名不同不属于重载, 返回值类型不同不属于重载

编译时多态:由编译器根据实参,决定调用哪个重载的方法

向上就近匹配原则

方法的重载作用:将一个类同类方法,由于参数表的不同造成的差异, 对用户屏蔽



构造方法:

1.没有返回值类型

2.方法名必须和类名相同

3.不允许手工调用 只能在对象构造过程中自动调用一次


构造对象语法: new 类名(构造参数)


对象构造过程

1.分配空间        属性被赋予默认值

2.初始化属性     属性被赋予初始值

3.调用构造方法    属性被赋予构造参数



对象类型变量 引用 : 存储对象的首地址

基本类型变量  : 存数值  


形参引用 和 实参引用 指向同一个对象


this

1) 引用:当前对象  区分局部变量和成员变量

2) 用在构造方法中 调用本类其他构造方法    必须放在构造方法的第一行


======================================================================================================


面向对象的三大特性

封装 (各司其职 可重用性)

    对象的边界 

    访问修饰符:  public   公开

                   private  私有 本类内部访问


    属性私有,为每个属性提供set/get 访问方法    

继承 (可扩展性)

    子类 is a 父类    一般 - 特殊  LSP(里氏代换原则)   

    单继承:一个子类只能有一个直接父类  类之间会形成简单的树状结构

    共性放在父类  个性放在子类

  

     父类的哪些属性或方法能继承给子类? <------> 子类能访问父类的哪些属性或方法?

     private     私有       本类内部          不能继承

     (default)   默认       本类+同包         同包子类可以继承 

     protected   受保护的   本类+同包+子类    可以继承

     public      公开                         可以继承

     方法覆盖 (重写 Override)

     子类用特殊的方法实现, 替换父类继承给它的方法实现

     访问修饰符相同或更宽, 返回值类型,方法名,参数表要相同,抛出的异常相同或更少 (子类不能抛出父类未抛出的异常)


     构造方法不能被继承,不能被覆盖


     对象构造过程:

     1.分配空间 

     2.构造父类对象

     3.初始化本类属性

     4.调用本类构造方法


     super

     1.引用, 指向父类对象  访问父类的属性,或者调用父类被覆盖的方法

     2.用在构造方法的第一行,指定调用父类的构造方法  默认为super()

多态  (弱耦合性)   

      子类对象可以赋值给父类引用

     1 只能对引用调用其引用类型中声明的方法

     2 运行时, 根据对象实际类型, 调用子类覆盖之后的方法

     3 对象类型不变


     instanceof  是不是       引用 instanceof 类名   (布尔表达式)

                              引用中的对象 是不是 类名


     多态作用: 把不同子类对象统一看作父类对象, 屏蔽不同子类的差异

     多态常见场景: 

     1. 多态用在方法参数上   m(A a): m方法可以用A的任何子类对象作为实参

     2. 多态用在方法返回值上 A m() : m方法可能返回A的任何子类对象


===============================================================================================================


修饰符 

private     属性 方法 构造方法 

(default)   属性 方法 构造方法  类 

protected   属性 方法 构造方法 

public      属性 方法 构造方法  类


abstract 抽象的

1. 类     只能声明引用, 不能创建对象

          抽象类:模板的半成品 用来被子类继承 

2. 方法   只有声明, 没有实现


如果一个类中有抽象方法, 这个类就必须是抽象类

子类继承抽象类,如果子类不希望也成为抽象类,就必须实现父类中所有的抽象方法

 私有方法,构造方法,静态方法,final方法  不能abstract 


static 静态

1. 属性   全类共有   可以用类名访问

2. 方法   类名调用

          静态方法只能访问类的静态成员 不能出现this

          静态方法只能被子类的静态方法覆盖,而且没有多态 (对引用调用静态方法,等同于对引用类型调用静态方法)

3. 初始代码块    

     静态初始代码块在类加载的时候执行一次

  类加载:当JVM第一次使用一个类时,需要把这个类所对应的字节码文件的内容读入JVM,并保存起来   

     过程: 1.如果需要,先加载父类

               2.装载

                       3.链接 (所有的静态属性分配空间,赋予默认值)

                       4.初始化 (静态属性被赋予初始值  执行静态初始代码块)

     时机: 1.第一次创建该类的对象

                      2.第一次直接访问静态成员

                       3.第一次加载该类的子类

             如果只是声明该类的引用, 不会发生类加载!!!


final

1.变量  包括局部变量  常量 一旦赋值,不能改变

        final属性,系统不再提供默认值

2.方法  不能被覆盖

3.类    不能被继承

===============================================================================================================

接口   特殊的抽象类

1.所有的方法都是公开抽象方法   public abstract

2.所有的属性都是公开静态常量   public static final

3.没有构造方法



一个类实现接口, 如果这个类不希望成为抽象类,就必须实现接口中所有的方法


接口之间可以多继承

一个类在继承父类的同时,还可以实现多个接口


接口的作用:

1.多继承

  用接口实现多继承, 不会破坏类之间树状关系的简单性

  区分主要父类和次要父类 

2.所有方法都是抽象的  -----> 标准

  解耦合   接口回调 


==============================================================================================================


内部类

成员内部类    

    不破坏封装的情况下,访问外部类的私有成员 .  用"外部类类名.this" 访问外部类当前对象

    创建成员内部类对象,要先创建外部类对象, 再通过"外部类对象.new 内部类类名()"创建内部类对象


静态内部类

    只能访问外部类的静态成员


局部内部类

    方法内部定义, 有效范围从定义开始到所在代码块结束

    不仅可以访问外部类的私有成员,还可以访问外部类的局部常量 (final)


匿名内部类   

    局部内部类的另类写法

    1) 继承某个类或是实现某个接口

    2) 只会创建该类的一个对象



堆空间 : 对象

栈空间 : 局部变量

代码空间 : 静态变量


===============================================================================================================


Object 所有Java类的父类

1. Object o   o = 任何对象

2. Object中定义的public或protected的方法, 是所有Java类都具有的方法

   1)getClass():获得对象的实际类型

   2)finalize():在对象被垃圾回收时,自动调用

     什么对象是垃圾对象? 零引用算法     

     垃圾对象何时被回收? 当内存耗尽时,一次性执行垃圾回收

   3)toString() 

     public String toString() 返回对象的字符串形式

   4)equals()

     public boolean equals(Object o)   判断this和o对象 内容是否相同



包装类   8种基本类型的对象形式

   int <-----> Integer

   char <----> Character

   double <--> Double


   自动封箱   由编译器自动完成基本类型和包装类之间的转换   since5.0


   利用包装类 区分0值和null值


=======================================================================================================
面向对象  
对象: 一切客观存在的事物
1)属性: 有什么
2)方法: 能做什么


对象间的关系:
1.继承关系              is a    宝马汽车  汽车
2.关联关系(聚合关系)    has a   汽车  发动机  
3.依赖关系              use a   司机  汽车


面向对象:
先找出解决问题所需要的对象, 再通过对象间的关系,完成需求


计算机中的对象: 数据 一段连续的存储空间  代表现实中的对象


1) 各司其职   简单的对象组成复杂的系统
2) 可重用性   
3) 弱耦合性   
4) 可扩展性   


类:
1. 对象的模板    对象共性的抽象
2. 客观对象在人脑中的反映  人对对象的认识


属性: 成员变量 (实例变量)
1.有默认值 
2.作用范围:本类内部
3.可以和局部变量重名,局部变量优先


方法: 
方法声明: 修饰符 返回值类型 方法名 (参数表) 抛出的异常   
          代表对象能做什么
方法实现: {}
          代表对象怎么做


重载(Overload)  方法名相同 参数表不同 (参数个数 参数类型 参数类型排列不同)
                形参名不同不属于重载, 返回值类型不同不属于重载
编译时多态:由编译器根据实参,决定调用哪个重载的方法
向上就近匹配原则


方法的重载作用:将一个类同类方法,由于参数表的不同造成的差异, 对用户屏蔽


构造方法:
1.没有返回值类型
2.方法名必须和类名相同
3.不允许手工调用 只能在对象构造过程中自动调用一次


构造对象语法: new 类名(构造参数)
对象构造过程
1.分配空间       属性被赋予默认值
2.初始化属性     属性被赋予初始值
3.调用构造方法   属性被赋予构造参数


对象类型变量 引用 : 存储对象的首地址
基本类型变量  : 存数值  


形参引用 和 实参引用 指向同一个对象


this
1) 引用:当前对象  区分局部变量和成员变量
2) 用在构造方法中 调用本类其他构造方法    必须放在构造方法的第一行


======================================================================================================
面向对象的三大特性
封装 (各司其职 可重用性)
    对象的边界  
    访问修饰符:  public   公开
                 private  私有 本类内部访问
    
    属性私有,为每个属性提供set/get 访问方法    


继承 (可扩展性)
    子类 is a 父类    一般 - 特殊  LSP(里氏代换原则)   
    单继承:一个子类只能有一个直接父类  类之间会形成简单的树状结构
    共性放在父类  个性放在子类 




     父类的哪些属性或方法能继承给子类? <------> 子类能访问父类的哪些属性或方法?
     private     私有       本类内部          不能继承
     (default)   默认       本类+同包         同包子类可以继承 
     protected   受保护的   本类+同包+子类    可以继承
     public      公开                         可以继承


     方法覆盖 (重写 Override)
     子类用特殊的方法实现, 替换父类继承给它的方法实现
     访问修饰符相同或更宽, 返回值类型,方法名,参数表要相同,抛出的异常相同或更少 (子类不能抛出父类未抛出的异常)


     构造方法不能被继承,不能被覆盖


     对象构造过程:
     1.分配空间 
     2.构造父类对象
     3.初始化本类属性
     4.调用本类构造方法
 
     super
     1.引用, 指向父类对象  访问父类的属性,或者调用父类被覆盖的方法
     2.用在构造方法的第一行,指定调用父类的构造方法  默认为super()
多态  (弱耦合性)   
      子类对象可以赋值给父类引用
     1 只能对引用调用其引用类型中声明的方法
     2 运行时, 根据对象实际类型, 调用子类覆盖之后的方法
     3 对象类型不变


     instanceof  是不是       引用 instanceof 类名   (布尔表达式)
                              引用中的对象 是不是 类名


     多态作用: 把不同子类对象统一看作父类对象, 屏蔽不同子类的差异
     多态常见场景: 
     1. 多态用在方法参数上   m(A a): m方法可以用A的任何子类对象作为实参
     2. 多态用在方法返回值上 A m() : m方法可能返回A的任何子类对象


===============================================================================================================
修饰符 
private     属性 方法 构造方法 
(default)   属性 方法 构造方法  类 
protected   属性 方法 构造方法 
public      属性 方法 构造方法  类


abstract 抽象的
1. 类     只能声明引用, 不能创建对象
          抽象类:模板的半成品 用来被子类继承 
2. 方法   只有声明, 没有实现


如果一个类中有抽象方法, 这个类就必须是抽象类
子类继承抽象类,如果子类不希望也成为抽象类,就必须实现父类中所有的抽象方法
 
私有方法,构造方法,静态方法,final方法  不能abstract 


static 静态
1. 属性   全类共有   可以用类名访问


2. 方法   类名调用
          静态方法只能访问类的静态成员 不能出现this
          静态方法只能被子类的静态方法覆盖,而且没有多态 (对引用调用静态方法,等同于对引用类型调用静态方法)


3. 初始代码块    
     静态初始代码块在类加载的时候执行一次
   类加载:当JVM第一次使用一个类时,需要把这个类所对应的字节码文件的内容读入JVM,并保存起来    
     过程: 1.如果需要,先加载父类
           2.装载
           3.链接 (所有的静态属性分配空间,赋予默认值)
           4.初始化 (静态属性被赋予初始值  执行静态初始代码块)


     时机: 1.第一次创建该类的对象
           2.第一次直接访问静态成员
           3.第一次加载该类的子类
           如果只是声明该类的引用, 不会发生类加载!!!


final
1.变量  包括局部变量  常量 一旦赋值,不能改变
        final属性,系统不再提供默认值
         
2.方法  不能被覆盖
3.类    不能被继承


===============================================================================================================
接口   特殊的抽象类
1.所有的方法都是公开抽象方法   public abstract
2.所有的属性都是公开静态常量   public static final
3.没有构造方法


一个类实现接口, 如果这个类不希望成为抽象类,就必须实现接口中所有的方法


接口之间可以多继承
一个类在继承父类的同时,还可以实现多个接口


接口的作用:
1.多继承
  用接口实现多继承, 不会破坏类之间树状关系的简单性
  区分主要父类和次要父类 
2.所有方法都是抽象的  -----> 标准
  解耦合   接口回调 
  
==============================================================================================================
内部类
成员内部类    
    不破坏封装的情况下,访问外部类的私有成员 .  用"外部类类名.this" 访问外部类当前对象
    创建成员内部类对象,要先创建外部类对象, 再通过"外部类对象.new 内部类类名()"创建内部类对象


静态内部类
    只能访问外部类的静态成员


局部内部类
    方法内部定义, 有效范围从定义开始到所在代码块结束
    不仅可以访问外部类的私有成员,还可以访问外部类的局部常量 (final)
匿名内部类   
    局部内部类的另类写法
    1) 继承某个类或是实现某个接口
    2) 只会创建该类的一个对象


堆空间 : 对象
栈空间 : 局部变量
代码空间 : 静态变量


===============================================================================================================
Object 所有Java类的父类


1. Object o   o = 任何对象
2. Object中定义的public或protected的方法, 是所有Java类都具有的方法
   1)getClass():获得对象的实际类型
   2)finalize():在对象被垃圾回收时,自动调用
     什么对象是垃圾对象? 零引用算法     
     垃圾对象何时被回收? 当内存耗尽时,一次性执行垃圾回收
   3)toString() 
     public String toString() 返回对象的字符串形式
   4)equals()
     public boolean equals(Object o)   判断this和o对象 内容是否相同


包装类   8种基本类型的对象形式
   int <-----> Integer
   char <----> Character
   double <--> Double
     
   自动封箱   由编译器自动完成基本类型和包装类之间的转换   since5.0
   
   利用包装类 区分0值和null值

============================================================================================================


String

charAt(int index):通过下标获得字符

toCharArray():返回char[]

String(char[] cs):利用字符数组构造String

toUpperCase()/toLowerCase():转大写/转小写

length():字符串长度

trim():去掉字符串前后的空格和换行

startsWith(String str):判断String是否以str开头

endsWith(String str):判断String是否以str结尾

indexOf(String str):返回子串在String中首下标

indexOf(String str,int begin):从begin位置开始找, 返回子串的首下标

lastIndexOf(String str):从后往前找 找子串首下标

replace(String str,String str2):用str2子串替换str子串

substring(int begin,int end):返回begin到end下标的子串 子串包含起始下标,不包含结束下标

split(String str):以str为分隔符,将字符串拆分为多个子串 返回String[]



String:内容不变

StringBuilder:内容可变



intern():返回String在串池中的地址

串池:减少重复的对象, 资源共用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值