1. API

​ API(Application Programming Interface):应用程序接口。

Java中的API

​ 指的是JDK中提供的各种功能的Java类,这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可。

2. String类

​ String类代表字符串,Java程序中所有的字符串文字都被实现为此类的示例。也就是说,Java程序中所有的字符串都是String类的对象。String类在java.lang包下,所以使用的时候不需要导包。

2.1 String类的特点

  • 字符串不可变,它们的值在创建后不能被更改
  • 虽然字符串的值是不可变的,但是可以被共享
  • 字符串效果上相当于字符数组(char[]),但是底层原理是字节数组(byte[])

2.2 String类的常见构造方法

方法声明 功能描述
String() 创建一个空字符串
String(String value) 根据指定的value创建字符串
String(char[] value) 根据指定的字符数组创建字符串
String(byte[] bytes) 根据指定的字节数组创建字符串

2.3 创建String对象的两种方法的区别

  • 通过构造方法创建

    ​ 通过new创建的String对象,每一次new都会申请一个内存空间,虽然内容相同,但是地址值不同。

  • 直接赋值方式创建

    ​ 直接赋值的字符串,只要字符序列相同(顺序和大小写),无论在程序代码中出现几次,JVM都只会创建一个String对象,并在字符串池中维护。

2.5 字符串的比较

2.5.1 ==

  • 基本数据类型:比较的是具体的值
  • 引用数据类型:比较的是对象的地址值

2.5.2 equals方法

方法声明

public boolean equals (String s)

注意:

比较字符串时,==比较的是字符串的地址,并不是字符串的内容,所以要比较字符串内容时要使用equals方法。

3. StringBuilder

​ StringBuilder可以看作是一个容器,创建之后里面的内容是可变的。

​ StringBuilder通常用于拼接字符串。

3.1 基本使用

public class StringBuilderDemo3 {
public static void main(String[] args) {
//1.创建对象
StringBuilder sb = new StringBuilder("abc"); //2.添加元素
/*sb.append(1);
sb.append(2.3);
sb.append(true);*/ //反转
sb.reverse(); //获取长度
int len = sb.length();
System.out.println(len); //打印
//普及:
//因为StringBuilder是Java已经写好的类
//java在底层对他做了一些特殊处理。
//打印对象不是地址值而是属性值。
System.out.println(sb);
}
}

3.2 链式编程

public class StringBuilderDemo4 {
public static void main(String[] args) {
//1.创建对象
StringBuilder sb = new StringBuilder(); //2.添加字符串
sb.append("aaa").append("bbb").append("ccc").append("ddd"); System.out.println(sb);//aaabbbcccddd //3.再把StringBuilder变回字符串
String str = sb.toString();
System.out.println(str);//aaabbbcccddd
}
}

4. StringJoiner

​ StringJoiner和StringBuilder一样,也可以看作是一个容器,创建之后里面的内容时可变的。

​ StringJoiner可以提高字符串的操作效率,而且代码编写特别简洁。

基本使用

//1.创建对象
StringJoiner sj = new StringJoiner(", ","[","]");
//2.添加元素
sj.add("aaa").add("bbb").add("ccc");
int len = sj.length();
System.out.println(len);//15
//3.打印
System.out.println(sj);//[aaa, bbb, ccc]
String str = sj.toString();
System.out.println(str);//[aaa, bbb, ccc]

5. ArrayList

​ 集合是一种存储空间可变的存储模型,存储的数据容量可以发生改变。

ArrayList长度可变,但是只能存储引用数据类型。

ArrayList类常用方法

构造方法

方法声明 功能描述
public ArrayList() 创建一个空的集合对象

成员方法

方法声明 功能描述
public boolean add(E e) 将指定的元素追加到此集合的末尾
public boolean remove(Object o) 从列表中删除指定元素的第一个出现(如果存在)
public E remove(int index) 删除该列表中指定位置的元素。将任何后续元素移动到左侧(从其索引中减去一个元素)
public E set(int index, E element) 用指定的元素替换此列表中指定位置的元素
public E get(int index) 返回此列表中指定位置的元素
public int size() 返回此列表中的元素数

