字符串
概述
java.lang.String 类代表字符串。
程序当中所有的双引号字符串,都是String类的对象。(就算没有new,也是)
-
字符串不变:字符串的值在创建后不能被更改。【重点】
-
因为String对象是不可变的,所以它们可以被共享。
-
字符串效果上相当于是char[]字符数组,但是底层原理是byte[]字节数组
-
三种构造方法:
public String() :创建一个空白字符串,不含任何内容。
public String(char[] value) :通过当前参数中的字符数组来构造新的String。
public String(byte[] bytes) :通过使用平台的默认字符集解码当前参数中的字节数组来构造新的 String。
-
一种直接构造:
String str = "xxx";
程序当中直接写上的双引号字符串,就在字符串常量池中。
内存图:
注意事项:
-
对于引用类型来说,==进行的是地址值的比较
-
双引号直接写的字符串在常量池中,new的不在常量池中
字符串的比较相关方法
public boolean equals (Object anObject)
将此字符串与指定对象进行比较。 参数可以是任意对象,只有参数是一个字符串且内容相同的才会给ture,否则返回false。
-
任何对象都能用Object接收
-
equals方法具有对称性,也就是a.equals(b)和b.equals(a)效果一样
-
如果比较双方一个常量一个变量,推荐把常量字符串写在前面
推荐:"abc".equals(str) 不推荐:str.equals("abc")
public boolean equalsIgnoreCase (String anotherString)
将此字符串与指定对象进行比较,忽略大小写。
字符串的获取相关方法
public int length () ;
返回此字符串的长度。
public String concat (String str) ;
将指定的字符串连接到该字符串的末尾。 返回新的字符串。
public char charAt (int index) ;
返回指定索引处的 char值。
public int indexOf (String str) ;
返回指定子字符串第一次出现在该字符串内的索引。 如果没有返回-1值。
字符串的截取方法
public String substring (int beginIndex) ;
返回一个子字符串,从beginIndex开始截取字符串到字符串结尾。
public String substring (int beginIndex, int endIndex) ;
返回一个子字符串,从beginIndex到endIndex截取字符串。含beginIndex,不含endIndex。
字符串的转换方法
public char[] toCharArray () ;
将此字符串转换为新的字符数组。
public byte[] getBytes () ;
使用平台的默认字符集将该 String编码转换为新的字节数组。
public String replace (CharSequence target, CharSequence replacement) ;
将与target匹配的字符串使用replacement字符串替换。
字符串的分割方法
public String[] split(String regex) ;
将此字符串按照给定的regex(规则)拆分为若干字符串数组。
split方法的参数其实是一个“正则表达式”,如果按照英文句点“.”进行切分,必须写“\\.”(两个反斜杠)
Static关键字
它可以用来修饰的成员变量和成员方法,被修饰的成员是属于类的,而不是单单是属于某个对象的。也就是说,既然属于类,就可以不靠创建对象来调用了。 凡是本类的对象,都共享同一份。
调用Static修饰的成员变量/方法
无论是成员变量,还是成员方法。如果有了Static,都推荐使用类名称进行调用。
// 访问类变量 类名.类变量名; // 调用静态方法 类名.静态方法名(参数);
-
静态不能直接访问非静态
原因:因为在内存当中是【先】有的静态内容,【后】有的非静态内容
-
静态方法当中不能使用this
原因:this代表当前对象,通过谁调用的方法,谁就是当前对象
静态Static的内存图
静态代码块
格式:
public class ClassName{ static { // 执行语句 } }
特点:当第一次用到本类时,静态代码块执行唯一的一次。
静态内容总是优先于非静态,所以静态代码块比构造方法先执行
典型用途:用来一次性地对静态成员变量进行赋值
数组工具类Arrays
用于实现数组常见的操作
public static String toString(数组) ;
返回指定数组内容的字符串表示形式。[元素1,元素2,元素3...]
public static void sort(数组) ;
对指定的数组按默认升序进行排序。
备注:
-
如果是数组,sort默认按照升序从小到大
-
如果是字符串,sort默认按照字母升序
-
如果是自定义的类型,那么这个自定义的类需要有Comparable或者Comparator接口的支持
数学工具类Math
完成于数学运算相关的操作
public static double abs(double a) ;
返回 double 值的绝对值。
public static double ceil(double a) ;
返回大于等于参数的最小的整数。
public static double floor(double a) ;
返回小于等于参数最大的整数。
public static long round(double a) ;
返回最接近参数的 long。(相当于四舍五入方法)。
Math.PI
代表近似的圆周率常量(double)。