Java内部类与常用类


时间 : 2022年5月3日06点28分

主题 : java内部类与常用类

作者 : NacJackson


一、内部类

什么是内部类

在类里面的类就是内部类

特点

  • 可以直接访问外部类的私有成员

  • 可以为外部类提供必要的内部功能组件

内部类的分类

  • 成员内部类

    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();
    }
    

    image-20220426171609833

  • 局部内部类

    定义在外部类方法中的,作用范围和创建对象范围仅仅限于当前方法

    public static void demoTest_1(){
        class demo{
    
        }
    }
    
  • 匿名内部类

    特征:

    1. 没有类名
    2. 必须计划曾一个父类或者是一个接口
    3. 定义类、实现类、创建对象的语法合并,只能创建一个该类的对象
    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
基本数据类型包装类型
byteByte
shortShort
intInteage
longLong
floatFloat
doubleDouble
booleanBoolean
charCharacter

五、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");
公共池
指向公共池
指向公共池
指向公共池
String_2
公共池
String_1
s1
s2
s3
s4
s5

常用方法如 :

序号方法方法描述
1public char charAt(int index)根据下标获取单个字符
2public boolean contains(String str)判断当前字符串是否包含str
3public char[] toCharArray()将字符串转换成数组
4public int indexOf()查找str首次出现的下标,存在,则返回该下标;不存在,则返回-1
5public int lastIndexOf()查找字符串在当前字符串中最后一次出现的下标索引
6public int length()返回字符串的长度
7public String trim()去掉字符串前后的空格
8public String toUpperCase()将小写转成大写
9public boolean endWith(String str)判断字符串是否以str结尾
10public String replace(char oldChar, char newChar)将旧字符串替换成新字符串
11public 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]);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值