【Java自学】搬砖中年人代码自学之路Lesson 5


是的我还在。。。。

2022年真的是我经历过的最牛逼的一年了,从年初开始到现在3个多月的时间,先后经历了2次疫情隔离,合计一个半月。作为一个自控力非常弱鸡的人,隔离在家对我来说简直就是噩梦。。。

真的是会懒,而且长期两地分居的我第二次隔离被隔离在了家中,居然过了一个月的已婚生活,每天徘徊在厨房做饭和躺着消遣两点一线之间,实在是提不起精神学习,这一点还是要自我抨击一下的,真弱!!梦想呢!!宏图壮志呢!!

不过还好,还是重新捡起来跟着学习了,700多课的视频课已经听了200多课了,现在立个flag,希望自己在今年年底之前能够顺利完成所有课程的学习(毕竟现在的工作真的是越干越觉得傻逼,搞不好7、8月份还要出去找工作,所以就到年底好了)


一、数组「Array」

        1、概述:是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理

        2、数组的常见概念

                1、数组名

                2、下标(或索引):索引的起始值是0

                3、元素

                4、数组的长度:存储的元素的个数

        3、数组的特点:

                1、数组是有序排列的

                2、数组本身是引用数据类型,而数组中的元素既可以是基本数据类型,也可以是引用数据类型

                3、创建数组的对象会在内存中开辟一整块连续的空间,而数组名中引用的是这块连续空间的首地址

                4、数组的长度一旦确定就不可以修改。如果使用中发现已有的数组长度不够了,但是还要添加元素,只能新建数组

        4、数组的分类:

                1、按照维数分类:一维数组、二维数组、多维数组

                2、按照数组元素的类型分类:基本数据类型元素的数组、引用数据类型元素的数组

二、一维数组的使用

        1、一维数组的声明和初始化

                1、静态初始化:数组的初始化和数组元素的赋值操作同时进行

                2、动态初始化:数组的初始化和数组元素的赋值操作分开进行

                3、总结:数组一旦初始化完成,其长度就确定了。

int ids[];//声明数组

//静态初始化
ids = new int[]{1001,1002,1003,1004};
//动态初始化
String[] names = new String[5];

//特殊的正确写法
int[] arr10 = {1,2,3}//类型推断

        2、如何调用数组的指定位置的元素

                1、通过角标(下标、索引)的方式调用

                2、Java中数组的角标(下标、索引)是从0开始的,到数组的「长度-1」结束

                      Java中只要涉及到"索引"的,「基本上」都是从0开始,但是后续学习的数据库相关的内容,是从1开始的

names[0] = "周杰伦";
names[1] = "王力宏";
names[2] = "林俊杰";
names[3] = "蔡依林";
names[4] = "潘玮柏";
names[5] = "周润发";//编译是可以通过的,因为语法上是没有错误的,但是只有解释运行的时候才会加载到内存中,所以运行时候会报错,因为已经超过内存范围了

        3、如何获取数组的长度

                1、数组的属性:length

System.out.println(names.length);//5
System.out.println(ids.length);//4

        4、如何遍历数组元素

for(int i = 0;i < names.length;i++){
    System.out.println(names[i]);
}

        5、数组元素的默认初始化值:

                1、虽然数组还没有赋值,但是在创建数组的时候,为了在内存中开辟一块连续的空间,会填进去一些无意义的值来占据这个空间

                2、不同类型的数组的默认初始化值

                        1、基本数据类型

                                1、数组元素是整型(short、byte、int、long):默认初始化值是0

                                2、数组元素是浮点型:默认初始化值是0.0

                                3、数组元素是char型:默认初始化值是「ASCII码是0或者是\u0000,而非数字0」,执行后表现出来效果是空格,但是其实不是空的

                                4、数组元素是布尔型:默认初始化值是false,因为false在二进制中是0

                        2、引用数据类型:数组元素是引用数据类型——默认初始化值是null,即空值

//数组元素是整型(short、byte、int、long):默认初始化值:0
short[] arr1 = new short[4];
for(int i = 0;i < arr1.length;i++){
    System.out.println(arr1[i]);
}

//数据元素是浮点型:默认初始化值:0.0
float[] arr2 = new float[4];
for(int i = 0;i < arr1.length;i++){
    System.out.println(arr2[i]);
}

//数组元素是char型:默认初始化值:ASCII码是0或者是\u0000,而非数字0,执行后表现效果为空格,但是其实不是空的
char[] arr3 = new char[4];
for(int i = 0;i < arr1.length;i++){
    System.out.println("----" + arr3[i] + "****");
}
if(arr3[0] == 0){
    System.out.println("你好");
}

//数组元素是boolean型:默认初始化值:false,因为false在二进制中是0
boolean[] arr4 = new boolean[4];
for(int i = 0;i < arr1.length;i++){
    System.out.println(arr4[i]);
}

//数组元素是引用数据类型:默认初始化值是null,即空值。注意是null而不是"null"
String[] arr5 = new String[4];
System.out.println(arr5[0]);
if(arr5[0] == null){
    System.out.println("今天天气不错");
}

        6、 数组的内存解析:内存的简化结构⬇️

                1、栈(stack):主要存放「局部变量(方法中定义的变量都是局部变量,比如main方法)」

                2、堆(heap):主要存放new出来的结构

                        1、对象

                        2、数组

                3、方法区(method area)

                        1、常量池,存放例如String

                        2、静态域,存放例如static

                4、举例说明:

                        1、代码示例:仅为简单解析使用,其实实际执行过程还会有所偏差,先理解即可

int[] arr6 = new int[]{1,2,3;
String[] arr7 = new String[4];
arr7[1] = "刘德华";
arr7[2] = "张学友";
arr7 = new String[3];

                        2、解析过程:逐行代码进行分析

                                1、栈结构:声明arr6、声明arr7

                                2、堆结构:声明new int[]{1,2,3};、声明new String[4];

           

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值