写在前面
昨天给了十题编程题,如果你能有思路很快速地完成它,说明你的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]的格式打印出来而已,也是进行了方法调用,不用的话需要写两遍这个打印,体现了使用方法的便捷。具体实现细节可以看代码,有不清楚的可以在下面评论!欢迎指正批评!
1.本站内容仅供参考,不作为任何法律依据。用户在使用本站内容时,应自行判断其真实性、准确性和完整性,并承担相应风险。
2.本站部分内容来源于互联网,仅用于交流学习研究知识,若侵犯了您的合法权益,请及时邮件或站内私信与本站联系,我们将尽快予以处理。
3.本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
4.根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
5.本站是非经营性个人站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并不贩卖软件,不存在任何商业目的及用途
暂无评论内容