Java基础15.docx

上传人:b****8 文档编号:23657566 上传时间:2023-05-19 格式:DOCX 页数:18 大小:336.62KB
下载 相关 举报
Java基础15.docx_第1页
第1页 / 共18页
Java基础15.docx_第2页
第2页 / 共18页
Java基础15.docx_第3页
第3页 / 共18页
Java基础15.docx_第4页
第4页 / 共18页
Java基础15.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

Java基础15.docx

《Java基础15.docx》由会员分享,可在线阅读,更多相关《Java基础15.docx(18页珍藏版)》请在冰豆网上搜索。

Java基础15.docx

Java基础15

 

复习数组

一维数组的使用方式如图1.1所示:

图1.1

数组比变量强大一些,变量只能存储一个,而数组可以存储多个,经常有一些数据链的话,那么就得找数组就存储。

二维数组的使用方式如图1.2所示:

 

图1.2

二维数组用的比较多,他像一个表格,但是在内存中表示的形式就是图1.2中所示的,这就是二维数组的一个存储结构。

那么三维数组的表现形式想象中就是多张表格,在内存中的表示其实也是数组中有数组,数组中再有数组,这就称之为三维数组。

如图1.3所示:

图1.3

三维数组用的很少,基本上不用,用的最多的就是一维,二维用的也多,所以我们写好一二维就可以了。

他无非就是变量,无非就是存放多个值。

 

foreach语句:

foreach与for的不同之处如图1.4所示:

图1.4

我们觉得用for遍历数组有点麻烦,那么foreach语句就出现了,他代表了for循环的遍历,

这种形式,就是foreach语句。

他比for循环模式要简单的多,一句话就可以搞定,而且输出的时候,只要输出j就可以了。

那么这是一种什么机制呢?

如图1.5所示:

图1.5

首先放在冒号后面的,他可以是数组的类型,也可以是集合类型,还可以是枚举类型,也就是说只要写上类似于这种容器,能够容乃多个的就是行。

那这个i是什么意思呢?

就是,每次循环的时候,他取出一个值交给变量j,变量j就是接收者,接收从数组或者集合里拿出来的值交给接收者。

每次循环重新接收值。

就算这样写,但是最后编成class文件,他还是还原了以前的写法,他只是一种简写,就是为了加快开发的速度,但是他底层的东西是没有发生改变的,所以这只是一种简写的方式,最终还是转换成了机器认识的东西。

任何的编程语言不管什么样的写法,他其实最终都会转成机器的代码,机器他永远认识的都那一个。

为什么软件很容易破解如图1.6所示:

图1.6

用户写代码,转成机器认识的代码,机器码是可以翻译过来的,而源代码别人是看不到的,不知道逻辑是怎么运行的。

比如饭店,有火爆的也有不火爆的,其实最重要的是管理的制度,做菜也是一样的材料,一样的地方好的,但是他做出来的就是好吃,或者人家的服务就是好,那么人家的做法,人家的服务就是人家的逻辑,你给的什么材料无非就是资源。

所以逻辑是理念是看不到的,最终的结果就是一盘菜出来。

所以做反编译,做解码那些大部分都是从机器码下手的,机器码都是可以看到的。

只有中间的这个源代码部分看不到。

什么是开源,开源就是把人能够看懂的代码开源出来。

结合上面的内容,foreach语句紧紧只是一种简写的写法而已,不管到哪,他最终都会形成for循环的那种形式。

也就是不管任何的编码他怎么做,他最终都会转成机器码去执行。

需要注意的是,你的数组是什么类型的,那么foreach语句的接收者也得是什么类型的不然会报错,如图1.7所示:

意思是说,这个类型不匹配,你是字符串的类型,那么接收者也必须是字符串类型。

图1.7

二维数组如何使用foreach语句如图1.8所示:

图1.8

先取数组,取出了数组再取值。

j是取出数组,然后n是取出j里面一个个的值,然后打印出来。

 

命令行参数:

命令行参数就是main方法里面的参数String[]args他就是一个数组,args只是数据类型的一个名称,就是一个数组的变量,名称无所谓,类型没变就行了。

这个就是程序的入口点。

如图1.9所示:

图1.9

那他是怎么运行的?

为什么要传递一个字符串?

