Java数组

1.数组概述

定义:数组是相同类型的有序集合,同一组同一类型的数据可以按照先后次序排列组合在一起,其中一个数据可以称为元素,每个数组元素可以通过一个下表访问它们

2.数组声明创建

dataType[] arrayRefVar; //first
dataType arrayRefVar[]; //no first

数组也是一种对象,可以通过new操作符创建数组对象,如下:

dataType[] arrayRefVar = new dataType[arraySize];
//我们可以通过数组.length属性获取其中的arraySize
let leng = arrayRefVar.length;

实例:在Java代码中创建数组

public class Demo3 {
public static void main(String[] args){
int[] sums = {}; //定义一个空数组
int[] sums2 = {1,2,3,53,565,24,6,6,343,664,355};//定义包含1,2,3的数组 //使用指针定义数组
int[] sums4 = new int[10];
int[] sums5 = {3,2,3,2}; //使用第一种for循环遍历数组 计算总和
int total = 0;
System.out.println("==============>第一种");
for (int i : sums2) {
total+=i;
}
System.out.println("total:"+total);
System.out.println("==============>第二种");
//使用第二种for循环遍历数组
for(int i = 0;i < sums5.length; i++){
System.out.println(sums5[i]);
}
}
}

在Java中如果每给数组元素初始化,那么默认值为0

数组大小是固定的,一旦定义无法改变

3. Java内存分析

数组的3种初始化方式


