JavaSE笔记4】API、包、String类、Object类

目录

一、API

二、包

2.导入不同包下的同名程序

三、String

1. String类是什么?

2. 如何创建String对象?(常用的四种方法)

3. String API

a. 遍历字符串 

b. 判断字符串内容是否相等:

c. 截取子串

d. 替换部分内容

e. 匹配子串

f. 匹配开头字符串

g. 字符串切割

4. String的注意事项:

a. String的不可变

b. 以"  "创建的字符串

c. 通过new创建的字符串对象

d. 面试题 

T1. 常量折叠: 字符串的优化机制

T2. good and abc

5. 案例

a. 用户登录

b. 生成验证码

三、集合:ArrayList

1.什么是集合?

2. ArrayList API

a. 创建ArrayList集合对象

b. 在集合中添加元素

c. 获取集合中某个索引位置处的值

d. 获取集合的大小

e. 删除元素

f. 修改指定下标处的元素

3. 案例

a. 删除字符串集合中含有“枸杞”的字符串


一、API


二、包

2.导入不同包下的同名程序


三、String

1. String类是什么?

2. 如何创建String对象?(常用的四种方法)

eg. 创建String对象的四种方法:

还能使用char数组和byte数组创建String对象。

3. String API

a. 遍历字符串 

Java字符串不支持使用索引来访问或修改字符串中的单个字符。只能使用charAt()方法来通过索引获取指定位置的字符。


法一、遍历字符串,打印其中的每一个字符( charAt() ):


法二、把字符串转为字符数组再遍历( toCharArray() ):

b. 判断字符串内容是否相等:

已知Java中String是引用类型变量,存储的是字符串对象的地址,所以直接比较两个字符串变量,是在比较两个变量的地址是否相同,而不是比较内容是否相同。


 法一、equals(大小写敏感)


法二、equalsIgnoreCase(大小写不敏感)【比较验证码】

c. 截取子串

d. 替换部分内容

replace( )

e. 匹配子串

contains( ):精准匹配,大小写敏感

f. 匹配开头字符串

用来匹配姓氏:

  

g. 字符串切割

split( )


4. String的注意事项:

a. String的不可变

String类型的底层源码是一个用final修饰的char数组。(无法修改其内容,只能重新创建)

b. 以"  "创建的字符串

以"  "创建的字符串对象会放在堆内存的常量池中,且内容相同的不同变量引用的是同一个字符串。这样设计的好处是节约内存。

c. 通过new创建的字符串对象

每次new都会创建一个新对象放在堆内存中。

d. 面试题 

T1. 常量折叠: 字符串的优化机制

T2. good and abc

5. 案例

a. 用户登录

b. 生成验证码


四、集合:ArrayList

1.什么是集合?

相当于C++中的STL容器。

2. ArrayList API

a. 创建ArrayList集合对象

法一、不约束集合类型(可以添加任意类型的数据)

ArrayList list = new ArrayList();


法二·、约束集合类型(只能添加指定类型的数据)

ArrayList<String> list = new ArrayList<>(); //泛型思想

b. 在集合中添加元素

法一、add("w")  //在末尾加入一个元素

法二、add(1, "y") //在指定下标处加入一个元素

c. 获取集合中某个索引位置处的值

get(下标)


获取的是一个对象,要用equals()方法来比较是否相等。

d. 获取集合的大小

size()

  

e. 删除元素

法一、删除指定下标处的元素

remove(下标)


法二、删除指定元素

remove(对象) //注意删除到的是第一个匹配到的对象

f. 修改指定下标处的元素

set(1, "l")

3. 案例

a. 删除字符串集合中含有“枸杞”的字符串

获取集合数据:get()

匹配子串:contains()

删除集合数据:remove()


注意事项:注意集合数据删除后,后面的数据会往前挪动一个位置,如何直接i++,会跳过一个元素。


法一】正向遍历,每次删除后i--

法二】 倒着遍历删除



 五、Object类

a. 概念

b. toString 和 equals

  • toString方法默认返回 类型@hashcode。往往重写来打印类的内容。
  • equals比较的是地址(完全可以使用“==”来代替)。往往重写来比较两个对象的内容是否一致。

c. clone

  • clone方法是受保护的无法直接调用,想要使用clone方法,还有4个细节要处理


  • 重写clone方法,还必须要实现Cloneable这个接口(只是一个标记接口,里面没有要实现的方法),告诉编译器该类可以使用clone方法,否则会报错。


  • 还要处理异常CloneNotSupport


  • clone方法的返回值是Object类型,所以要将返回结果强转类型。

