1、Java基础15复习数组一维数组的使用方式如图1.1所示: 图1.1 数组比变量强大一些,变量只能存储一个,而数组可以存储多个,经常有一些数据链的话,那么就得找数组就存储。二维数组的使用方式如图1.2所示:图1.2 二维数组用的比较多,他像一个表格,但是在内存中表示的形式就是图1.2中所示的,这就是二维数组的一个存储结构。 那么三维数组的表现形式想象中就是多张表格,在内存中的表示其实也是数组中有数组,数组中再有数组,这就称之为三维数组。如图1.3所示:图1.3 三维数组用的很少,基本上不用,用的最多的就是一维,二维用的也多,所以我们写好一二维就可以了。他无非就是变量,无非就是存放多个值。for
2、each语句:foreach与for的不同之处如图1.4所示:图1.4我们觉得用for遍历数组有点麻烦,那么foreach语句就出现了,他代表了for循环的遍历,这种形式,就是foreach语句。他比for循环模式要简单的多,一句话就可以搞定,而且输出的时候,只要输出j就可以了。那么这是一种什么机制呢?如图1.5所示:图1.5 首先放在冒号后面的,他可以是数组的类型,也可以是集合类型,还可以是枚举类型,也就是说只要写上类似于这种容器,能够容乃多个的就是行。 那这个i是什么意思呢?就是,每次循环的时候,他取出一个值交给变量j,变量j就是接收者,接收从数组或者集合里拿出来的值交给接收者。每次循环重
3、新接收值。 就算这样写,但是最后编成class文件,他还是还原了以前的写法,他只是一种简写,就是为了加快开发的速度,但是他底层的东西是没有发生改变的,所以这只是一种简写的方式,最终还是转换成了机器认识的东西。 任何的编程语言不管什么样的写法,他其实最终都会转成机器的代码,机器他永远认识的都那一个。为什么软件很容易破解如图1.6所示:图1.6 用户写代码,转成机器认识的代码,机器码是可以翻译过来的,而源代码别人是看不到的,不知道逻辑是怎么运行的。 比如饭店,有火爆的也有不火爆的,其实最重要的是管理的制度,做菜也是一样的材料,一样的地方好的,但是他做出来的就是好吃,或者人家的服务就是好,那么人家的
4、做法,人家的服务就是人家的逻辑,你给的什么材料无非就是资源。所以逻辑是理念是看不到的,最终的结果就是一盘菜出来。 所以做反编译,做解码那些大部分都是从机器码下手的,机器码都是可以看到的。只有中间的这个源代码部分看不到。什么是开源,开源就是把人能够看懂的代码开源出来。 结合上面的内容,foreach语句紧紧只是一种简写的写法而已,不管 到哪,他最终都会形成for循环的那种形式。也就是不管任何的编码他怎么做,他最终都会转成机器码去执行。 需要注意的是,你的数组是什么类型的,那么foreach语句的接收者也得是什么类型的不然会报错,如图1.7所示:意思是说,这个类型不匹配,你是字符串的类型,那么接收
5、者也必须是字符串类型。图1.7二维数组如何使用foreach语句如图1.8所示:图1.8先取数组,取出了数组再取值。j是取出数组,然后n是取出j里面一个个的值,然后打印出来。命令行参数: 命令行参数就是main方法里面的参数String args他就是一个数组,args只是数据类型的一个名称,就是一个数组的变量,名称无所谓,类型没变就行了。这个就是程序的入口点。如图1.9所示:图1.9那他是怎么运行的?为什么要传递一个字符串? 比如a.txt,为什么双击他就会打开记事本?因为在双击的时候windos首先把双击文件的path路径收集起来,之后看后缀名称是.txt关联的是什么程序,是记事本程序那么
6、就把参数传递了进来。 也就是在windos点开一个文件的时候,会把文件路径收集起来,去找一下是谁来打开这个后缀,找到那个程序之后就会把这个路径提交给记事本,这种方式就叫做接收外界参数的值。如图2.0所示:图2.0 就比如CS游戏,只要往程序里面加上一个参数,那么就可以形成窗口的模式。参数有些程序是非要不可的,无论打开照片也好doc文档也好,他其实都是一种参数的传递,都是把路径交给一个软件,软件根据这个路径去打开它。 为什么一个类里面会有一个String,因为是来接收外界 参数的。怎么运行的如图2.1所示:图2.1运行Test,后面跟了一个路径称之为参数,首先他找Java.exe程序,找到了然后
7、把Test D:/a.txt交给了Java.exe 然后分析Test.calss去当前的目录,或者去classpath里找,找到了去就加载这个文件的static静态参数。加载完了就把D:/a.txt封装成String然后String数组调用main方法的时候把String传递过来。也就是在我们的类后面写的参数,写多少个无所谓,写好之后jdk会自动形成一个字符串数组,然后传递过来。为什么会字符串数组,因为可以传递多个值。为什么放进String数组里面?因为String数组是最大的所以要申请为String可以放很多个。不同类型也没事,无非就是当作为字符串类型,今后要用的时候才自行转换就可以了。例题
8、2.2所示: 图2.2 连在一起那么就会当作一个参数,写空格就多个参数,但是就要空格又要一个参数那么就用双引号引起来,传*他会把当前目前的内容都呈现出来。静态块: 静态块是类里面的构造器,对象有构造器那么类也有构造器,类里面的构造器叫做初始化方法。也就是new一个对象他会经过一个构造器。加载一个类,也有被初始化的一片代码,这个就称之为静态块。一个类里面可以有很多个静态块,静态块的运行过程是,如果一个类里面有多个静态块,那么他是从上到下运行的。如图2.3所示: 图2.3 图2.3中可以看出,他是从上到下的运行,但是需要哪一个的时候他就会被加载实例化,但静态块还是从上到下执行。里面可以包含很多代码
9、,但是静态块不能被实例的成员访问。如图2.4所示:图2.4意思是静态块不能被实例的成员访问。这个是错误的,因为静态块不能访问非静态的成员。静态块是类被加载的时候就创建起来的。静态块会被几种方式加载呢?第一种new对象静态块会初始化,激发类被加载。如图2.5所示:图2.5第二种访问静态的属性,也会激发类被加载。如图2.6所示:图2.6第三种调用里面的静态方法,也会触使类加载起来。如图2.7所示:图2.7第四种用Class.forName(“Test”);可以通过字符串加载起来,这种方式叫做动态加载,也可以触使一个类加载起来。如图2.8所示:图2.8类的成员什么时候用就什么时候加载,什么时候不用就
10、不加载,静态的成员就必须使用的时候才会加载。常量成员不能被初始化加载如图2.9所示: 图2.9 打印的是10,但是静态块的东西没有打印出来,那就说明这个类没有被加载起来,因为他是一个静态的常量,静态的常量不属于类的内存,他没有分配在这个类内存里面,他不需要初始化这个类。静态的属性为什么能,因为静态的属性内存必须要分配在这个类里面,所以他会被初始化加载。所以图中的静态块不会被加载起来。方法集合参数: 方法的集合参数就是这个方法的参数有多个,可以无限个。如图3.0所示:这种方式太麻烦,所以JDK1.5以后就有了另一种方式可以无限写参数:图3.0只要写上三个点,这样就无限个参数,传多少个都行,但是他其实还是一个数组的声明。如果方法里面的参数有int float,然后还要无限个数据类型,那么无限个的必须在最后面写才可以如图3.1所示:图3.1集合参数其实就还是看作为数组类型,只能声明在参数的最后一个,不能在前面,这就是集合参数。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1