当前位置: 首页 > news >正文

01|Java中常见错误或不清楚

补充:length vs length() vs size()

1 java中的length属性是针对数组说的,比如说你声明了一个数组,想知道这个数组的长度则用到了length这个属性.

2 java中的length()方法是针对字符串String说的,如果想看这个字符串的长度则用到length()这个方法.

3.java中的size()方法是针对泛型集合说的,如果想看这个泛型有多少个元素,就调用此方法来查看!

00. 包装类

  • 就是基本数据类型的对应类:
    在这里插入图片描述
  • 我们常见的:基本类转为包装类。int i = 10; Integer i1 = i;,实际上是Java虚拟机
    自动用这句话Integer i1 = Integer.valueOf(i);帮你实现了。
  • 常见的:包装类转为基本类。int i2 = i1;,实际上Java虚拟机自动用int i2 = i1.intValue();帮你实现了。

01. 工具类

  • 工具类不应该创建对象才能使用。即,可以直接使用类中的属性和方法,一般声明为静态的。
  • 提供的属性和方法都是公共的。

02. 比较

  • 所有的基本数据类型用==
  • 所有的引用类型用equals()

02.0 == (数值/地址)

  • 基本数据类型,==比较的是数值
int i =10;
double j = 10.0;
System.out.println(i==j);
  • 引用数据类型,== 比较的是内存地址
String s ="abc";
String str = "abc";
System.out.println(s==str);

02.1 equals()

  • String类中的equals()是被重写过的,所以比较内容
