Java基础知识分享(二)

cnblogs 2024-07-31 08:09:02 阅读 76

前面的编程里学会了吗?学会了快来看看新的知识吧!

写在前面

昨天给了十题编程题,如果你能有思路很快速地完成它,说明你的Java数据类型、运算符、选择语句、循环语句部分的基础知识很好,接下来就来看看后面的方法、数组以及他们在JVM中的内存划分知识吧!

方法

语句定义格式:

修饰符 返回值类型 方法名(参数类型 参数名,参数类型 参数名,......)

{

方法体;

return 返回值;

}

使用通俗一点的语言就是说,Java中定义一个方法需要指定修饰符、返回值类型(如果是空类型则写void)、方法的名字以及后面使用小括号将一个参数列表括起来,最后使用一个大括号,在里面写上方法体和return返回值。

这里的修饰符就像是public、static等修饰方法的符号,每种都有自己特殊的含义。返回值类型就是像int、String、int[][]等Java中的数据类型,也是后面return需要返回值的数据类型。方法名字自己可以取,但最好是见名知意,方法在命名时建议使用小写字母组成的单词或字符串,如果有两个及两个以上单词组合建议使用驼峰法命名,与类名区分。参数列表指的是参数的数据类型和参数的个数,比如这样定义(int a , int b)也就意味着这个方法里面有两个参数,并且这两个参数的类型都是int类型的,传入的参数也只能是int类型的参数,当然,参数可以没有也可以有很多,所以说是一个列表。最后就是方法体了,这个是方法最核心的部分,也是实现功能编写代码的地方,需要自行编写,如果有返回值,前面的返回值数据类型一定要一致,没有返回值也要在开头的返回值类型写void,不然会在运行时报错。

方法中的一些注意事项:

1、修饰符,第一次学的话,默认使用public static。

2、方法和方法是平级关系,不能嵌套定义的。

3、方法不调用不执行。

4、方法调用的时候,只需要传值就可以。

5、参数分为形式参数(方法定义小括号中的参数)和实际参数(实际调用时传入的值)。

6、若一个方法没有返回值,那么它的返回值类型是void。

7、若一个方法没有返回值,return可以省略不写。

8、若方法有返回值,那么方法内部必须要有一个return生效。

数组

数组的概述:数组是一块连续固定大小的内存空间

特点:

1、一旦创建,大小固定。

2、同一个数组、元素的数据类型是一样的。

3、具有索引下标的概念,将来可以通过索引获取元素。

4、数据查询快,增删慢。

一维数组

定义语句:数据类型[] 数组名;

初始化:

静态初始化

数据类型[] 数组名= new 数据类型[]{元素1,元素2,....};

或 数据类型[] 数组名= {元素1,元素2,....};

动态初始化

数据类型[] 数组名= new 数据类型[元素的个数];

二维数组

定义语句:数据类型[][] 数组名;

初始化:

静态初始化:

数据类型[][] 数组名= new 数据类型[][]{{2,3,4},{2,3,4}};

或 数据类型[][] 数组名={{2,3,4},{2,3,4}};

动态初始化:

数据类型[][] 数组名= new 数据类型[二维数组中一维数组的个数][每个一维数组中的元素个数];

数组获取长度的属性

使用属性length

使用的方式:数组名.length

可能会有很多人不清楚这个二维数组是个什么样的,可以看下面这个图有助于理解:

也就是说,定义的二维数组里面,不一定要像矩形一样,每个位置都有值。

数组在JVM中的内存划分

如图所示:

下面我就来解释一下这个图中的意思。

我们先来看代码部分,首先定义并创建了两个字符类型的一维数组,长度固定都是5,这个时候看图里的栈中的main里面会有两个字符数组arr1和arr2被定义,再看堆内存里的两个数组,下标都是从0开始的,里面都被系统进行了初始化赋值,因为是字符类型,所以都是'\u0000',这个就是系统进行赋值的默认值,就像int类型会默认赋值为0一样。

我们再继续看代码,打印了两个数组的地址,地址就是图中标红的一串16进制编码,它是这两个数组在内存中的具体位置。之后进行了两种赋值,一种是动态for循环赋值,因为a的阿斯克码为97,所以就直接i递增把值赋给每个数组的第i+1个位置就行了,第二种则是直接写死,最后使用一个方法打印出来就有了两个数组的具体内容。在内存中就是,把对应地址的内容分别改成a到e和f到j,可以看到,在栈中的main里,两个数组都是指向自己数组对应的地址的,所以我在赋值的时候,系统就会分别找到其地址并进行相应的赋值。

最后,再说说方法。方法其实很简单,就是打印一个一维的字符数组,不过是以类似[a,b,c,d,e]的格式打印出来而已,也是进行了方法调用,不用的话需要写两遍这个打印,体现了使用方法的便捷。具体实现细节可以看代码,有不清楚的可以在下面评论!欢迎指正批评!



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。