day09_String类 和 static关键字
今日内容
- String类
- Static关键字
String类
三种构造方法:
public String() : 创建一个空白的字符串,不包含任何内容
格式:
String str = String()
public String(char[] array): 根据字符数组的内容,来创建对应的字符串
public String(byte[] array): 根据字节数组内容,来创建对应的字符串
一种直接创建:
String str = “abc”//右边直接用双引号
如果用双引号包裹,一定是在堆中的字符串常量池中,也是一个对象,String str对应的地址值是堆中的字符串常量池中的对象,常量池中的对象的地址值指向byte[]字节组
备注:直接写上双引号,系统也会认定字符串对象。
1.对于引用类型来说,==进行的是地址值比较
2.对于基本数据类型来说,==比较的是数值
3.双引号直接写的字符串在常量池当中,new的string形式不在常量池当中
常用方法
判断功能的方法
public booean equals(Object anObject): 将此字符串与指定对象进行比较
public boolean equalslngoreCase(String anotherString):将此范围的
获取功能
public int length(): 返回字符串的长度
public String concat(String str): 将指定的字符串连接到该字符串的末尾
public char charAt(int index): 返回指定索引处的char值
public int indexOf(String str): 返回指定的子字符串第一次出现在该字符串内的索引值,如果找到返回子字符串第一个字符所在的索引值,如果没有找到则返回
public String substring(int beginIndex): 返回一个子字符串,从beginlndex开始截取该字符串到该字符串的末尾
public String substring(int beginIndex,int endIndex): 返回一个子字符串,从beginIndex 到endIndex区间截取该字符串,包含beginIndex索引处的值,不包含endIndex索引处的值。左闭右开。
转换功能
public char[] toCharArray(): 将此字符串转换成新的字符数组
public byte[] getBytes(): 使用平台默认的字符集将该字符串编码转换成新的字节数组。
public String replace(CharSequence oldString,CharSequence newString): 将所有出现的老的字符串换成新的字符串,返回替换掉之后的新的字符串
备注:CharSequence是一个接口,也是一种引用数据类型,意思就是可以接收字符串参数数据类型
Static关键字
也就是,既然属于类的,那就不需要通过创建对象来调用类中的成员信息。
定义和使用格式
静态类变量
定义格式:
static 数据类型 变量名
static int Xxxx;
静态类方法:
当成员方法一旦被static关键字修饰时,该方法称为【类方法】。类方法一般是通过类名直接调用,而不需要单独创建对象来调用。调用方式很简单。习惯称为【静态方法】。可以通过类直接调用,所以不用封装
定义格式:
修饰符 static 返回值类型 方法名(参数列表){ //方法体内容 }
例如:
public static String Xxxx(int[] arr){ //方法体内容就是如何 //...... //必须有返回语句 return 返回值; }
静态方法调用的注意事项
静态方法可以直接访问类变量和静态方法
静态方法不能直接访问普通的成员变量和成员方法。反之,成员方法可以【直接访问】类变量和静态方法
静态方法中不能使用this关键字。
调用格式
静态方法建议通过类来调用,但是也可以通过对象来调用,会出现警告信息(不建议使用对象来调用)
格式
//访问类变量 类名.类变量名; //访问静态方法 类名.静态方法名(参数);
备注:这些不能直接访问的成员信息,可以间接的通过实例化对象来调用
static修饰的内容
是随着类的加载而加载而且只会加载一次
存储于一块固定的内存区域(在静态域),所以,可以被类直接调用。
他优先于对象存在,所以可以被类的所有对象所共享。
静态代码块
静态代码块:定义在成员变量位置,被static修饰的代码块{}
位置:类中方法外
执行:随着类的加载而加载而且只会加载而且只会执行一次,优先于main方法和构造方法执行
格式:
public class ClassName{ static{ //执行语句 多条执行语句。 //..... } public static void main(String[] args){ //static {}在方法内是错误的 } }
备注:static 可以修饰成员方法,成员变量,代码块。在使用过程中,如果你不想在不创建对象的情况下,去调用成员变量,成员方法,可以定义乘静态的。对应于静态代码块来说,通常作用是对类中的成员变量进行初始化。