1.前言
在上一节中,我们讲述了java的基本数据类型、逻辑运算符、“+”号等基础知识,这一节,我们继续来学习java基础部分,当然在开始前,我仍然建议大家在看看面向对象的编程思想!
【5分钟通俗讲解面向对象编程】
2.控制流程
java的控制流程与C语言基本一致,都是顺序编译,使用if 、while 、for 、switch等语句来进行逻辑控制,但是java也有自身的特点,那就是代码块的应用,中断方法,但这一些内容我打算在后面介绍,接下来我们先简单介绍我们熟悉的老朋友。
首先,对于IF语句,我相信大家都不会感到陌生,这里我也不过多的去说明,只想说一些小的细节点,java中的IF语句,是不存在像C语言一样可以以1为真,0为假的判断的 。原因也很清楚,IF语句需要传入的是一个布尔值,而java中的布尔值只能是true or false。
其次,对于while语句、switch ,他们的用法也基本与C语言的用法保持一致,这里不过多赘述,当然while语句中也存在着和IF一样的要求,不能写成while(1)的形式。
对于for循环,在java中,for循环有两种,第一种就是我们最常见到的一种,如图所示,这一种写法基本没有什么难度,这里就不多讲了。
对于第二种写法,我们称之为增强for循环,这是一种不需要赋值变量来控制的for循环,他的右边是一个引用对象,如数组,列表等。它的左边是数组中对应的值。这一种写法我们可以先在这里简单的了解,在后面我们会有深入的说明。
3.数组
3.1、一维数组
还记得我们在上一章讲到的String吗?我们说过String是一个引用类型,那么构成String类型的数组类型是不是引用类型呢?毫无疑问数组当然也是一种引用类型。
这里类比一下C语言的数组,我们都知道在C语言中,数组其实是地址,那么对于java中的数组,是不是也是一样的呢?答案是是一样的。所以数组所引用的地址,就是首元素的地址。
首先,我先演示一下数组是如何创建的,以整形数组为例子, int[] arr = new int[size];
看到这个我想,小伙伴们一时有些冲击感,为什么【】写在前面,new又是什么?别着急,听我仔细讲解。
对于【】的位置,java中既可以写在数组名的前面,也可以写在数组名的后面。
至于new是什么,new是一个很神奇的东西,从我个人认知来说,基本等于“创造”这个词,上面这句话可以解释为,创造一个大小为5的数组赋值到arr上。我们说过数组是一个引用类型,那么他引用的地址从何而来呢?当然是new出来的了。我们本质上是在堆中开辟(new)了一个地址,在栈中引用这个地址。
明白了这些,我们开始正式的介绍数组了。
int[] 是数组类型,arr是数组名,new是创造,int【size】是创建的数组有size大小
在java中,创建数组有三种方式:
第一种 : 直接new;
第二种 : 先设置一个空壳,在后面new;
第三种 : 直接赋值;
这三种方式各有各的好处,具体的使用要看场景的不同而选择。
前面说过,数组是一种引用类型,我们在数组与数组,数组与元素之间赋值时,一定要注意以下情况:
同时,我们需要要求出数组的长度,不是C语言中的sizeof或strlen,而是arr.length;
3.2、二维数组
java中的二维数组,与C语言中一样是以两个【】【】来表示,其创建方法与上面讲解的一维数组一致,以整形数组为例子,int【】【】 arr = new int【2】【3】,这就表示创建一个2行三列的二维数组。
当然,除了储存的用法和C语言差不多外,java的二维数组有其自身的特殊性,可以允许每一行的元素不一致,准确的说是允许每一个一维数组所含的元素不一致。在回答这个问题前,让我们来看看它的内存图。
我们可以看到,数组名引用的是,堆中的一个内存地址,这个内存地址又包含了两个小的内存地址,两个小的内存地址又分别指向了新的内存地址,这样说可能会比较抽象,arr一开始引用的小内存地址中包含的两个,便是一维数组,每一个一维数组又分别指向了新的内存地址,这也就是允许元素不一致的根本原因,我们之间相互不影响。
其他的用法基本是C语言中的了,如果还有什么其他用法,我会在之后的章节中进行补充。
4.结语
本章讲述了进入java前的最后一个版块,从明天开始,我们将正式进入到java的世界,类与对象中去深入学习,谢谢观看!