d. 浅拷贝和深拷贝

  • 浅拷贝与深拷贝的不同在于:引用类型成员内容相同,指向同一空间。我们上面写的就是浅拷贝。


  • 深拷贝:因为给拷贝出的新对象的的引用类型成员开辟了新空间,所以引用类型成员内容不同,指向不同空间,但空间中的内容相同

e. 深拷贝的实现

关键在于给对象的的引用类型成员开辟的新空间。所以在重写clone时我们要单独拿出引用类型成员,使用其clone方法创建一个新空间,再赋给引用类型成员。

  • 引用类型成员的类也要实现Cloneable接口。
  • 在clone方法中创建对象后,单独调用引用类型成员的clone方法克隆一个引用类型成员。


六、Objects类 

a. 概念


 ------------------------END-------------------------

才疏学浅,谬误难免,欢迎各位批评指正。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/906911.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【含文档】基于ssm+jsp的超市订单后台理系统(含源码+数据库+lw)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: apache tomcat 主要技术: Java,Spring,SpringMvc,mybatis,mysql,vue 2.视频演示地址 3.功能 该系统有两个主…

雷军救WPS“三次”,WPS注入新生力量,不再“抄袭”微软

救WPS“三次” 1989年&#xff0c;求伯君用128万行代码编写出了WPS1.0&#xff0c;宣告了中国自主办公时代的开启。 那时候&#xff0c;雷军还在武汉大学深造&#xff0c;他早就把求伯君当成了自己的榜样&#xff0c;这一来二去的&#xff0c;雷军和WPS之间也就结下了不解之缘…

MySQL中,如何定位慢查询?定位到的慢SQL如何分析?

目录 1. 慢查询发生的场景&#xff1f; 2. MySQL中&#xff0c;如何定位慢查询&#xff1f; 2.1 详细解释 3. 定位到的慢SQL如何分析&#xff1f; 3.1 详细说明 1. 慢查询发生的场景&#xff1f; 2. MySQL中&#xff0c;如何定位慢查询&#xff1f; 介绍一下当时产生问题…

Java基于微信小程序的私家车位共享系统(附源码,文档)

博主介绍&#xff1a;✌stormjun、8年大厂程序员经历。全网粉丝15w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&…

MiniPCIe 接口 CANFD卡

概述 基于MiniPCIe高性能接口CANFD卡采用标准MiniPCIe接口尺寸设计&#xff0c;方便PC机或嵌入式设备快速拓展出CANFD接口&#xff0c;实现数据采集与数据处理。 兼容高速CAN和CANFD两种通信需求、支持CAN2.0A、CAN2.0B协议&#xff0c;符合ISO11898-1规范。 规格 PC接口&…

kafka实时返回浏览数据

在安装完kafka(Docker安装kafka_docker 部署kafka-CSDN博客)&#xff0c;查看容器是否启动&#xff1a; docker ps | grep -E kafka|zookeeper 再用python开启服务 from fastapi import FastAPI, Request from kafka import KafkaProducer import kafka import json import …

Docker Compose一键部署Spring Boot + Vue项目

目录 前提条件 概述 Compose简介 Compose文件 Compose环境 Compose命令 帮助命令 关键命令 Compose部署项目 初始化环境 查看代码文件 sql数据准备 nginx配置文件准备 创建 compose.yaml 一键启动compose多个容器 浏览器访问虚拟机ip:80(可省略默认的80端口) …

Android——横屏竖屏

系统配置变更的处理机制 为了避免横竖屏切换时重新加载界面的情况&#xff0c;Android设计了一中配置变更机制&#xff0c;在指定的环境配置发生变更之时&#xff0c;无需重启活动页面&#xff0c;只需执行特定的变更行为。该机制的视线过程分为两步&#xff1a; 修改 Androi…

【前端基础】CSS进阶

目标&#xff1a;掌握复合选择器作用和写法&#xff1b;使用background属性添加背景效果 01-复合选择器 定义&#xff1a;由两个或多个基础选择器&#xff0c;通过不同的方式组合而成。 作用&#xff1a;更准确、更高效的选择目标元素&#xff08;标签&#xff09;。 后代选…

Chrome与火狐的安全功能全面评估

