时间 : 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(); }
-
局部内部类
定义在外部类方法中的,作用范围和创建对象范围仅仅限于当前方法
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常用类
四、包装类
什么是包装类?
- 基本的数据类型对应的应用数据类型
- 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]);
}
}