常见API(String,ArrayList)

一,什么是api

1.全称应用程序编程接口,就是java自己写好的程序,给程序员调用的,方便完成一些功能

2.API文档:程序使用说明书

二,String

1.是什么?

String是字符串类型,它定义的变量可以指向一个字符串对象

2.String是不可变字符串

3.String创建对象的方式

(1)直接用双引号围起来String name="黑马";

(2)new构造器得到的字符串对象

public String() //创建一个空白字符串对象,不含有任何内容
public String(String origins)//根据传入的字符串内容,来创建字符串对象
public String(char[] chs)//根据字符数组的内容,来创建字符串对象
public String(byte[] chs)//根据字节数组的内容,来创建字符串对象

(3)两种方式的区别*

双引号给出的字符串对象,存在于对内存中的常量池中,相同的内容只会存储一份

new字符串每new一次都会在堆内存中产生一个字符串对象

public class Test{
    public static void main (String[] args){
        String s1="abc";
        String s2="abc";
        System.out.println(s1==s2);//true
}
}
public class Test{
    public static void main(String[] args){
        char[] chs={'a','b','c');
        String s1=new String(chs);
        String s2=new String(chs);
        System.out.println(s1==s2);//false
}
}
public class Test2{
    public static void main(String[] args){
        String s1=new String("abc");
        String s2="abc";
        System.out.println(s1==s2);//false
/**
第一行代码实际上创建了两个对象,一个“abc”在堆内存中的常量池中,另一个new出一个对象在堆内存中;第二行代码实际上创建了0个对象,因为“abc”常量池中已有(不会重复,节约内存)
*/
}
}
public class Test3{
    public static void main(String[] args){
        String s1="abc";
        String s2="ab";
        String s3=s2+"c";
        System.out.println(s1==s3);//false
/**
s2在常量池中,在计算s3时会用常量池中的"ab"与"c"在堆内存中进行运算,计算结果放在堆内存中(s3不是直接由""引用起来的,不会在常量池中)
*/
}
}
public class Test4{
    public static void main(String[] args){
        String s1="abc";
        String s2='a'+'b'+'c';
        System.out.println(s1==s2);//true
/**
Java存在编译优化机制,程序在编译时:"a"+"b"+"c"会直接转成"abc"
*/
}
}

4.String的常用方法(常用API)

判断字符串内容

(1)背景:==判断字符串是判断地址的,这样会引起很多业务问题。

(2)必要性:判断字符串开发中更多时候希望判断内容一样就返回true,不在乎地址是不是一样,此时需要用equals方法。

//方法名            说明
public boolean equals(Object anObject)//将此字符串与指定对象进行比较,只关心字符内容是否一致!
public boolean equalseIgnoreCass(String anObjectString)//将此字符串与指定对象进行比较,忽略大小写比较字符串,只关心字符串内容是否一致!

(3)结论:之后只要是字符串进行内容比较,那必须使用字符串的equals方法

(4)结论2:什么时候用==比较?基本数据类型的比较,那就用==(基本数据类型里面就存的数据,引用数据类型不行,字符串记录的是地址)

其他常用方法

public class StringDemo2 {
    public static void main(String[] args) {
        //目标:快速熟悉String提供的处理字符串的常用使用方法
        String s="黑马Java";
        //1.在数据中的长度
        System.out.println(s.length());
        //2.数据字符串中某个索引位置处的字符
        char c=s.charAt(1);
        System.out.println(c);

        //字符串的遍历
        for (int i = 0; i < s.length(); i++) {
            char ch=s.charAt(i);
            System.out.println(ch);
        }
        System.out.println("----------------");
        //3.把字符串替换成字符数组,再进行遍历
        char[] chars=s.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            System.out.println(chars[i]);
        }
        //4.判断字符串内容,内容一样就返回true
        String s1=new String("黑马");
        String s2=new String("黑马");
        System.out.println(s1==s2);
        System.out.println(s1.equals(s2));
        //5.忽略大小写比较字符串内容
        String c1="34AeFG";
        String c2="34aEfg";
        System.out.println(c1.equals(c2));
        System.out.println(c1.equalsIgnoreCase(c2));
   //6.截取字符串内容(包前不包后)
        String s3="Java是最好的编程语言之一";
        String r3=s3.substring(0,8);
        System.out.println(r3);
        //7,从当前索引位置一致截取到字符串的末尾
        String rs2=s3.substring(5);
        System.out.println(rs2);
        //8.把字符串中的某个内容替换成新内容,并返回新的字符串给我们
        String info="这个电影简直是个垃圾,垃圾电影!!";
        String rs3=info.replace("垃圾","**");
        System.out.println(rs3);
        //9.判断字符串中是否含有某个关键字
        String info2="Java是最好的编程语言之一,我爱Java,Java不爱我!";
        System.out.println(info2.contains("Java"));
        System.out.println(info2.contains("java"));
        System.out.println(info2.contains("Java2"));
        //10,判断字符串是否以某个字符串开头
        String rs4="张三丰";
        System.out.println(rs4.startsWith("张"));
        System.out.println(rs4.startsWith("张三"));
        System.out.println(rs4.startsWith("张三二"));
        //11,把字符串按照某个指定内容分割成多个字符串,做到一个字符串,放到一个字符串数组中返回给我们
        String rs5="张无忌,周芷若,段素芳,赵敏";
        String[] names=rs5.split(",");
        for (int i = 0; i < names.length; i++) {
            System.out.println(names[i]);
        }
    }
}

三,ArrayList

1.集合:代表的是一种容器,存储数据,类似于数组

2.集合的特点:大小可变,类型可以不固定,功能更加强大,适合做元素个数不能确定,同时存在的业务场景

3.ArrayList是什么?是一种集合

元素可以重复的,元素存在索引

4.如何构建ArrayList的对象代表一个集合容器,存储数据

public ArrayList();
ArrayList list=new ArrayList();

5.泛型:集合都是支持泛型的

(1)ArrayList<E>

(2)约束集合在编译阶段只能操作某种数据类型

ArrayList<String> list=new ArrayList();
ArrayList<Student> list=new ArrayList();
ArrayList<Movie> list=new ArrayList();
ArrayList<Integer> list=new ArrayList();//不能填int
/**
注意:1.集合和泛型都不支持基本数据类型,只能支持引用数据类型 2.以后定义集合都应该采用泛型
*/
//问题:我们的集合就是要什么都存
ArrayList list=new ArrayList();
ArrayList<Object> list=new ArrayList();//推荐这样写(什么类型都可)

(java一共有8种基本数据类型,分别为:byte、short、int、long、float、double、char、boolea。其对应的对象(包装类型)分别为:Byte、Short、Integer、Long、Float、Double、Character、Boolean)

6.ArrayList的常用方法

//方法名                      说明
public boolean add(E e)//将指定的元素追加到此集合的末尾
public void add(index,E element)//在此集合中的指定位置插入指定元素
public E get(int index)//返回索引处的元素
public int size()//返回集合中的元素个数
public E remove(int index)//删除指定索引处的元素,返回被删除的元素
public boolean remove(Object O)//删除指定位置的元素,返回删除是否成功
public E set(int index,E element)//修改指定索引处的元素,返回并修改的元素

7.ArrayList遍历并删除元素

从前往后边遍历边删除存在问题:可能会存在漏掉元素,删除元素后,马上后退一步i--就可以了,从后往前遍历,边遍历边删除没毛病

8.ArrayList存储自定义类型的对象

ArrayList<Student> list=new ArrayList();
ArrayList<Movie> list=new ArrayList();
//注意:集合容器中存储的是每个对象的在堆内存中的地址!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值