202011.19

今日内容:

  • String 类
  • static 关键字
  • Arrays 类
  • Math 类
  • 三大特性---继承
  • 方法重写
  • super关键字
  • this关键字
  • 抽象类

String类

创建String常见3+1方式

1.public String() 空白字符串,不包含任何内容

​ 2.public String(char[] array) 根据字符数组内容,来创建对应字符串

3.public String(byte[] array) 根据字节数组内容,来创建对应字符串

三种构造方法:即使内容一样,但是因为new了所以都会产生新的内存地址,在堆内存之中,

char[] array={'A','B','C'};
String str=new String(array);

解释:此三种内存都需要,提前创造一个例如char[] array={'A','B','C'};传入第二种方式char[] 会产生一个堆中的内存,第二种方式的String也会产生一个堆中的内存放char[],所以我们查找是通过String内存找到char[]内存,从而输出。其他的同理:

一种直接创建:

String str="值"; 直接创建,直接用双引号,系统也会认定为字符串对象

String str1="aaa";
String str2="aaa";
//str1和str2的内存地址一样,都在堆内存中的字符串常量池

解释:这种创建方式,创建的字符串数据是直接存放在堆内存中的字符串常量池内,不同的是这个如果字符串一样,那么他们的内存地址是完全一样的,不会创建新的内存。

备注:关于==号

1.字符串之间用==判断,判断的是字符串的内存地址

2.基本数据类型用双==直接判断数值

String常用方法

判断功能:2个

public boolean equals(Object o) 将次字符串与指定对象进行比较,参数不能为null,进行内存地址和内容双重判断,符合其中一个就返回true.如果比较双方是一个常量和一个变量,建议把常量放在字符串的前面 常量.equals(变量);不建议----》变量.equals(常量)。因为此时如果变量为null就会产生空指针异常,null在前面才会空指针

​public boolean equalsIgnoreCase(String anotherString) 将此字符串与指定对象比较,忽略英文字母大小写,进行内存地址和内容双重判断,符合其中一个就返回true

nstanceof:类型判断,判断是否属于同一数据类型

获取功能

1.public int length; 返回字符串长度

2.public String concat(String str): 将指定字符串连接到该字符串末尾

3.public char charAt(int index) 返回索引位置的char值

4.public int indexOf(String str): 返回·指定的字符串第一次出现在该字符串的索引值

5.public String substring(int beginindex): 返回一个子字符串,从beginindex开始,截取到该字符串末尾

6.public String substring(int beginindex,int endindex); 截取从beginindex到endindex中间的索引,[beginindex,endindex). endindex<=String.length;注意截取出来的字符串对象是一个新的字符串对象,重新开辟内存在堆里面,和字符串常量池里面的字符串内存地址不相等

转换功能:

1.public char[] toCharArray(): 将此字符串转换为新的字符数组。

2.public byte[] getBytes(); 使用平台默认字符集,将该字符串编码转换为新的字节数组

3.public String replace(CharSequence oldStringt,CharSequence newString): 将所有出现的老的字符串替换为新的字符串,返回的是新的字符串。

备注:CharSequence是一个接口,也是应用数据类型,意思就是可以接受字符串参数数据类型

练习1:定义一个方法,把数组{1,2,3,4}按照指定格式拼接称为一个字符串

格式:[1#2#3#4] Test1

练习2:统计字符个数,键盘录入一个字符串,统计字符串中大小写字母以及数字的个数Test2

Static关键字

=概述:

static关键字的使用可以修饰成员变量和成员方法,被修饰之后就属于静态的,属于类的,不单单是属于某个对象的,就是说不再通过创建对象来调用类中的静态成员信息

定义和使用格式:

类变量

当成员变量被static修饰,该变量称为【类变量】,类变量,该类的每一个对象都可以【共享】同一个类变量的值,热河对象都可以更改类变量,类变量灵活度更高,

ststic 数据类型 变量名;
    static int roomId;

静态方法

当成员方法被static修饰,称为类方法,类方法通过类名直接调用,不用创建对象称之为【静态方法】 类名.方法名()

修饰符 static 返回值类型 方法名(参数列表){
    //方法体内容
}
public static String arrayToString(int[] arr){
    //方法体
    //必须有return
}

静态方法调用注意事项

1.静态方法可以直接访问静态变量和静态方法,

2.静态方法【不能直接访问】成员变量和成员方法,反之成员方法可以直接访问静态变量和静态方法

3.静态方法不能使用this关键字

调用格式:

//静态方法一般建议使用类调用,可以使用对象调用,但是程序会出现警告信息,不建议使用
类名.静态方法名(参数列表);
类名.静态类变量名;

备注:不能直接访问的,都通过实例化对象调用

静态原理解释:静态方法在栈空间,静态变量在除了栈之外的jvm空间,

Static操作注意事项:

​1.static修饰的内容,随着类的加载而加载,只会加载一次。

2.存储于一块固定的内存区域(静态域),所以被类直接调用

3.他优先于对象,对象未存在,static修饰的信息早就存在了,使用可以被类的所有对象共享。

静态代码块

什么是静态代码块:被static修饰的代码块 { } ,定义在成员变量位置。

1.位置:类中方法外,方法里面没有

=2.执行:随着类的加载而加载,而且之只会加载一次,优先于main方法和构造方法加载

静态代码块格式

public class className{
    //静态代码块不能写在方法里面
    static{
        //多条执行语句  
    }
    public static void main(String[] args){    
    }

}

例如:

 //斗地主,三个成员
public class Game{
    private static int number;		//玩家数量
    private static ArrayList<Menber> list;		//玩家们 Member类,成员类
    
   stctic{	//提前初始化信息,下面的就不需要了,但是上面的变量必须是静态的成员变量
       number=3;
       numbers=new ArrayList<>();
       //添加玩家
        list.add("小刘");
        list.add("小张");
        list.add("小花");
   }
    
}

public class TestGame{
    public static void main(String[] args){
        /*
     	ArrayList<String> list=new ArrayList<>();
        list.add("小刘");
        list.add("小张");
        list.add("小花");
        */
        
    }
}



备注:static可以修饰成员变量成员方法代码块,如果不想在不创建对象的的情况下去调用成员变量和成员方法,可以定义成静态变量和静态方法,静态代码块通常作用静态变量和静态方法

Arrays类:

原文地址:https://www.cnblogs.com/tushao/p/14008893.html