Java学习笔记07的更多相关文章

  1. Java学习笔记 07 接口、继承与多态

    一.类的继承 继承的好处 >>使整个程序架构具有一定的弹性,在程序中复用一些已经定义完善的类不仅可以减少软件开发周期,也可以提高软件的可维护性和可扩展性 继承的基本思想 >>基 ...

  2. 学习笔记 07 --- JUC集合

    学习笔记 07 --- JUC集合 在讲JUC集合之前我们先总结一下Java的集合框架,主要包含Collection集合和Map类.Collection集合又能够划分为LIst和Set. 1. Lis ...

  3. 0037 Java学习笔记-多线程-同步代码块、同步方法、同步锁

    什么是同步 在上一篇0036 Java学习笔记-多线程-创建线程的三种方式示例代码中,实现Runnable创建多条线程,输出中的结果中会有错误,比如一张票卖了两次,有的票没卖的情况,因为线程对象被多条 ...

  4. 0035 Java学习笔记-注解

    什么是注解 注解可以看作类的第6大要素(成员变量.构造器.方法.代码块.内部类) 注解有点像修饰符,可以修饰一些程序要素:类.接口.变量.方法.局部变量等等 注解要和对应的配套工具(APT:Annot ...

  5. Java学习笔记(04)

    Java学习笔记(04) 如有不对或不足的地方,请给出建议,谢谢! 一.对象 面向对象的核心:找合适的对象做合适的事情 面向对象的编程思想:尽可能的用计算机语言来描述现实生活中的事物 面向对象:侧重于 ...

  6. 0032 Java学习笔记-类加载机制-初步

    JVM虚拟机 Java虚拟机有自己完善的硬件架构(处理器.堆栈.寄存器等)和指令系统 Java虚拟机是一种能运行Java bytecode的虚拟机 JVM并非专属于Java语言,只要生成的编译文件能匹 ...

  7. 0030 Java学习笔记-面向对象-垃圾回收、(强、软、弱、虚)引用

    垃圾回收特点 垃圾:程序运行过程中,会为对象.数组等分配内存,运行过程中或结束后,这些对象可能就没用了,没有变量再指向它们,这时候,它们就成了垃圾,等着垃圾回收程序的回收再利用 Java的垃圾回收机制 ...

  8. 0028 Java学习笔记-面向对象-Lambda表达式

    匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...

  9. 0025 Java学习笔记-面向对象-final修饰符、不可变类

    final关键字可以用于何处 修饰类:该类不可被继承 修饰变量:该变量一经初始化就不能被重新赋值,即使该值跟初始化的值相同或者指向同一个对象,也不可以 类变量: 实例变量: 形参: 注意可以修饰形参 ...

  10. 《Java学习笔记(第8版)》学习指导

    <Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...

随机推荐

  1. kubectl命令详解

    一.kubectl 基本命令 1.陈述式资源管理方法: 1.kubernetes集群管理集群资源的唯一入口是通过相应的方法调用apiserver的接口 2.kubectl 是官方的CLI命令行工具,用 ...

  2. Flask-Migrate数据库模型映射

    1.Flask-Migrate介绍 flask-migrate可以十分方便的进行数据库的迁移与映射,将我们修改过的ORM模型映射到数据库中.flask-migrate是基于Alembic进行的一个封装 ...

  3. springboot修改事务隔离级别

    [SpringBoot]事务的隔离级别.Spring的事务传播机制_51CTO博客_springboot事务隔离级别

  4. linux 命令行下适配 nvidia 驱动 - 搬运

    linux 命令行下适配 nvidia 驱动 转自:https://www.cnblogs.com/chua-n/p/13208398.html 1. 下载相应驱动 在官网这里选择适应你 GPU 的驱 ...

  5. [picoCTF]Insp3ct0r write up

    根据提示,需要检查浏览器上的Web代码(动手翻译一下啦) (漫不经心的瞅瞅页面,curl+UUUUUUU(一只U就行)一下下,微微瞄一瞄,where is flag? fn+f12(或其它)打开源代码 ...

  6. linux驱动设备分类

    1. linux驱动设备分类 1.1 字符设备 -c 1.没有文件系统 2.应用程序和驱动程序之间进行数据交互时,数据是以"字节"进行数据交换,并且是按照固定的顺序传输的,数据是实 ...

  7. [极客大挑战 2019]Upload 1

    进入可以看到,这时一道文件上传题目 直接上传test.php 提示Not image不是图片,可能是MIME绕过,尝试抓包修改Content-Type 提示Not php,猜测可能是检测后缀名不能是p ...

  8. LeetCode 周赛 336,多少人直接 CV?

    本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问. 大家好,我是小彭. 今天早上是 LeetCode 第 336 场周赛,你参加了吗?这场周赛整体质量比较高,但 ...

  9. MySQL学习(二)事务的隔离级别

    :规定了一个事务中所做的修改,哪些在事务内和事务间是可见的,哪些是不可见的.较低级别的隔离通常可以执行更高的并发,系统的开销也更低 read uncommitted(未提交读):事务中的修改,即使没有 ...

  10. Unity JobSystem使用及技巧

    什么是JobSystem 并行编程 在游戏开发过程中我们经常会遇到要处理大量数据计算的需求,因此为了充分发挥硬件的多核性能,我们会需要用到并行编程,多线程编程也是并行编程的一种. 线程是在进程内的,是 ...