java学习day04
String类
String是不可变的
关于String类中的构造方法
String s = new String(""); String s = ""; String s = new String(char数组); String s = new String(char数组,起始下标,长度); String s = new String(byte数组); String s = new String(byte数组,起始下标,长度);
String字符串的存储原理
关于java JDK内置的一个类java.lang.String
String表示字符串型,属于引用数据类型,不属于基本数据类型
在java中使用双引号括起来的都是String对象
在java中字符串是不可变的,字符串存储在方法区的字符串常量池中
String类的常用方法
char charAt(int index)
返回指定索引值的char值
int compareTo(Strin anotherString)
按字典顺序比较两个字符串
public class Demo2 { public static void main(String[] args) { int result = "abc".compareTo("abc"); System.out.println(result);//0(等于0)前后一致 int result1 = "abcd".compareTo("abce"); System.out.println(result1);//-1(小于0)前小后大 int result2 = "abce".compareTo("abcd"); System.out.println(result2);//1(大于0)前大后小 } }
boolean contains(CharSequence s)
判断前面字符串是否包含后面的子字符串
boolean endsWith(Stiring suffix)
判断当前字符串是否以某个字符串结尾
boolean equalslgnoreCase(String anotherString)
判断两个字符串是否相等,并且同时忽略大小写
byte[] getBytes()
将字符串对象转换成字节数组
int indexOf(String str)
判断某个子字符串在当前字符串中第一次出现的索引(下标)
boolean isEmpty()
判断某个字符串是否为空
int length()
判断字符串长度
int lastIndexOf(string str)
判断某个字符串中最后一次出现的索引(下标)
String replace(CharSequence target,CharSequence replacement)
替换
String[] split(String regex)
拆分字符串
boolean startsWith(String prefix)
判断某个字符串是否以某个字符开始
String substring(int beginIndex)
截取字符串,参数是起始下标
String substring(int beginIndex,int endIndex)
截取字符串
左闭右开
beginIndex起始位置(包括)
endIndex起始位置(不包括)
char[] toCharArray()
将字符串转换为char数组
String toLowerCase()
转换为小写
String toUpperCase()
转换为大写
String trim()
去除字符串前后空白,不会去除中间空白
valueOf()
String中的静态方法
将非字符串转换为字符串
字符串拼接
StringBuffer
public class Demo2 { public static void main(String[] args) { //创建一个初始化容量为16byte[]数组(字符串缓冲区对象) StringBuffer stringBuffer = new StringBuffer(); //拼接字符串,以后拼接字符串统一调用append()方法 //append是追加的意思 stringBuffer.append(“a”); stringBuffer.append(“b”); stringBuffer.append(“d”); stringBuffer.append(3.14); stringBuffer.append(true); //append()方法底层在进行追加的时候如果byte数组满了,会自动扩容 } }
创建StringBuffer对象时会默认初始化一个16byte[]数组
append()进行追加
若数组满了会自动进行扩容
在创建StringBuffer对象时最好能给定一个初始化容量,减少扩容次数
StringBuilder
StringBuilder和StringBuffer一样都可以进行字符串的拼接
不同点:StringBuffer是线程安全的,StringBuilder是非线程安全的
数组
数组的定义
数组是相同类型数据的有序集合,数组描述的是相同类型的若干数据结构,按照一定的先后次序排列组合而成,其中每一个数据称作一个数组元素,每个数组元素都可以通过下标访问,数组下标从0开始
数组的声明创建(一维数组)
数组必须先声明才能使用
静态初始化
数据类型[] 数组名 = {元素0,元素1,元素2};
int[] array = {1,2,3};
动态初始化
数据类型[] 数组名 = new 数据类型[数组长度];
int[] array = new int[3];
数组的声明创建(二维数组)
静态初始化
数据类型[][] 数组名 = {{元素0,元素1},{元素0,元素1},{元素0,元素1}};
int[][] arr = {{1,2,3},{1,2,3}};
动态初始化
数据类型[][] 数组名 = new 数据类型[数组长度][数组长度];
int[][] arr = new int[2][3];
数组的特点
数组一旦被创建长度就不可变
数组中的元素必须是相同类型,数组元素可以是任意类型
数组属于引用数据类型
数组存放在堆中
数组下标越界异常
因为数组下标从0开始,所有数组的下标范围是[0~length-1]
ArraylndexOutOfBoundsException:数组下标越界异常
数组的基本操作
访问数组元素:数组名[下标]
length属性:获取数组长度
遍历数组的两种方法
第一种普通for循环
第二种增强for循环
public class Demo2 { public static void main(String[] args) { int[] arr = new int[5];
for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); } for (int i:arr) { System.out.println(i); } } }
常用方法(静态方法,在Array类中)
数组替换:
fill(int[] a,int value):a(要进行替换的数组),value(替换后的值)
fill(int[] a,int fromIndex,int toIndex,int value):fromIndex(替换元素的第一个元素下标,包括),toIndex(替换元素的最后一个元素下标,不包括)
排序:
sort(object):object(数组名字),注意若数组元素是String类型则使用字典顺序进行排序
复制数组:
copyOf(arr,int newlength):arr(要进行复制的数组),newlength(指复制后的新数组的长度,若新数组长度大于arr数组长度则用对应的默认值进行填充
copyOfRange(arr,int fromIndex,int toIndex):fromIndex(指定开始复制的数组的下标位置,包括),toIndex(指复制的最后一个元素的下标,不包括)
数组查询:
binarySearch(Object[] a,Object key):使用二分查找法来搜索指定数组,a(要搜索的数组),key(要搜索的值),返回值是索引
binarySearch(Object[] a,int fromIndex,int toIndex,Object key):fromIndex(指定范围搜索的开始下标,包括),toIndex(指定范围搜索的结束下标,不包括),key要搜索的元素

浙公网安备 33010602011771号