public class Demo3 {
public static void main(String[] args){
//静态初始化 定义+初始化 Java会自动计算数组大小
int[] dataArr = {2021,5,20}; //引用类型的数组
Demo3[] demoData = {new Demo3(),new Demo3()}; //动态初始化数组,利用new关键词创建 需要后期给他赋值
//没有初始化默认是0
int[] dataArr2 = new int[3];
for (int i = 0; i < dataArr2.length; i++)
dataArr2[i] = i;//遍历数组 然后主意赋值 } }

4.数组的基本特点

  • 确定的长度 一旦创建无法更改
  • 必须是相同类型的有序集合
  • 可以是如何数据包括引用类型
  • 数组本身属于引用类型,是一种对象,Java对象存放在堆中
    • 只要是new出来的对象都是在堆中

数组边界


数组的合法区间:[0,length-1]

如果越界就会报错

ArrayIndexOutOfBoundsException:数组下标越界异常

public static void main(String[] args){
int[] ten = new int[10];
System.out.println(a[10]); //error!!!
}

练习题:数组逆序

public class Demo3 {
public static void main(String[] args){
int[] arrays = {1,2,3,4,5,6,7,8,9};
int[] res = reverse(arrays);
for (int re : res) {
System.out.println(re);
}
} public static int[] reverse(int[] arr){
int[] temp = new int[arr.length];
for(int i = arr.length-1,j = 0;i >= 0; i--,j++){
temp[j] = arr[i];
} return temp;
}
}

5.二维数组

二维数组的定义方法:

int[][] array = {{123,3},{23,43},{22,544}};

二位数组的调用:

public class Demo3 {
public static void main(String[] args){
int[][] ewArr = {{1,23,4,42},
{22,54,23,54},
{23,43,23,34,54}
};
System.out.println(ewArr[0][1]);//获取第一行第二列的元素 }
}

遍历二维数组:

public class Demo3 {
public static void main(String[] args){
int[][] ewArr = {{1,23,4,42},
{22,54,23,54},
{23,43,23,34,54}
};
for(int i = 0;i < ewArr.length;i++){
for(int j = 0;j < ewArr[i].length;j++){
System.out.print(ewArr[i][j]+"\t");
}
System.out.println("");
}
System.out.println("===============>");
//利用for-each循环打印
for(int i = 0;i < ewArr.length;i++){
for(int item:ewArr[i]){
System.out.print(item+"\t");
}
System.out.println("");
}
} }

6. Arrays类

import java.util.Arrays
import java.util.Arrays;

public class Demo3 {
public static void main(String[] args){
int[] arr = {10,23,4,56,34,22,65,32,62}; //数组排序
Arrays.sort(arr);
//把数组转换为字符串
String str = Arrays.toString(arr);
System.out.println(str);
//通过fill方法快速赋值
Arrays.fill(arr,0,arr.length,5201314);
// = Arrays.fill(arr,5201314);
System.out.println(Arrays.toString(arr));
}
}

拓展:Java中Arrays类的常用方法

7.冒泡排序

import java.util.Arrays;

public class Demo3 {
public static void main(String[] args){
int[] arr = {10,23,4,56,34,22,65,32,62}; for (int i = 0; i < arr.length; i++) {
for (int j = i; j < arr.length; j++) {
if(arr[i] < arr[j] ){
arr[i] = arr[i] + arr[j];//4 + 5 = 9
arr[j] = arr[i] - arr[j];//9 - 5 = 4
arr[i] = arr[i] - arr[j];//9 - 4 = 5
}
}
}
System.out.println(Arrays.toString(arr));
}
}

冒泡排序的时间复杂度为:O(n^2)

零基础入门学习Java课堂笔记 ——day04的更多相关文章

  1. 学习参考《零基础入门学习Python》电子书PDF+笔记+课后题及答案

    国内编写的关于python入门的书,初学者可以看看. 参考: <零基础入门学习Python>电子书PDF+笔记+课后题及答案 Python3入门必备; 小甲鱼手把手教授Python; 包含 ...

  2. 学习《零基础入门学习Python》电子书PDF+笔记+课后题及答案

    初学python入门建议学习<零基础入门学习Python>.适合新手入门,很简单很易懂.前一半将语法,后一半讲了实际的应用. Python3入门必备,小甲鱼手把手教授Python,包含电子 ...

  3. 《零基础入门学习Python》【第一版】视频课后答案第001讲

    测试题答案: 0. Python 是什么类型的语言? Python是脚本语言 脚本语言(Scripting language)是电脑编程语言,因此也能让开发者藉以编写出让电脑听命行事的程序.以简单的方 ...

  4. 零基础入门学习Python(1)--我和Python的第一次亲密接触

    前言 最近在学习Python编程语言,于是乎就在网上找资源.其中小甲鱼<零基础入门学习Python>试听了几节课,感觉还挺不错,里面的视频都是免费下载,小甲鱼讲话也挺幽默风趣的,所以呢,就 ...

  5. 093 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 03 static关键字(下)

    093 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...

  6. 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 02 封装的代码实现

    088 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 02 封装的代码实现 本文知识点:Java封装的代码实现 说明:因为时间紧张,本人写博客过程中只 ...

  7. 080 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 05 单一职责原则

    080 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 05 单一职责原则 本文知识点:单一职责原则 说明:因为时间紧张,本人写博客过程中只是 ...

  8. 057 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 04 案例:求整型数组的数组元素的元素值累加和

    057 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 04 案例:求整型数组的数组元素的元素值累加和 本文知识点:求整型数组的数组元素的元素值累加和 案例:求整型数 ...

  9. 056 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 03 一维数组的应用

    056 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 03 一维数组的应用 本文知识点:数组的实际应用 程序开发中如何应用数组? 程序代码及其运行结果: 不同数据类 ...

  10. 055 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 02 数组的概念

    055 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 02 数组的概念 本文知识点:数组的概念 数组的声明创建.初始化 在学习数组的声明创建.初始化前,我们可以和之 ...

随机推荐

  1. 详解KubeEdge EdgeMesh v1.15 边缘CNI特性

    本文分享自华为云社区<KubeEdge EdgeMesh v1.15 边缘CNI特性原理及功能详解>,作者:达益鑫 |南开大学,刘家伟.吴锟 |DaoCloud,王杰章 |华为云 特性研发 ...

  2. idea创建父子项目

    1. 首先创建大的project 父工程:  2. 点击下一步之后: 3. 点击下一步,填写项目存放地址,点击finish: 4. 完成之后删除不需要的文件,保留pom文件,检查对应的jar和spri ...

  3. 嵌入式Linux必读经典书籍(含下载方式)

    最近,在知乎看到一个问题,"嵌入式Linux有哪些好书推荐".我读研期间也喜欢收藏一些书籍,每次看到京东有活动,总是忍不住想买一些书籍回来. 随着时间越来越久,我买的书越来越多,但 ...

  4. Linux mknod命令详解

    Linux一切皆文件,系统与设备通信之前,要建立一个存放在/dev目录下的设备文件,默认情况下就已经生成了很多设备文件,有时候自己手动新建一些设备文件,这就会用到mknod. 语法格式:mknod[选 ...

  5. Angular系列教程之zone.js和NgZone

    .markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...

  6. Linux-远程连接-ssh

  7. [转帖]History of Unicode Release and Publication Dates

    www.unicode.org For ease of reference, this page collects together information about the dates for v ...

  8. [转帖]网站开启 IPv6 的三种方式

    https://zhuanlan.zhihu.com/p/443835798 从传统二进制部署的 Nginx ,到云原生部署的 K8S.Istio,分别介绍网站开启 IPv6 的三种方式. 1.Ngi ...

  9. [转帖]Grafana+influxdb+ntopng简易网络流量分析展示系统

    Grafana逼格高,所以用它展示ntopng的数据 >_< 一,ntopng 根据官网资料 https://www.ntop.org/ntop/ntopng-influxdb-and-g ...

  10. [转帖]关于UNDO

    原文地址:https://www.modb.pro/db/70802?xzs= 一:请描述什么是Oracle Undo. 二:请描述UNDO的作用. 三:请谈谈你对Manual Undo Manage ...