Java内部类与常用类
时间 : 2022年5月3日06点28分
主题 : java内部类与常用类
一、内部类
什么是内部类?
在类里面的类就是内部类
特点:
-  可以直接访问外部类的私有成员 
-  可以为外部类提供必要的内部功能组件 
内部类的分类:
-  成员内部类 public class InnerClassTest { public class InnerClassA { } }
-  静态内部类 一个类的静态成员独立于这个类的任何一个对象存在,只要在具有访问权限的地方,就可以通过 类名.静态成员名的形式public static void main(String[] args) { Inner_classes.demo_1 demo_1 = new Inner_classes.demo_1(); Inner_classes.demo_1.getName(); } 
-  局部内部类 定义在外部类方法中的,作用范围和创建对象范围仅仅限于当前方法 public static void demoTest_1(){ class demo{ } }
-  匿名内部类 特征: - 没有类名
- 必须计划曾一个父类或者是一个接口
- 定义类、实现类、创建对象的语法合并,只能创建一个该类的对象
 class demo{ Inner_classes.Inner inner = new Inner_classes.Inner(); Inner_classes.demo_1 demoTest = new Inner_classes.demo_1(); public static void main(String[] args) { Inner_classes.demo_1 demo_1 = new Inner_classes.demo_1(); Inner_classes.demo_1.getName(); Person_behavior person_behavior = new Person_behavior() { @Override public void run() { } @Override public void jump() { } @Override public void eat() { } }; } }
二、Object类
什么是Object?
- 基类、超类,所有类的直接或者是间接父类,位于继承树的最顶层
- 任何类,如果没有书写extends显示继承某个类,都默认为直接继承Object类,否则为间接继承
- Object类中所定义的方法,是所有对象都具备的方法
- Object类型可以存储任何方向 
  - 作为参数,可以接受任何对象
- 作为返回值,可以返回任何对象
 
三、Object常用类
getClass()方法
hashCode()方法
toString()方法
equals()方法
finalize()方法
四、包装类
什么是包装类?
- 基本的数据类型对应的应用数据类型
- Object可统一所有数据,包装类的默认值是Null
| 基本数据类型 | 包装类型 | 
|---|---|
| byte | Byte | 
| short | Short | 
| int | Inteage | 
| long | Long | 
| float | Float | 
| double | Double | 
| boolean | Boolean | 
| char | Character | 
五、String类
String是字符类:字符串是常量,创建后不可以改变
创建字符串 : String str = "字符串内容"
创建字符串对象 : String str = new String("调用构造方法创建字符串");
//直接创建
String s1 = "String_1";
String s2 = "String_1";
//引用
String s3 = s2;
//String对象创建
String s4 = new String("String_2");
String s5 = new String("String_3");
常用方法如 :
| 序号 | 方法 | 方法描述 | 
|---|---|---|
| 1 | public char charAt(int index) | 根据下标获取单个字符 | 
| 2 | public boolean contains(String str) | 判断当前字符串是否包含str | 
| 3 | public char[] toCharArray() | 将字符串转换成数组 | 
| 4 | public int indexOf() | 查找str首次出现的下标,存在,则返回该下标;不存在,则返回-1 | 
| 5 | public int lastIndexOf() | 查找字符串在当前字符串中最后一次出现的下标索引 | 
| 6 | public int length() | 返回字符串的长度 | 
| 7 | public String trim() | 去掉字符串前后的空格 | 
| 8 | public String toUpperCase() | 将小写转成大写 | 
| 9 | public boolean endWith(String str) | 判断字符串是否以str结尾 | 
| 10 | public String replace(char oldChar, char newChar) | 将旧字符串替换成新字符串 | 
| 11 | public String[] split(String str) | 根据str做拆分 | 
参考:菜鸟教程API
六、代码
// Copyright (c) 2022.
// Author : Nac.Jackson
// Blog : http://www.mikea.ltd
package demo_Inner_Classes;
import demo_interface.demo_Interface_info;
import java.util.Arrays;
import java.util.Locale;
/**
 * @Author : Nac.Jackson
 * @Date :2022 年 04 月 25 日 星期一
 * @Time :08 时 56 分 08 秒
 * @Description : 努力不完全,等于完全不努力。
 * @About : 内部类相关的测试
 */
public class Inner_classes {
    public static class Inner{
                public  Inner(String name, String age) {
                        this.name = name;
                        this.age = age;
                }
                public static String name;
                public static String age;
         public Inner() {
         }
         public String getName() {
                        return name;
                }
                public void setName(String name) {
                        this.name = name;
                }
                public String getAge() {
                        return age;
                }
                public void setAge(String age) {
                        this.age = age;
                }
        }
        Inner inner = new Inner("Tom","18");
    public static class demo_1{
        public static String getName() {
            return name;
        }
        public static void setName(String name) {
            demo_1.name = name;
        }
        public demo_1() {
        }
        public static String name;
    }
    public static void demoTest_1(){
        class demo{
        }
    }
}
class demo{
   Inner_classes.Inner inner = new Inner_classes.Inner();
   Inner_classes.demo_1 demoTest = new Inner_classes.demo_1();
    public static void main(String[] args) {
        Inner_classes.demo_1 demo_1 = new Inner_classes.demo_1();
        Inner_classes.demo_1.getName();
        demo_Interface_info person_behavior = new demo_Interface_info() {
            @Override
            public void run() {
            }
            @Override
            public void jump() {
            }
            @Override
            public void eat() {
            }
        };
    }
}
class main{
    public static void main(String[] args) {
        String s1 = " n A C j A C k S O n ";
        System.out.println("原文是"+s1);
        System.out.println("第二个字符是:"+s1.charAt(2));
        System.out.println("s1是否包含“A”"+s1.contains("A"));
        System.out.println("A第一次出现的下标是"+s1.indexOf("A"));
        System.out.println("A第二次出现的下标是"+s1.indexOf("A",s1.indexOf("A")+1));
        System.out.println("C最后出现的下标是"+s1.lastIndexOf("C"));
        System.out.println("C最后出现的下标是"+s1.lastIndexOf("C",s1.lastIndexOf("C")+1));
        System.out.println("s1的长度是"+s1.length());
        System.out.println("s1去掉前后的空格"+s1.trim());
        System.out.println("s1将小写转换成大写后"+s1.toUpperCase(Locale.ROOT));
        System.out.println("s1是否已空值结尾"+s1.endsWith(" "));
        System.out.println("s1更新"+s1.replace(s1,"NACJACKSON"));
        System.out.println("s1的拆分"+ Arrays.asList(s1.split( ",")));
        char[] s2 = s1.toCharArray();
        System.out.println(s2[2]);
    }
}