在当今数字化时代&#xff0c;网络安全已成为用户最为关注的问题之一。作为两款广受欢迎的浏览器&#xff0c;Chrome和火狐&#xff08;Firefox&#xff09;都提供了多种安全功能来保护用户的在线隐私和数据安全。本文将全面评估这两款浏览器的安全功能&#xff0c;帮助用户更好…

动态代理:面向接口编程,屏蔽RPC处理过程

RPC远程调用 使用 RPC 时&#xff0c;一般的做法是先找服务提供方要接口&#xff0c;通过 Maven把接口依赖到项目中。在编写业务逻辑的时候&#xff0c;如果要调用提供方的接口&#xff0c;只需要通过依赖注入的方式把接口注入到项目中&#xff0c;然后在代码里面直接调用接口…

VsCode中搭建 Rt-Thread 开发环境(编译,调试,下载)

VsCode中搭建 Rt-Thread 开发环境&#xff08;编译&#xff0c;调试&#xff0c;下载&#xff09; 文章目录 VsCode中搭建 Rt-Thread 开发环境&#xff08;编译&#xff0c;调试&#xff0c;下载&#xff09;一 . 下载rt-thread源码二. 安装env脚本环境三 . 配置工具链3.1 使用…

Node.js:Express 中间件 CORS 跨域资源共享

Node.js&#xff1a;Express 中间件 & CORS 中间件全局中间件局部中间件分类错误级中间件内置中间件 CORS原理预检请求 中间件 中间件是不直接接收请求&#xff0c;也不直接发送响应&#xff0c;而是在这之间处理一个中间过程的组件。 当一个请求到来&#xff0c;会经过多…

OPENAI官方prompt文档解析

官方文档地址:https://platform.openai.com/docs/guides/gpt-best-practices 文档中文版来源:OpenAI 官方提示工程指南 [译] | 宝玉的分享 (baoyu.io) 1.写清楚说明 如果prompt给的范围十分模糊或是过于宽泛,那么GPT就会开始猜测您想要的内容,从而导致生成的结果偏离预期. …

ubuntu安装与配置Nginx(1)

在 Ubuntu 上安装和配置 Nginx 是相对简单的。以下是一个逐步指南&#xff1a; 1. 更新系统包 首先&#xff0c;确保你的系统是最新的。打开终端并运行&#xff1a; sudo apt update sudo apt upgrade2. 安装 Nginx 使用以下命令安装 Nginx&#xff1a; sudo apt install …

NVR设备ONVIF接入平台EasyCVR视频分析设备平台视频质量诊断技术与能力

视频诊断技术是一种智能化的视频故障分析与预警系统&#xff0c;NVR设备ONVIF接入平台EasyCVR通过对前端设备传回的码流进行解码以及图像质量评估&#xff0c;对视频图像中存在的质量问题进行智能分析、判断和预警。这项技术在安防监控领域尤为重要&#xff0c;因为它能够确保监…

【机器学习】20. RNN - Recurrent Neural Networks 和 LSTM

1. RNN定义 用于顺序数据 文本数据是序列数据的一个例子 句子是单词的序列——一个单词接另一个单词 每个句子可能有不同数量的单词&#xff08;长度可变&#xff09; 每个句子之间可能有长距离的依赖关系 rnn可以记住序列中较早的相关信息 RNN在每个时间点取序列中的1个…

ElementUI el-form表单多层数组的校验

问题描述 提示&#xff1a;这里描述项目中遇到的问题&#xff1a; ElementUI el-form表单多层数组的校验 页面效果&#xff1a; 数据结构&#xff1a; addform: {code: ,type: ,value: ,state: 1,remark: ,fieldList: [{fieldCode: ,resolverEntities: [{resolverType: , re…

Java SpringBoot调用大模型AI构建AI应用

本文是一个用springboot 结合spring mvc 和spring ai alibaba 调用国产大模型通义千问的具体例子&#xff0c;按照这个做能够快速的搞定Java应用的调用。 然后就可以把这类应用泛化到所有的涉及到非结构化数据结构化的场景中。 Spring AI&#xff1a;简化Java中大模型调用的框…

利用frp进行SSH端口转发(内网穿透同理)

题记 公司内网有一台设备&#xff0c;可以根据微步情报来对恶意服务器进行封禁。很不幸我的vps因为开着cs被标记为恶意了&#xff0c;导致我在公司网络连不上我的vps&#xff0c;每次连还要挂代理。于是我打算将我vps的22端口转发到我们公司的vps的10022端口上。本篇文章来自11…