JAVA基础篇——常用API(String、ArrayList)

八、常用API

全称:Application Programming Interface:应用程序编程接口

也就是别人写好的程序可以直接调用

注意事项:

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

1. String

java.lang.String 代表字符串,内部封装了字符串数据以及处理字符串的方法

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

方式一:双引号引用的内容

String name = “小鱼”

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

*注意:方式一和方式二创建方式不同,方式一在栈,指向堆里面同一块内容,方式二在堆里面创建相同的内容,地址是不同的。方式一创建相同的内容==为true,方式二为false

public class StringDemo1 {
    public static void main(String[] args) {
        // 方式一:使用双引号
        String name = "小鱼";
        System.out.println(name);

        // 方式二:调用gouzaoq
        String s1 = new String();
        System.out.println(s1);

        String s2 = new String("小鱼");
        System.out.println(s2);

        char[] chars = {'a', 'b', 'c'};
        String s3 = new String(chars);
        System.out.println(s3);

        byte[] bytes = {97, 98, 99};
        String s4 = new String(bytes);
        System.out.println(s4);
    }
}

1.2 String常用方法

注意:

String字符串内容一旦声明,就不能修改,修改String内容是引用传递,指向改变,会产生大量的垃圾空间——相同的字符串内容,内存中存一份

两种创建字符串的方式不同,因为上述原因,new出来的匿名字符串还没有保存在变量池(堆内存中的字符串常量池)中,intern()操作之后是在对象池,于直接赋值的字符串指向相同

问题:其他类是否是同样的机制,如果是的话,不同学生名字相同、成绩相同该如何区分?————应该是不可变类型有的

public class StringDemo2 {
    public static void main(String[] args) {
        String s = "小鱼0135";
        // System.out.println(s[1]);  // JAVA字符串不能用索引访问 要用charAT()方法
        for (int i = 0; i < s.length(); i++) {
            // s.length().fori
            char c = s.charAt(i);
            System.out.println(c);
        }
        // 1. 获取字符串长度
        System.out.println(s.length());
        // 2. 获取字符串某个位置的值
        System.out.println(s.charAt(1));
        // 3. 将字符串转化为字符数组
        char[] ch = s.toCharArray();
        for (int i = 0; i < ch.length; i++) {
            System.out.print(ch[i] + " ");
        }
        // 4. 判断字符串的内容是否一样,一样就返回true
        String s1 = "小鱼0135";
        System.out.println(s);  // 字符串是引用类型,但是内部有机制,直接输出不是地址,而是内容——如何获取字符串的地址???——toString()方法重载
        System.out.println(s1);
        System.out.println(s == s1);  // true

        String s2 = new String("黑马");
        String s3 = new String("黑马");
        System.out.println(s2 == s3);  // false
        System.out.println(s1.equals(s));  // true

        // 5. 忽略大小写比较字符串内容
        String s4 = "Ab2";
        String s5 = "ab2";
        System.out.println(s4.equalsIgnoreCase(s5));  // true

        // 6. 截取字符串内容(包前不包后)
        String s6 = s1.substring(0, 2);
        System.out.println(s6);

        // 7. 截取字符串从指定位置到结尾
        String s7 = s1.substring(1);
        System.out.println(s7);

        // 8. 把字符串中的某个内容替换成新内容,并返回新的字符串对象
        String s8 = s1.replace("0135", "");
        System.out.println(s8);

        // 9. 判断字符串中是否包含某个关键字——精准匹配
        boolean xiaoyu = s.contains("小鱼");
        System.out.println(xiaoyu);  // true

        // 10. 判断字符串是否以某个字符串开头
        System.out.println(s.startsWith("小鱼"));  // true

        // 11. 分割字符串,将字符串按照某个指定内容分割成多个字符串,放到一个字符串数组中返回
        String s9 = "yyy,xxx,ggg";
        String[] name = s9.split(",");
        for (int i = 0; i < name.length; i++) {
            System.out.println(name[i]);
        }
		// 打印字符串地址
        System.out.println(s.getClass().getName() + "@" + System.identityHashCode(s));
    }
}

参考学习:

https://blog.51cto.com/u_16213643/7255947

1.3 String注意事项

String对象的内容不可改变,被称为不可变字符串对象——“……”该方式写出的字符串对象,会在堆内存中的字符串常量池中存储,相同内容的字符串只存储一份

new创建的字符串对象,每new一次都会产生一个新的对象放在堆内存中

为什么这么设计——节约内存

计算机内存原理

在这里插入图片描述

在这里插入图片描述

2. ArryList

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

为什么用集合, 不用数组——数组一旦定义 ,长度就固定了;集合大小可变,开发中用的更多

集合种类很多——每个集合对应一种需求

ArrayList集合——创建、方法(增删改查)、特点

ArrayList——泛型类,也就是可以通过修改E创建指定类型的容器;若创建对象时不写这个<>,表示可以存储任意类型的对象

特点:长度可变,增删元素长度就会改变——对迭代变量进行控制 / 倒序遍历

2.1 创建

ArrayList中的数据类型(尖括号中)必须是引用数据类型,因此若要存入int、char等基本数据类型时,则要使用他们的包装类

基本类型byteshortintlongfloatdoublecharboolean
包装类ByteShortIntegerLongFloatDoubleCharacterBoolean

2.1 常用方法

public class ArrayListDemo1 {
    public static void main(String[] args) {
        // 1. 创建一个ArrayList的集合对象
        ArrayList list = new ArrayList();
        // 什么都想存Objiect
        // ArrayList<Object> list = new ArrayList();
        list.add("黑马");
        list.add(666);
        list.add('a');
        System.out.println(list);

        // 2. 约束集合存储的范围
        ArrayList<String> list1 = new ArrayList<String>(10);

        System.out.println(list1);
        ArrayList<String> list2 = new ArrayList<>();  // JDK1.7后支持
        list1.add("2");
        list1.add("xx");
//        System.out.println(list1[0]);  // 0没有这种中操作

        // 3. 在集合中的某个索引位置添加一个数据——这个位置处要有值
//        list1.add(3, "aaa");  // 报错,意思就是超过范围了
        System.out.println(list1);

        // 4. 根据索引获取集合中某个索引位置处的值
        System.out.println(list1.get(0));
        System.out.println(list1.size());

        // 5. 删除元素
        // 5.1 根据索引删除某个元素,并返回被删除的元素
        System.out.println(list1.remove(1));
        // 5.2 根据元素删除
        System.out.println(list1.remove("2"));

        // 尖括号中必须是引用数据类型,若要存入int、char等基本数据类型,要使用包装类
        ArrayList<Integer> list3 = new ArrayList<>();
        list3.add(1);
        list3.add(2);
        list3.add(3);
        System.out.println(list3.get(0));
        System.out.println(list3.remove(0));
//        list3.remove(2);  // 想要删除的是特定对象,是引用数据类型,跟元素的具体内容无关,而是需要地址一致
    }
}

注:基本数据类型及其对应的包装类

基本数据类型是数据,包装类可以有方法,牺牲性能和空间来换取功能多。——集合和泛型都不支持基本数据类型,只能支持引用数据类型

3. 总结

在这里插入图片描述

  • 10
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值