Java---string类和内部类

string类

  • String 类又称作不可变字符序列
  • String 位于java.lang包中,Java程序默认导入java.lang包下的所有类
  • Java字符串就是Unicode字符序列
  • Java没有内置的字符串类型,而是在标准java类库中提供了一个预定义的类String,每个用双引号括起来的字符串都是String类的一个实例。

 String 常用的方法

如图

 

 实际运用:

package com.jxust.inclass;

public class bb {
    public static void main(String[] args) {
        String s1="core Java";
        String s2="Core Jave";

        System.out.println(s1.charAt(3));//提取下标为3的字符
        System.out.println(s2.length());//字符串的长度
        System.out.println(s1.equals(s2));//比较俩个字符串是否相等

        System.out.println(s1.equalsIgnoreCase(s2));//同上 但忽略大小写
        System.out.println(s1.indexOf("Java"));//字符串s1中是否包含apple
        String s=s1.replace(' ','&');//将s1中的空格替换为&
        System.out.println(s);
    }
}

内部类

定义:把一个类放到另外一个类的内部定义,称为内部类

 内部类的俩个要点:

  • 内部类提供了更好的封装。只能让外部类直接访问,不允许同一个包中的其他类直接访问
  • 内部类可以直接访问外部类的私有属性,其被当作外部类的成员变量。但是外部类不能直接访问内部类的内部属性

非静态内部类

  1. 非静态内部类对象必须寄存在一个外部类对象里。因此,如果有一个非静态内部类 对象那么一定存在对应的外部类对象。非静态内部类对象单独属于外部类的某个对象
  2. 非静态内部类可以直接访问外部类的成员,但是外部类不能直接访问非静态内部类
    成员。
  3. 非静态内部类不能有静态方法、静态属性和静态初始化块。
    成员变量访问要点:
            1  内部类属性:this.变量名
            2  外部类属性:外部类名.this.变量名
    内部类的访问:
    1   外部类中定义内部类:new Inner();
    2   外部类以外的地方使用非静态内部类
              :  Outer.Inner  ss= new Outer().new Inner();

     

    静态内部类

         static  class ClassName{

         //类体

}

1.静态内部类可以访问外部类的静态成员,不能访问外部类的普通成员

2.静态内部类看做外部类的一个静态成员

匿名内部类

   适合那种只需要是用一次的类。在安卓开发、awt、swing 开发中常见。

语法:

   new  父类构造器(实参类表)\ 实现接口  (){   

//匿名内部类类体

}

局部内部类

定义在方法内部的,作用域只限于本方法,称为局部内部类。

package com.jxust.inclass;

import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;

// 外部类
public class outer1 {

     private int age =10;
     private void show(){
         System.out.println("NB");
     }
//内部类
     public class Inner{
         private String name="WJH";
        private int age=20;

        public  void showInner(){
            System.out.println("LBWNB");
            System.out.println(age);
            System.out.println(outer1.this.age);
            //当外部类属性与内部类属性重名时,可以通过:outer1.this.age

            show();//内部类可以直接使用外部类的成员
        }
     }

    public static void main(String[] args) {

         outer1.Inner inner1=new outer1().new Inner();

         inner1.showInner();

         outer1 out2=new outer1();
         Inner inner2=out2.new Inner();
         inner2.showInner();
     }

}
package com.jxust.inclass;

public class Face {

    private String shape="螺旋脸";

    class Nose{
        private  String shape="牛马";

        public void breath(){
            System.out.println("鼻子长在了"+Face.this.shape+"形状的脸上");
            System.out.println("呼吸 呼吸 呼吸");
        }

    }

    public static void main(String[] args) {
        Face.Nose nose=new Face().new Nose();
        nose.breath();

    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值