5.java-String,arraylist常用API

String,arraylist常用API

在自己程序中调用其他包的程序的注意事项

  • 如果在当前程序中,要调用自己所在包下的其他程序,可以直接调用。(同一个包下的类可以相互调用)
  • 如果在当前程序中,要调用其他包下的程序,则必须在当前程序中导包,才可以访问!(导包格式:import 包名.类名;)
  • 如果在当前程序中,要调用Java提供的程序,也需要先导包才可以使用;但是Java.lang包下的程序是不需要导包,可以直接使用
  • 如果在当前程序中,要调用多个包下的程序,而这些程序名正好一样,此时默认只能导入一个程序,另一个程序必须带包名访问。

String

String创建对象封装字符串数据的方式

方式一:直接双引号得到字符串对象,并封装字符串数据

方式二:调用String类的构造器初始化字符串对象

//创建一个空白字符串对象,不含有任何内容
String rs1 = new String();
//根据传入的字符串内容,来创建字符串对象
String rs2 = new String("it");
//根据字符数组的内容,来创建字符串对象
char[] chars = {'a', '黑','小'}; 
String rs3 = new String(chars);
//根据字节数组的内容,来创建字符串对象
byte[] bytes = {97,08,99};
String rs4 = new String(bytes);
String常用方法
遍历方法
字符串的遍历就是将字符串中的每一个字符一一获取出来
**int length()**:获取字符串的长度
**char charAt(int index)**:获取指定索引处的字符
**char[] toCharArray()**:将字符串转为字符数组(将字符串转换为字符数组)

注:字符串也是有索引的,用于对其中的字符进行编号,编号也是从0开始的,最大的索引值是字符串的长度-1

判断方法
**boolean equals(Object anObject)**:判断两个字符串的内容是否相等,区分大小写
**boolean equalsIgnoreCase(String anotherString)**:判断两个字符串的内容是否相等,不区分大小写
使用场景:验证码
**boolean startsWith(String prefix)**:判断一个字符串是以某个字符串开头
**boolean endsWith(String suffix)** :判断一个字符串是以某个字符串结尾
**boolean contains(String s)**:判断一个字符串中是否包含指定的字符串

其他方法
**String[] split(String regex)**:切割字符串并返回字符串数组回来
**String substring(int beginIndex)**:截取,从指定位置(包含)截取到末尾
**String substring(int beginIndex, int endIndex)**:截取,从指定位置开始(包含)截取到指定位置结束(不包含)
**String replace(String target, String replacement)**:替换
**int lastIndexOf** 判断字符或字符串最后出现的位置
**int indexOf**判断字符或字符串第一次出现的位置(**如果没有找到就返回-1**)
**toLowerCase** 把字符串转换为小写
**toUpperCase** 把字符串转换为大写

indexOf没有找到返回-1的用法:

public class Itheima {
 private int count(String str, String animal) {
     int count = 0, index = -1;
     while (true){
         // 从指定索引index+1开始找下一个animal出现的位置
         index = str.indexOf(animal, index + 1);
         if (index != -1) {
             // 找到了
             count++;
         } else {
             // 没找到
             break;
         }
     }
     return count;
 }
 public boolean catDog(String str) {
     int a = count(str,"cat");
     int b = count(str,"dog");
     return a==b;
 }

String使用时的注意事项

1.String对象的内容不可改变,被称为不可变字符串对象(每次试图改变字符串对象实际上是新产生了新的字符串对象了,变量每次都是指向了新的字符串对象,之前字符串对象的内容确实是没有改变的,因此说String的对象是不可变的。)

2.只要是以“…"方式写出的字符串对象,会存储到字符串常量池,且相同内容的字符串只存储一份;
但通过new方式创建字符串对象,每new一次都会产生一个新的对象放在堆内存中。

(字符串拼接实际上是调用StringBuilder创建一个对象调用方法拼接产生一个新的字符串,对象New出来的所以在堆内存中,不在字符串常量池)

public class Test3 {
public static void main(String[] args) {
String s1 ='"abc" ;
String s2 = "ab";
String s3 = s2 + "c";
System. out. println(s1 == s3);//fales
	}
}
public class Test4 {
public static void main(String[] args) {
String s1 = "abc";
String s2 = "a"+"b"+"C";//常量优化,直接出结果
System. out. println(s1 == s2);//true,
	}
}

面试题:==和equals的区别:

==是关系运算符。既可以对基本类型进行比较,也可以对引用类型进行比较

比较基本类型数据是比较数据值是否相等

比较引用类型的数据,比较地址值是否相等

equals是一个方法,只能对引用类型的数据进行比较,不能对基本类型的数据进行比较。
比较引用类型数据的时候,如果没有修改比较的规则,则比较地址值,如果修改了比较的规则,则比较内容(String字符串就修改了规则,比较的是内容)

ArrayList

集合是一种容器,用来装数据,类似于数组

集合大小可变,开发中用的更多

ArrayList是集合最常用的一种,ArrayList是泛型类,可以约束存储的数据类型。

//< >:泛型(广泛的类型、泛泛的类型、未知的类型)
//但是泛型只能是引用类型,不能是基本类型
//泛型用于限制往集合中存储的元素的数据类型

ArrayList构造器:

创建对象,调用无参数构造器初始化对象:

public ArrayList();

ArrayList常用方法

1 public boolean add(E e)
将指定的元素添加到此集合的末尾
2 public void add(int index,E element)
在此集合中的指定位置插入指定的元素
3 public E get(int index)
返回指定索引处的元素
4 public int size()
返回集合中的元素的个数
5 public E remove(int index)
删除指定索引处的元素,返回被删除的元素
6 public boolean remove(Object 0)
删除指定的元素,返回删除是否成功
7 public E set(int index,E element)
修改指定索引处的元素,返回被修改的元素

//**删除集合中包含枸杞的每个元素**
//方式一:每次删除-一个数据后,就让i往左边退一步
for (int i =0; i < list.size(); 1++) 	{
	//取出当前遍历到的数据
	String ele = list.get(i);
	//判断这个数据中包含枸杞
	if(ele. contains("枸杞")){
	 //直接从集合中删除该数据
		list. remove(ele);
		1--;
	}
}
System. out. println(list);
//方式二:从集合的后面倒着遍历并删除
for (int i = list.size() - 1; i >=0; 1--) {
	//取出当前遍历到的数据
	String ele = list.get(i);
	//判断这个数据中包含枸杞
	if(ele.contains("枸杞")){
	//直接从集合中删除该数据
	list.remove(ele);
		}
	}
	System . out . println(list);
}

你可能感兴趣的:(java,开发语言)