比如a.txt,为什么双击他就会打开记事本?

因为在双击的时候windos首先把双击文件的path路径收集起来,之后看后缀名称是.txt关联的是什么程序,是记事本程序那么就把参数传递了进来。

也就是在windos点开一个文件的时候,会把文件路径收集起来,去找一下是谁来打开这个后缀,找到那个程序之后就会把这个路径提交给记事本,这种方式就叫做接收外界参数的值。

如图2.0所示:

图2.0

 

就比如CS游戏,只要往程序里面加上一个参数,那么就可以形成窗口的模式。

参数有些程序是非要不可的,无论打开照片也好doc文档也好,他其实都是一种参数的传递,都是把路径交给一个软件,软件根据这个路径去打开它。

为什么一个类里面会有一个String,因为是来接收外界参数的。

怎么运行的如图2.1所示:

图2.1

运行Test,后面跟了一个路径称之为参数,首先他找Java.exe程序,找到了然后把TestD:

/a.txt交给了Java.exe然后分析Test.calss去当前的目录,或者去classpath里找,找到了去就加载这个文件的static静态参数。

加载完了就把D:

/a.txt封装成String[]然后String数组调用main方法的时候把String[]传递过来。

也就是在我们的类后面写的参数,写多少个无所谓,写好之后jdk会自动形成一个字符串数组,然后传递过来。

为什么会字符串数组,因为可以传递多个值。

为什么放进String数组里面?

因为String数组是最大的所以要申请为String可以放很多个。

不同类型也没事,无非就是当作为字符串类型,今后要用的时候才自行转换就可以了。

例题2.2所示:

图2.2

连在一起那么就会当作一个参数,写空格就多个参数,但是就要空格又要一个参数那么就用双引号引起来,传*他会把当前目前的内容都呈现出来。

 

静态块:

静态块是类里面的构造器,对象有构造器那么类也有构造器,类里面的构造器叫做初始化方法。

也就是new一个对象他会经过一个构造器。

加载一个类,也有被初始化的一片代码,这个就称之为静态块。

一个类里面可以有很多个静态块,静态块的运行过程是,如果一个类里面有多个静态块,那么他是从上到下运行的。

如图2.3所示:

图2.3

图2.3中可以看出,他是从上到下的运行,但是需要哪一个的时候他就会被加载实例化,但静态块还是从上到下执行。

里面可以包含很多代码,但是静态块不能被实例的成员访问。

如图2.4所示:

图2.4

意思是静态块不能被实例的成员访问。

这个是错误的,因为静态块不能访问非静态的成员。

静态块是类被加载的时候就创建起来的。

静态块会被几种方式加载呢?

第一种new对象静态块会初始化,激发类被加载。

如图2.5所示:

图2.5

第二种访问静态的属性,也会激发类被加载。

如图2.6所示:

图2.6

第三种调用里面的静态方法,也会触使类加载起来。

如图2.7所示:

图2.7

第四种用Class.forName(“Test”);可以通过字符串加载起来,这种方式叫做动态加载,也可以触使一个类加载起来。

如图2.8所示:

图2.8

类的成员什么时候用就什么时候加载,什么时候不用就不加载,静态的成员就必须使用的时候才会加载。

常量成员不能被初始化加载如图2.9所示:

图2.9

打印的是10,但是静态块的东西没有打印出来,那就说明这个类没有被加载起来,因为他是一个静态的常量,静态的常量不属于类的内存,他没有分配在这个类内存里面,他不需要初始化这个类。

静态的属性为什么能,因为静态的属性内存必须要分配在这个类里面,所以他会被初始化加载。

所以图中的静态块不会被加载起来。

 

方法集合参数:

方法的集合参数就是这个方法的参数有多个,可以无限个。

如图3.0所示:

这种方式太麻烦,所以JDK1.5以后就有了另一种方式可以无限写参数:

图3.0

只要写上三个点,这样就无限个参数,传多少个都行,但是他其实还是一个数组的声明。

如果方法里面的参数有intfloat,然后还要无限个数据类型,那么无限个的必须在最后面写才可以如图3.1所示:

图3.1

集合参数其实就还是看作为数组类型,只能声明在参数的最后一个,不能在前面,这就是集合参数。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1