字符串相关类,内部类

学习目标:

1.基本数据类型的包装类

2.String类、StringBuffer类、StringBuilder类

3.内部类

 

A.基本数据类型的包装类

   ·Java语言针对所有的基本数据类型都提供了对应的包装类

    

   a.包装类和基本类型

     (1)基本数据类型转换为包装类

          Integer  intValue=new  Integer(21);

     (2)包装类转换成基本类型

          Integer  intgerId=new Integer(25);

          Int  intId=integerId.intValue( );

   b.自动装箱、拆箱

      ·JDK5.0中为基本数据类型提供了自动装箱(boxing)、拆箱(unboxing)功能:

     (1)装箱:将基本数据类型包装为对应的包装类对象

     (2)拆箱:将包装类对象转换成对应的基本数据类型

          *包装类并不是用来取代基本类型的

                                   

             

           

              

              

B.字符串相关类

   a.String类

     (1)String代表字符串类型,字符串的内容本身不可改变,字符串存储

         于“字符串常量池”中

     (2)String的两种实例化方式

          a:直接赋值法:

            eg:  String str=“Hello World”;

            内存图:

            

          b:通过new操作符实例化:

            eg: String str=newString(“Hello World”);

            内存图:

              

      (3)一个字符串就是一个String类的匿名对象

           所谓匿名对象,就是在堆内存中开辟了空间,但在栈内存中并没有引用指向的对象

      (4)字符串常用方法

           String类的常用方法:

            1.public String(byte[] bytes)

             使用平台的默认字符集解码,将字节数组转换为字符串

 

            2.public String(byte[] bytes,Charset charset)

             使用指定字符集解码,将字节数组转换为字符串

 

            3.public char charAt(int index)

             根据索引位置获取字符串中的某个字符

 

            4.public boolean contains(CharSequence s)

             判断当前对象代表的字符串是否包含参数字符串内容

 

            5.public boolean equals(Object anObject)

             判断字符串内容是否相同

 

            6.public byte[] getBytes()

             将字符串转换为字节数组

 

            7.public int indexOf(String str)

             返回参数字符串在当前字符串中的索引位置

 

            8.public int lastIndexOf(String str)

             从后往前找参数字符串,返回参数字符串在当前字符串中的索引位置

 

            9.public int length()

             返回当前字符串的长度

 

           10.public String toLowerCase()

             将字符串转换为小写

 

           11.public String toUpperCase()

              将字符串转换为大写

 

           12.public char[] toCharArray()

              将字符串转换为字符数组

 

           13.public String substring(int beginIndex)

              从beginIndex索引位置开始,到字符串末尾,截取字符串

 

           14.public String substring(int beginIndex,int endIndex)

              从beginIndex索引位置开始,到endIndex-1,截取字符串

 

           15.public String trim()

              返回一个字符串,这个字符串删除了前导和尾随空格

            

             

                  

      (5)易错!!!

            eg1:

                

                     

              

            eg2:

               

                  

            eg3:

               

               

                        

      (6)练习

             1.编写程序,统计出字符串“wantyou to know one thing”

               中字母n和字母o的出现次数

               

                      

             2.分别截取字符串"   ABCmnyCW123   "中的"CmnyCW123"部分

               和"CW123"部分

               提示:会使用到indexOf(xx)lastIndexOf(xxx) substring(xxx)

                     trim()方法

               

                     

   b.StringBuffer类

      (1)StringBuffer代表可变的字符序列

           StringBuffer称为字符串缓冲区,它的工作原理是:预先申请一块内存,

           存放字符序列,如果字符序列满了,会重新改变缓存区的大小,以容纳

           更多的字符序列

     (2)StringBuffer是可变对象,这个是与String最大的不同(如果连续操作

          String对象,则会产生大量的“垃圾”,而且“断开-连接”很频繁)

          

             

          

               

          eg:String str="hello";

             for(int i=0;i<100;i++){

                   str+=i;

                   System.out.print(str);

             

             

        

       (3)StringBuffer类的常用方法

            

                  

   c.StringBuilder类

        StringBuilder和StringBuffer功能几乎是一样的,只是StringBuilder

       是线程不安全的

C.内部类

  ·在类的内部定义另一个类。如果在类Outer的内部再定义一个类Inner,

    此时Inner就称为内部类,而Outer则称为外部类

  ·内部类的定义格式:

    Public class 外部类{

       //外部类的成员

           Public class 内部类{

               //内部类的成员

           }

    }

  ·内部类在编译完成后也会产生.class文件,而文件名称则是

    “外部类名称$内部类名称.class

  ·使用内部类的原因

      1.比如:
        心脏属于人类的某个部分:但心脏不能简单用属性或者方法表示一个

        心脏,因为心脏也有自己的属性和行为,所以需要写在人类的内部

      2.好处:

       (1)可以方便地访问外部类的私有属性

       (2)减少了类文件编译后的产生的字节码文件的大小

        缺点:使程序结构不清楚

  a.成员内部类

     1.成员内部类中不能定义static变量

     2.成员内部类持有外部类的引用

     3.在文件管理方面,成员内部类在编译完成后也会产生.class文件,而文件

       名称则是”外部类名称$内部类名称.class”

     4.外部实例化成员内部类的格式:

       外部类.内部类  内部类对象=外部类实例.new 内部类();

                        

                        

                                   

  b.静态内部类

     1.如果一个内部类使用static声明,则此内部类就称为静态内部类,其实

       也相当于外部类。可以通过外部类.内部类来访问

     2.静态内部类不会持有外部类的引用,创建时可以不用创建外部类对象

     3.静态内部类可以访问外部的静态变量,如果访问外部类的非static成员变量

       必须通过外部类的实例访问

     4.外部实例化静态内部类对象的格式:

       外部类.内部类  内部类对象= new  外部类.内部类();

       

        

           

  c.局域内部类

     ·局域内部类是定义在一个方法中的内嵌类,所以类的作用范围仅限于该方法

       中,而类生成的对象也只能在该方法中使用

     ·局域内部类不能包含静态成员

     ·特别注意:局域内部类要想访问包含其的方法中的参数,则方法中的参数前

       必须加上final关键字(JDK<=1.7)

       


       

           

  d.匿名内部类

      1.如果一个内部类在整个操作中只使用一次的话,就可以定义为匿名内部类

      2.没有名字的内部类,这是java为了方便我们编写程序而设计的一个机制,

        因为有时候有的内部类只需要创建一个它的对象就可以了,以后再不会用

        到这个类,这时候使用匿名内部类就比较合适

         

         

              

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值