String s = "abc";
String s1 = new String("abc");
System.out.println(s.equals(s1);
  • 其他自定义的类的equals(),使用的是Object中的,他是使用==,所以比较的是地址,如果比较内容,需要重写。

03. 集合

  • 导包:import java.util.*;
  • 遇到对数量不确定的数据处理时,需要用集合类。
  • 数组虽然能容纳数据,但是长度每次一旦申明后就固定了,没有集合对象方便。

03.0 两大体系

  • 单一数据体系:Collection接口
  • 成对出现的数据体系:即键值对数据。Map接口

03.1 Collection接口

  • List:按照插入顺序保存数据,数据可以重复的
    • 具体实现类:ArrayListLinkedList
  • Set:集,无序保存,数据不能重复。
    • 具体实现类:HashSet
  • Queue:队列(先进先出)
    • 具体实现类:ArrayBlockingQueue

03.2 Map接口

  • 具体实现:HashMapHashtable

03.3 ArrayList

03.3.0 常用方法1
导包:import java.util.ArrayList;
创建:ArrayList list = new ArrayList();
打印:System.out.println(list);
增加数据:add()
// 集合中没有任何数据,会创建长度为10的数组存储zhangsan
list.add("zhangsan"); 
list.add("lisi");
list.add("wangwu");

在这里插入图片描述

获取长度:size()
list.size();
获取索引位置的数据:get()
list.get(1); //获取下标为1的数据
遍历ArrayList

方法1:

for(int i=0; i<list.size(); ++i){System.out.println("结合中的数据:"+list.get(i));
}

方法2:
for(循环对象:集合){}

for(Object obj : list){System.out.println(obj);
}
修改数据:set()

返回的值是修改前的值。下面的oldVal值为"zhangsan"

list.add("zhangsan"); 
list.add("zhangsan");
list.add("wangwu");
Object oldVal = list.set(1, "lisi");
System.out.println("修改前的值:"+oldVal);
删除数据

返回的值是删除前的值。下面的removeVal值为"lisi"

Object removeVal = list.remove(1); //删除下标为1的数据
System.out.println("删除的值" + removeVal);
03.3.1 常用方法2
add()方法可以指定位置添加数据
ArrayList list = new ArrayList();
list.add("zhangsan");
list.add("lisi");
list.add("wangwu");
// 在下标为1的位置插入数据
list.add(1,"zhaoliu");
addAll()可插入新的集合
ArrayList otherList = new ArrayList();
otherList.add("1");
otherList.add("2");
otherList.add("3");
list.addAll(otherList);
clear()清空所有数据
list.clear();
removeAll() 清空指定的集合
ArrayList list = new ArrayList();
list.add("zhangsan");
list.add("lisi");
list.add("wangwu");ArrayList otherList = new ArrayList();
otherList.add("1");
otherList.add("2");
otherList.add("3");
list.addAll(otherList); //往list中插入其他集合otherList
//删除list中的otherList
list.removeAll(otherList);
contains() 判断是否含某条数据
ArrayList list = new ArrayList();
list.add("zhangsan");
list.add("lisi");
list.add("wangwu");
System.out.println("lisi");
indexOf() 判断数据首次出现的位置
  • 返回首次出现的位置
System.out.println(list.indexOf("zhangsan"));
lastlndexOf() 判断数据最后出现的位置
ArrayList list = new ArrayList();
list.add("zhangsan");
list.add("lisi");
list.add("zhangsan");
System.out.println("zhangsan");
toArray() 集合变数组
Object[] obj = list.toArray();

03.4 LinkedList

  • 即,链表集合

03.4.0 常用方法

构建集合对象
LinkedList list = new LinkedList();
增加数据
list.add("zhangsan");
获取数据(getFirst(),getLast() )
下面用例的结果都显示“zhangsan”,侧面反映了First和Last节点和zhangsan节点挂上了。
System.out.println(list.getFirst());
System.out.println(list.getLast());
在节点前面增加数据
LinkedList list = new LinkedList();
list.add("zhangsan");
list.addFirst("lisi");
// 验证
System.out.println(list.getFirst());
System.out.println(list.getLast());
指定位置插入节点
LinkedList list = new LinkedList();
list.add("zhangsan");
list.addFirst("lisi");
list.add(1,"wangwu");
// 验证
System.out.println(list.getFirst());
System.out.println(list.getLast());
System.out.println(list);
获取数据:get()
//获取指定位置的数据
System.out.println(list.get(i));
//遍历list
for(int i=0; i<list.size(); ++i){ System.out.println(list.get(i));
}
//通过元素来遍历
for(Object obj: list){System.out.println(obj);
}
修改数据:set()
LinkedList list = new LinkedList();
list.add("zhangsan");
list.addFirst("lisi");
list.add(1,"wangwu");
//修改数据,将lisi改为zhaosi
list.set(2,"zhaosi");
// 验证
System.out.println(list);
删除数据:remove()
LinkedList list = new LinkedList();
list.add("zhangsan");
list.addFirst("lisi");
list.add(1,"wangwu");
list.remove("wangwu");
System.out.println(list);

03.4.1 常用方法

addAll() 添加集合
LinkedList list = new LinkedList();
list.add("0");
list.add("1");
list.add("2");
LinkedList list1 = new LinkedList();
list1.add("5");
list1.add("4");
list1.add("3");
//
list.addAll(list1);
push() 添加数据,等同于addFirst()
LinkedList list = new LinkedList();
list.add("0");
list.add("1");
list.add("2");
list.push("aaa"); // 添加在第一个位置
pop() 弹出数据,等同于remove()
  • remove() 默认是删除第一个数据
LinkedList list = new LinkedList();
list.add("0");
list.add("1");
list.add("2");
list.pop(); // 弹出"0"

相关文章:

01|Java中常见错误或不清楚

补充&#xff1a;length vs length() vs size() 1 java中的length属性是针对数组说的,比如说你声明了一个数组,想知道这个数组的长度则用到了length这个属性. 2 java中的length()方法是针对字符串String说的,如果想看这个字符串的长度则用到length()这个方法. 3.java中的siz…...

递归的用法和例子

b站视频&#xff1a;https://www.bilibili.com/video/BV1iS4y1e7MJ/?spm_id_from333.999.0.0&vd_source1717654b9cbbc6a773c2092070686a95 # 递归的定义&#xff1a;其实就是自己调用自己&#xff0c;一般用函数的形式来进行 """ 特点&#xff1a; 1、一定…...

极狐GitLab 企业级 CI/CD 规模化落地实践指南(一)

目录 template 引用&#xff0c;减少代码冗余&#xff0c;增强 CI/CD 构建扩展性 问题 1&#xff1a;代码冗余&#xff0c;低效实践 问题 2&#xff1a;维护性难&#xff0c;工作量大 ➤ local ➤ file ➤ remote ➤ template 收益 1&#xff1a;一处修改&#xff0c;多…...

springBoot 简单的demo

springBoot 学习开始 场景开发流程1、创建项目2、导入依赖3、创建启动springBoot 项目的主入口程序4、创建业务程序5、在MainApplication文件运行程序6、将文件打包成jar包 遇到的问题未解决 希望大哥们帮忙--本地运行jar包报错 场景 浏览器发送hello请求&#xff0c;返回“he…...

[国产MCU]-BL602开发实例-实时时钟(RTC)

RTC 文章目录 RTC1、RTC介绍2、RTC使用实例RTC(real-time clock)为操作系统中的实时时钟设备,为操作系统提供精准的实时时间和定时报警功能。当设备下电后,通过外置电池供电,RTC继续记录操作系统时间;设备上电后,RTC提供实时时钟给操作系统,确保断电后系统时间的连续性。…...

大数据Flink(六十三):SqlClient工具的使用

文章目录 SqlClient工具的使用 一、​​​​​​​入门...

哈威比例多路阀控制放大器

多路比例阀放大器控制负载敏感原理的比例多路换向阀&#xff0c;它用于与负载无关的、无级调节液压执行元件的运动速度。 多个执行元件可以同时和相互无关地进行工作。 这种类型的阀主要用于行走液压机械&#xff08;例如&#xff1a;起重控制系统&#xff09;。 通过选择执行元…...

Java bean 是个什么概念?

Java bean可以把它比作一个"智能的容器"&#xff0c;它具备封装数据的能力。 Java bean是一种可重用的软件组件&#xff0c;它主要用于在Java应用程序中存储和传递数据。它是一种符合特定规范的Java类&#xff0c;通过封装数据和提供访问方法&#xff0c;使数据的管…...

微服务系列文章之 Springboot+Vue实现登录注册

一、springBoot 创建springBoot项目 分为三个包&#xff0c;分别为controller&#xff0c;service&#xff0c; dao以及resource目录下的xml文件。 UserController.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 …...

【Docker】如何在设计 dockerfile 过程中,设置容器启动后的定时任务

如何在设计 dockerfile 过程中&#xff0c;设置容器启动后的定时任务 jwensh 2023.08.14 文章目录 如何在设计 dockerfile 过程中&#xff0c;设置容器启动后的定时任务1. 基于 alpine 设计 dockerfile 过程中&#xff0c;设置容器启动后的定时任务2. 基于 CentOS 设计 Dockerf…...

【leetcode】第三章 哈希表part01

242.有效的字母异位词 使用HashMap public boolean isAnagram(String s, String t) {HashMap<Character,Integer> map new HashMap();int sLen s.length();int tLen t.length();if (sLen ! tLen) return false;// 统计词频for (int i 0; i < s.length(); i) {ch…...

Docker中Tomcat部署步骤

第一次访问没有东西。...

pycharm 安装库

这是另一种方式。 搜索到的安装库的方式多数是&#xff1a;在桌面上winR键运行终端&#xff0c;输入命令&#xff0c;安装不了&#xff0c;发现安装不了。 1、打开pycharm&#xff1b; 2、软件下部的Terminal终端(需要运行一个代码才能出现&#xff0c;任何代码都可)&#xf…...

使用 Ploomber、Arima、Python 和 Slurm 进行时间序列预测

推荐&#xff1a;使用 NSDT场景编辑器助你快速搭建可二次编辑的3D应用场景 简短的笔记本说明 笔记本由 8 个任务组成&#xff0c;如下图所示。它包括建模的大多数基本步骤 - 获取数据清理、拟合、超参数调优、验证和可视化。作为捷径&#xff0c;我拿起笔记本并使用Soorgeon工具…...

springboot第35集:微服务与flutter安卓App开发

Google Playplay.google.com/apps/publis…[1]应用宝open.qq.com/[2]百度手机助手app.baidu.com/[3]360 手机助手dev.360.cn/[4]vivo 应用商店dev.vivo.com.cn/[5]OPPO 软件商店&#xff08;一加&#xff09;open.oppomobile.com/[6]小米应用商店dev.mi.com/[7]华为应用市场dev…...

java 把list转成json

在Java中&#xff0c;将List转换成JSON格式是非常常见的任务。JSON是一种轻巧的数据交换格式&#xff0c;非常适合于Web应用程序&#xff0c;特别是前端开发。 使用Java将List转换成JSON格式的最简单方法是通过JSON库。最常用的JSON库是 Jackson&#xff0c;它提供了快速&…...

R语言实现随机生存森林(2)

library(survival) library(randomForestSRC) help(package"randomForestSRC") #构建普通的随机生存森林 data(cancer,package"survival") lung$status<-lung$status-1 rfsrc.fit1 <- rfsrc(Surv(time, status) ~ ., lung,ntree 100,block.size 1,…...

泛型类接口方法学习

一、泛型 1 概念 泛型(Generics)&#xff0c;广泛的类型。最大用途是给集合容器添加标签&#xff0c;让开发人员知道容器里面放到是什么类型&#xff0c;并且自动对放入集合的元素进行类型检查。 类比实参和形参&#xff0c;我们在对方法中的变量操作时&#xff0c;并没有指…...

Docker自动化部署安装(十)之安装SonarQube

这里选择的是&#xff1a; sonarqube:9.1.0-community (推荐使用) postgres:9.6.23 数据库(sonarqube7.9及以后便不再支持mysql&#xff0c;版本太低的话里面的一些插件会下载不成功的) 1、docker-sonarqube.yml文件 version: 3 services:sonarqube:container_name: sonar…...

[QT/C++]如何得知鼠标事件是由触摸事件转换而来的,使得鼠标触摸事件分离

依据来源&#xff1a;https://doc.qt.io/qt-5/qml-qtquick-mouseevent.html 具体是在event事件或者mouse系列事件中捕获到鼠标事件后&#xff0c;用如下代码判断鼠标事件是否由触摸事件转换而来的 if(mouseEvent->source()Qt::MouseEventSynthesizedBySystem){qDebug()<&…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式&#xff08;Singleton Pattern&#…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用&#xff0c;因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型&#xff08;VLMs&#xff09;在字幕生成方面…...

图表类系列各种样式PPT模版分享

图标图表系列PPT模版&#xff0c;柱状图PPT模版&#xff0c;线状图PPT模版&#xff0c;折线图PPT模版&#xff0c;饼状图PPT模版&#xff0c;雷达图PPT模版&#xff0c;树状图PPT模版 图表类系列各种样式PPT模版分享&#xff1a;图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了&#xff0c;要么要会员、要么写的乱七八糟。这里我整理一下&#xff0c;把问题说清楚并且给出代码&#xff0c;拿去用就行&#xff0c;照着葫芦画瓢。 问题 在继承QWebEngineView后&#xff0c;重写mousePressEvent或event函数无法捕获鼠标按下事…...

C++:多态机制详解

目录 一. 多态的概念 1.静态多态&#xff08;编译时多态&#xff09; 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1&#xff09;.协变 2&#xff09;.析构函数的重写 5.override 和 final关键字 1&#…...

基于PHP的连锁酒店管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...

uni-app学习笔记三十五--扩展组件的安装和使用

由于内置组件不能满足日常开发需要&#xff0c;uniapp官方也提供了众多的扩展组件供我们使用。由于不是内置组件&#xff0c;需要安装才能使用。 一、安装扩展插件 安装方法&#xff1a; 1.访问uniapp官方文档组件部分&#xff1a;组件使用的入门教程 | uni-app官网 点击左侧…...

2.3 物理层设备

在这个视频中&#xff0c;我们要学习工作在物理层的两种网络设备&#xff0c;分别是中继器和集线器。首先来看中继器。在计算机网络中两个节点之间&#xff0c;需要通过物理传输媒体或者说物理传输介质进行连接。像同轴电缆、双绞线就是典型的传输介质&#xff0c;假设A节点要给…...