零基础入门学习Java课堂笔记 ——day04
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));
}
}
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的更多相关文章
- 学习参考《零基础入门学习Python》电子书PDF+笔记+课后题及答案
国内编写的关于python入门的书,初学者可以看看. 参考: <零基础入门学习Python>电子书PDF+笔记+课后题及答案 Python3入门必备; 小甲鱼手把手教授Python; 包含 ...
- 学习《零基础入门学习Python》电子书PDF+笔记+课后题及答案
初学python入门建议学习<零基础入门学习Python>.适合新手入门,很简单很易懂.前一半将语法,后一半讲了实际的应用. Python3入门必备,小甲鱼手把手教授Python,包含电子 ...
- 《零基础入门学习Python》【第一版】视频课后答案第001讲
测试题答案: 0. Python 是什么类型的语言? Python是脚本语言 脚本语言(Scripting language)是电脑编程语言,因此也能让开发者藉以编写出让电脑听命行事的程序.以简单的方 ...
- 零基础入门学习Python(1)--我和Python的第一次亲密接触
前言 最近在学习Python编程语言,于是乎就在网上找资源.其中小甲鱼<零基础入门学习Python>试听了几节课,感觉还挺不错,里面的视频都是免费下载,小甲鱼讲话也挺幽默风趣的,所以呢,就 ...
- 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封装 ...
- 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 02 封装的代码实现
088 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 02 封装的代码实现 本文知识点:Java封装的代码实现 说明:因为时间紧张,本人写博客过程中只 ...
- 080 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 05 单一职责原则
080 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 05 单一职责原则 本文知识点:单一职责原则 说明:因为时间紧张,本人写博客过程中只是 ...
- 057 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 04 案例:求整型数组的数组元素的元素值累加和
057 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 04 案例:求整型数组的数组元素的元素值累加和 本文知识点:求整型数组的数组元素的元素值累加和 案例:求整型数 ...
- 056 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 03 一维数组的应用
056 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 03 一维数组的应用 本文知识点:数组的实际应用 程序开发中如何应用数组? 程序代码及其运行结果: 不同数据类 ...
- 055 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 02 数组的概念
055 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 02 数组的概念 本文知识点:数组的概念 数组的声明创建.初始化 在学习数组的声明创建.初始化前,我们可以和之 ...
随机推荐
- freeswitch配置SBC的方案
概述 freeswitch 是一款好用的开源软交换平台. 但是,fs不是专为SBC而开发的,所以需要做一些定制化的配置和开发. 本文主要介绍如何利用fs的基本功能配置一个简单的SBC方案,满足一般化需 ...
- C# 加解密
1. Md5 /// <summary> /// 不可逆加密 /// 1 防止被篡改 /// 2 防止明文存储 /// 3 防止抵赖,数字签名 /// </summary> ...
- spring boot 集成配置阿里 Druid监控配置
本文为博主原创,转载请注明出处: github 地址如下:https://github.com/alibaba/druid/wiki 其相关问题也可参考:https://github.com/alib ...
- 完美:C# Blazor中显示Markdown并添加代码高亮
昨天发了一篇介绍这个库:C# Blazor中显示Markdown文件,介绍怎么在Blazor中显示Markdown内容的文章,文章内的代码是没有高亮的,思来相去,还是要做好,于是百度到这篇文章.NET ...
- win11不改时区,安装 android 子系统,运行android app
win11开启虚拟机平台 下载安卓子系统 打开https://store.rg-adguard.net , 在URL中输入:https://www.microsoft.com/store/produc ...
- 【中介者模式(Mediator)】使用Java实现中介者模式
引言 中介者,何为中介者,顾名思义就是我们的在处理A和B之间的关系的时候,引入一个中间人,来处理这两者之间的关系,例如生活中我们需要去租房,买房,都会有中介,来处理房东和租客之间的协调关系,这个就是中 ...
- [转帖]从Linux源码看TIME_WAIT状态的持续时间
https://zhuanlan.zhihu.com/p/286537295 从Linux源码看TIME_WAIT状态的持续时间 前言 笔者一直以为在Linux下TIME_WAIT状态的Socket持 ...
- Oracle 专用模式与共享模式的学习与思考
Oracle 专用模式与共享模式的学习与思考 说明 Oracle数据库中的专用模式和共享模式是两种不同的数据库运行模式,它们在应用场景和权限管理上有所不同. 专用模式(Dedicated Mode): ...
- [转帖]tidb4.0.4使用tiup扩容TiKV 节点
https://blog.csdn.net/mchdba/article/details/108896766 环境:centos7.tidb4.0.4.tiup-v1.0.8 添加两个tikv节点 ...
- [转帖]/dev/null 2>&1详解
https://www.diewufeiyang.com/post/1045.html shell中可能经常能看到:>/dev/null 2>&1 命令的结果可以通过%>的形 ...