Java基础之“数组扩容”
一.Java数组扩容的思路
正常逻辑:Java数组对象的大小是固定不变的,数组对象是不可扩容的。
尽然正常的不行,我们就在new他一次,利用数组复制方法可以变通的实现数组扩容。
逻辑:先弄出一个新的数组(数量符合扩容的长度),然后将老的数组数据放入到新new出来的数组中
二.代码
案例1
1.通过new直接快速处理(主要用于测试)
@Test
public void suanfa13()
{
// 声明数组[9]
int[] ints = {9};
// 打印数组大小
System.out.println("length = " + ints.length); // 创建新的数组:大小在原数组的基础上+1,并赋值地址到原数组上
int [] newInts = new int[ints.length + 1]; // copy赋值过去
newInts[0] = ints[0]; // 打印数组大小
System.out.println("newInts = " + newInts.length); }
2.结果图
案例1
1.工具类扩容(代码简易,并且完整)
语法
Arrays.copyOf(原数组, 新扩容长度);
@Test
public void suanfa13()
{
// 声明数组[9]
int[] ints = {9}; // 打印数组大小
System.out.println("length = " + ints.length); // 使用Arrays工具类的copyOf扩容数组,内部原理同上,(老数组,新数组大小)
int[] ints1 = Arrays.copyOf(ints, 3); // 长度为新扩容的3
System.out.println("ints1 = " + ints1.length); // 循环遍历内容
for (int i : ints1)
{
System.out.println("i = " + i);
}
}
2.结果图
3.分析
System.arraycopy(原数组名,起始下标,新数组名,起始下标,复制长度);
Java基础之“数组扩容”的更多相关文章
- Java程序(数组扩容的尝试)
import java.util.Scanner; public class ArrayAdd { public static void main(String[] args) { int arr[] ...
- Java基础-反转数组
/** java基础,如何将一个数组反转,思考方法采用使用临时变量的情况下,将第一个元素与第二个元素进行反转,需要定义两个索引,一个记录数组的第一个元素与最后一个元素,将其两两交换* */public ...
- Java基础之 数组详解
前言:Java内功心法之数组详解,看完这篇你向Java大神的路上又迈出了一步(有什么问题或者需要资料可以联系我的扣扣:734999078) 数组概念 同一种类型数据的集合.其实数组就是一个容器. 数组 ...
- java基础(十) 数组类型
1. 数组类简介 在java中,数组也是一种引用类型,即是一种类. 我们来看一个例子,理解一下数组类: public static void main(String[] args) { Class ...
- java 基础概念 -- 数组与内存控制
问题1: Java在声明数组的过程中,是怎样分配内存的? 在栈内存中 建一个数组变量,再在堆内存中 建一个 数组对象.至于详细的内存分配细节,还得看 该初始化是 数组动态初始化 还是 数组静态初始化. ...
- Java基础:数组的声明,循环,赋值,拷贝。
数组的声明 一般有两种形式的声明: int[] a; int a[]; 这两种声明都没错,但是大多数都使用第一种声明,因为变量名是独立的,不带任何符号. 声明一个数组,并没有将a真正的初始化为一个数组 ...
- Java基础总结--数组
---数组的定义---组织存储一组数据1.存放相同类型数据的集合--就是一种容器本质上变量也是一种容器--区别就是只存储了一个数据的容器--面对容器,而不是分散的数据eg.买一盘鸡蛋--蛋托其实就是容 ...
- java 基础知识-数组的7种算法(排序、求和、最值、遍历...)
遍历 遍历就是把这个数组的每个元素 显示出来 遍历的方法就是先定义这个数组的大小,然后用FOR循环来完成数组,例如 double[] score = new double[5]; Scanner in ...
- Java基础之数组类型
对于Java,前面的一些基础概念不是很想写,看了看还是从数组开始写吧(毕竟数组是第一个引用类型,相对复杂一点),我也是学了JAVA不是很久,目前看完了JAVA的基础视频,还有JAVA疯狂讲义这本书的大 ...
- 黑马程序员——JAVA基础之数组
------- android培训.java培训.期待与您交流! ---------- 数组: 数组的定义: 数组是相同类型数据的集合, 描述的是相同类型的若干个数据按照一定的先后顺序排列组合而成,其 ...
随机推荐
- 一文详解 MySQL 中的间隙锁
博客:https://www.emanjusaka.com 博客园:https://www.cnblogs.com/emanjusaka 公众号:emanjusaka的编程栈 by emanjusak ...
- WPF 线程处理
参考链接:https://docs.microsoft.com/zh-cn/previous-versions/dotnet/netframework-3.5/ms771750(v=vs.90)
- JUC并发—9.并发安全集合二
大纲 1.并发安全的数组列表CopyOnWriteArrayList 2.并发安全的链表队列ConcurrentLinkedQueue 3.并发编程中的阻塞队列概述 4.JUC的各种阻塞队列介绍 5. ...
- Flink - [06] 状态管理
题记部分 一.Flink中的状态 由一个任务维护,并且用来计算某个结果的所有数据,都属于这个任务的状态. 可以认为状态就是一个本地变量,可以被任务的业务逻辑访问. Flink会进行状态管理,包括状态一 ...
- Flink学习(三) 批流版本的wordcount Scala版本
批处理代码: package com.wyh.wc import org.apache.flink.api.scala._ /** * 批处理代码 */ object WordCount { def ...
- 单页应用(SPA)是什么?
来源:https://zhuanlan.zhihu.com/p/648113861 概述 单页应用(SPA,Single Page Application)是一种网页应用或网站的设计模式,它在浏览器中 ...
- 震惊!C++程序真的从main开始吗?99%的程序员都答错了
嘿,朋友们好啊!我是小康.今天咱们来聊一个看似简单,但实际上99%的C++程序员都答错的问题:C++程序真的是从main函数开始执行的吗? 如果你毫不犹豫地回答"是",那恭喜你,你 ...
- 0基础的人关于C++多态产生的一系列疑问
之前在面试的时候被问过懂不懂C++,懂不懂"多态".我之前搞科研一直在用Python,不会C++.完全没听过"多态"这个词,只听说过"多模态" ...
- zookeeper windows 安装
下载 zookeeper 下载地址为: https://zookeeper.apache.org/releases.html. 选择一个地址点击版本下载: 配置 下载后解压到指定磁盘的 zookeep ...
- 批量操作DB
批量操作DB 记录一次批量操作数据库,sqlServer服务器参数过多问题. 1.案例引入 对接另一个批发系统B,B需要把订单那些数据弄到系统A中.就是一个批量插入,批量更新的问题.系统保密需要,本文 ...