java复习 面向对象1

一.面向对象的三大特征:
  1.封装性:对外部不可见 可以保护程序中的某些内容
  2.继承性:扩展类的功能
  3.多态性:方法的重载 对象的多态性
 
  类与对象的关系:
  类是某一事物的描述,是抽象的,概念上的定义(模板),对象时实际存在的该类事物
  的各一个个体,因而也称实例(instance)

  类的定义:
  作用域 class 类名称{
               数据类型 属性    //声明成员变量
               ...
        作用域 返回值的数据类型 方法名称(参数1,参数2) //定义方法和功                                                  能
               程序语句;
        return 表达式;

  对象的创建与使用:
   类名称 对象名称 = null;  //声明对象
   对象名称 = new 类名称() //实例化对象 用类的构造方法实例化对象
  1.类属于引用传递,引用数据类型必然存在栈内存-堆内存的引用关系,实际上
    在类与对象的使用上依然存在这样的关系.
    Person per = new Person();
    .声明对象:Person per,栈内存中声明的,对象名称保存在栈内存中,之开辟
     了栈内存的对象时无法使用的,必须有其堆内存的引用才可以使用.
    .实例化对象:new Person(),在堆内存中开辟空间,所有的内容都是默认值.
     引用数据类型为null,基本数据0
    对象是保存在栈内存中的,属性是保存在堆内存中的,方法是保存在全局代码区之中
    的,此区中内容是所有对象共享的.
    在使用对象的时候,对象必须被实例化之后才可以使用(实例化对象,并不单单
    指的是直接通过new关键字实现的,只要其有堆内存的空间指向,则就表示实例化成功)
    如果不实例化对象,就没有堆内存的引用指向,调用类中的属性或方法,则会出现NullPointerException空指针异常
    所谓的引用数据类型,实际上传递的就是堆内存的使用权,可以同时为一个堆内存
    定义多个栈内存的引用操作.(定义多个对象)
    (1)Person per1 = new Person();  Person per2 = null;
       per2 = per1;//把per1的堆内存空间使用权给per2
       per1.name = "cyq"; per1.age = 23;
       设置per2对象的内容,实际上就是设置per1对象的内容.
    (2)Person per1 = new Person();  Person per2 = new Person();
       per2 = per1;
       把per1堆内存的使用权给了per2,因为per2本身就有堆内存的空间
       指向,所以如果要想再指向per1对应的空间,则必须先断开已有的连接
       指向,因为per2改变了指向,所以其原本的内存空间就没有任何栈的引用
       ,则这样的内存就被称为垃圾,
       GC:垃圾收集机制
    2.封装性:
      目的:
         封装就是保护内容,保证某些属性或方法可以不被外部看见修改(eag)
         用private封装属性和方法
      访问封装的内容:
         被封装的属性需要被访问,则需要编写setter和getter方法,由外部
  设定和访问属性,如果要加入验证,则在setter方法中加入
      封装性在java中有很多种形式,private只是最基本的形式,也是一种比较
      常见的形式,类中的每一个属性都必须封装
    3.构造方法与匿名类
      构造方法:只要已有对象的实例化就会调用构造方法, Person p = new Person()
               构造方法是一种特殊的方法,构造方法必须与类名称一致,声明处不能
        有任何返回值类型,不能在构造方法中使用return返回一个值

               每一个类中肯定会有一个构造方法,如果一个类中没有声明一个
        明确的构造方法则会自动生成一个无参的构造方法
      目的:构造方法的目的是为类中的属性初始化,构造方法中也可以调用setter
           方法设定属性
      构造方法在声明对象时不调用,构造方法的重载与普通方法一样,只要参数的类型
      或者个数不同.

      匿名类: 没有名字,如果准备只是用一次类对象,则可以使用匿名类
              new Person().tell();
              匿名对象就是比对象少了一个栈内存的引用关系,之开辟了
       堆内存的实例对象.
    4.类的设计分析
      (1)根据要求写出类所包含的属性
      (2)所有的属性都必须进行封装(private)
      (3)封装之后的属性通过setter和getter方法设置和取得
      (4)如果需要可以加入若干构造方法
      (5)再根据要求添加相应的方法
      (6)类中所有方法都不要直接输出,而是交给被调用处输出
    5.String类
     实例化String对象方式:
       (1)直接赋值:String name = "cyq";
       (2)通过new关键字  String name = new String("cyq");
     String的比较:
       基本数据类型比较通过"=="比较
       String有两种比较方式:
       "=="在String中比较的是地址值,equals()方法比较的是具体的内容
     String两种实例化的比较
       一个字符串实际上就是一个String类的匿名对象(从调用equals方法可知)
       String name = "cyq";  //直接赋值,只实例化一个对象,节省空间
       String name = new String("cyq");//开辟两个内存空间,实例化两个对象
     String内容是不可改变的,说的是内存地址的改变

     String类的常用方法:
     (1)字符串与字符数组
        将字符串变为字符数组:public char[] toCharArray()
 将字符数组变为字符串:public String(char[] value)
 将部分字符数组变为字符串:
 public String(char[] value,int offset,int count)
     (2)从字符串中去除指定位置的字符
        public char charAt(int index) 返回char类型
     (3)字符串与byte数组的转换
        byte数组(字节数组),一般在IO操作中使用
 字符串变为字节数组:public byte[] getBytes()
 将一个字节变为字符串:String: public String(byte[] bytes)
 将部分字节数组变为String:
 public String(byte[] bytes,int offset,int length)
     (4)取得一个字符串的长度:
        public int length()
     (5)查找指定字符串是否存在
        从String头开始查找指定字符串: public int indexOf(String str)
 从指定的位置开始查找指定的字符串:
 public int indexOf(String str,int fromIndex)
 返回值都为int类型,如果没有查找到则返回"-1";
     (6)去掉空格:
        使用trim()方法去掉字符串左右两端的空格,但是字符串中的空格
 是不能去掉的.
     (7)截取字符串:
        从指定位置开始一直截取到结尾位置:
 public String substring(int beginIndex)
 截取指定范围的字符串:
 public String substring(int beginIndex,int endIndex)
     (8)拆分字符串:
        public String[] split(String regex)
 regex表示是按照什么拆分
     (9)大小写转化:
        小写变大写: public String toUpperCase()
 大写变小写: public String toLowerCase()
     (10)判断是否以指定的字符串开头或结尾
       判断是否以指定的字符串开头: public boolean startsWith(String prefix)
       判断是否以指定的字符串结尾: public boolean endsWith(String prefix)
     (11)不区分大小写的比较:
       在String类中equals()方法比较字符串时时区分大小写的
       equalsIgnoreCase()方法是不区分大小写的
     (12)字符串的替换功能:
         public String replaceAll(String old,String new)
       

      

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值