前段时间在抽工作之空余,更加系统和深入的重新学习Java的一些技术知识。最近也试着申请了一个专栏,对前段时间的一些收获和知识点做一个系统性的归纳回顾和总结。昨天也是刚刚写完了关于Java中的各种基础语言要素的总结,总觉得少了点什么。对基础语言要素的理解和使用,实际上是很重要的。俗话说,一切伟大的行动
前段时间在抽工作之空余,更加系统和深入的重新学习Java的1些技术知识。
最近也试着申请了1个专栏,对前段时间的1些收获和知识点做1个系统性的归纳回顾和总结。
昨天也是刚刚写完了关于Java中的各种基础语言要素的总结,总觉得少了点甚么。
对基础语言要素的理解和使用,实际上是很重要的。
俗语说,1切伟大的行动和思想,都源于1个微不足道的开始。
而对1门语言来讲,熟练的掌握对其基础语言要素的理解和使用,就是这个“微不足道的开始”
可以这样说,1门语言的基础语言要素,就同等因而1门武功的内功。
将自己的“内功”练到出神入化,剩下的,就只是招式(外功)而已了。
我在网上看到他人这样解释内功与外功的区分,觉得用于表达我想说的话,10分契合:
内功就像子弹,外功就像枪。
每一个人都会有子弹和枪,但问题是多少和优劣。
内功越强,子弹越多;外功越强,枪就越好。
其二者之间的关系就是,内功是基础,决定外功建筑。
对应于Java当中来讲则是:
基础语言要素是根基;而我们所做的所谓的“编程”工作,实际就是通过根基创造使用招式而已。
回想最初学习Java时,1直没能对这些基础语言要素有足够的重视,
也没能对其有1个很系统性的分类归纳的理解,致使总觉得思路有点杂乱。
经常在想,怎样样可以对这些语言要素的概念和使用方式,有1个更形象的理解。
后来在渐渐深入的进程中,发现:
“编程”工作与我们在学生时期都经历的“作文”工作实际上是很相似的。
举例来讲:
请以《站在……的门口》为题写1篇文章。
要求:1.立意自定。
2.文体不限。可以记叙经历,抒发感情,发表议论,展开想象,等等。
3.很多于800字
这是甚么?这是1个作文题目。
而:
有1个100万长度的数组,其中有两个数是重复的,
请使用Java语言写1个最快的算法,查找到重复的数。
这又是甚么?这是1道程序题目。
所以我们不难发现,所谓的“作文题目”与“程序题目”。
归纳来说:实际上也就是1种“实现需求”罢了。
对2种不同的需求,我们所做的工作实际上都是“编写文章”!不同的是,
- 对“作文题目”,我们使用的语言是:中文;对“程序题目”,我们使用的语言是:Java;
- 对用中文书写的文章,我们通常称为“1篇作文”;对用Java语言书写的文章,我们通常称为“1个Java类”。
1篇作文的构成可能通常包括:
- 标题:用于对整篇作文所讲的内容做1个最精短的概括。例如每一个人小时候可能都用过的作文题目《我的父亲》,目的就是让浏览的人看见就题目就知道这篇作文是描述关于你父亲的业绩的。
- 人、物、地点:1篇文章自然会触及到相干的人,物和事情产生的地点。例如《我的父亲》1文里,通常都有1个经典情节:记得小时候,夜里发高烧下着大雨,也打不到车了。父亲决然毅然的冒着大雨背着我跑到了医院..云云。那末这里触及到的人就是:“我”和“父亲”;触及到的物可能包括:雨伞,雨衣等;触及到的地点可能包括:“家”,医院等.
- 故事情节(段落):故事情节多是1篇作文所占比重最大的部份。而一样以《我的父亲》为言,通常我们会根据多个事例来表现父亲对自己的好,而每一个事例就会分别对应于1个故事情节。而我们就会通过分段来分别描写这些故事情节,而故事情节里触及到的就是所谓的“人、物、地点”。
同理的,1个Java类的构成通常包括:
- 类的声明:Java类的类名与作文的“标题”作用实际是1样的。就是用于描写你封装的该类提供的功能。
- 变量/常量:变量与常量实际上就是作文中的“人,物和地点”。
- 方法(函数):方法用于描写我们要提供的程序功能,就犹如段落用于描写故事情节1样。而段落触及“人、物、地点”,方法里使用定义的变量/常量。
我们将上面举例说到的《我的父亲》转换为1个Java类的体现情势,可能能让我们更形象的进行理解:
/*
* 作文《我的父亲》用Java类体现
*/
public class MyDad /* 类声明::作文标题 */{
// 变量(常量)用于记录作文中的人、物、地点
// 人物:
private static final String ME = "我";
private static final String MY_DAD = "我的父亲";
// 物:
private static final String RAINCOAT = "雨衣";
// 地点:
private static final String MY_HOME = "我家";
private static final String HOSPITAL = "医院";
//函数 ::段落
private static void see_a_patient(){
StringBuilder sb = new StringBuilder();
sb.append("记得小时候,有1次");
sb.append(ME);//使用变量
sb.append("发高烧!窗外下着大雨,也打不到车。万分紧急之下,");
sb.append(MY_DAD);
sb.append("赶快拿出1件");
sb.append(RAINCOAT);
sb.append("为我披上,背上我,冒着大雨把我从");
sb.append(MY_HOME);
sb.append("送到了");
sb.append(HOSPITAL);
System.out.println(sb.toString());
}
public static void main(String[] args) {
see_a_patient();
}
}
该程序运行的输出信息为:
记得小时候,有1次我发高烧!窗外下着大雨,也打不到车。万分紧急之下,我的父亲赶快拿出1件雨衣为我披上,背上我,冒着大雨把我从我家送到了医院
请看了,我们不正是用Java语言写了1篇“作文”吗?
到此,我们通过以熟习的“作文”为切入点,了解了1个Java类的构成结构。
由此我们知道了:1个Java类的构成实际其实不复杂,它的结构通常就是类声明、变量(常量)和方法(函数)。
而所谓的1个“复杂的类”就犹如“1篇几万字的文章”的原理1样,不过就是:
1、触及到的人、物更多 = 定义的变量常量更多
2、段落更多/描写的故事情节更多 = 定义的方法(函数更多)
而对应的,以长篇小说为例。如果1篇文章的故事的字数已到达了1定范围,那末可能就会影响浏览性。这个时候,我们就能够进1步的对其进行“分解”。
例如1本自传体的长篇小说,1个人1生中可以描写的情节有很多,那末它可能被搭建成以下结构:
有10篇用于描写其青年时期业绩的故事,我们将其提取出来放在1起,构成小说的第1篇:《我的青年时期》
有10篇用于描写其中年时期业绩的故事,我们也将其提取出来,作为小说的第2篇:《我的中年时期》..
从而以此类推。终究这个结构的总和被我们称作“小说”。
Java中,也是1样的。如果多个类综合完成同1方面的功能实现,
那末我们也能够将这些类提取出来,构成1个“篇章”,Java中的包结构就是这个“篇章”。
而终究由多个包结构组合起来的全部程序,就是所谓的1个完全的Java项目。
再壮观的高楼大厦,究其根本也不过就是由众多数量的钢精水泥搭建起来的。
而建筑师能做的就是通过设计手段(招式)让大楼的结构更加稳固,美观和实用。
我们谈到,之所以对1篇长篇小说进行这样的结构搭建。是由于当文章字数到达1定量的时候,就会影响浏览性,其主题也会模糊。
所以在Java中也是一样的道理,这1定程度上也是“代码重构”的初衷之1。类应当具有足够的功能特性化。
前面我们说到的是程序的结构,但同时我更想重点谈到的是Java的基础语言要素的使用。
但是在了解了程序的结构以后,我们相对就更容易了解基础语言要素的意义了。
一样以作文为例,了解作文结构是必要的。但我们还应当做的,就是以结构为切入点,
继续深入看1篇作文的基础要素与基础成份,也就是是:标点符号,词语,语句之类的东西。
由于即便你对作文结构的研究再深,如果不会使用文字,不会使用标点,不会书写语句,那1切都是空谈。
同理,假定我们要搭建1所房屋。需要了解房屋的结构构成要有卧室,厨房,浴室,客厅。
但仅仅是了解这样的结构,或许足够成为1名在纸上画房屋结构设计图的设计师;但还不足以让你真的搭建出1所房子。
要成功的搭建出房子,还需要了解房屋的构建成份也就是材料,犹如水泥,钢筋,1些建材等等。
那末对应到Java中来讲,其实也是1样的道理。
而Java为我们提供的材料(基础语言要素),包括:
标示符、关键字、注释、常量(变量)、运算符、表达式和程序语句。
到了这里我们再对前面说到的“类声明、变量、方法”的Java类的结构构成,进行成份分析:
类声明 = 访问修饰符关键字@H_41_403@ + 类声明关键字@H_41_403@ + 类名标示符@H_41_403@。
变量(常量) 的声明 = 访问修饰符关键字@H_41_403@ + 数据类型(基本数据类型或对象数据类型) + 赋值运算符@H_41_403@ + 变量或常量的值
方法的声明 = 访问修饰符关键字@H_41_403@ + 类/变量/方法修饰符关键字@H_41_403@ + 返回类型关键字@H_41_403@ + 方法名标示符@H_41_403@ + 方法参数列表(局部变量)
而方法的内容通常就是通过对:运算符@H_41_403@、表达式@H_41_403@、程序语句@H_41_403@(简单语句和复合语句)组成“招式”,完成对数据(变量等)的操作。
//类声明
public/* 访问修饰符关键字 */class /* 类声明关键字 */JavaArticlescrap /* 类名标示符 */{
private/* 访问修饰符关键字 */int /* 数据类型 */num_1 /* 变量标示符 */= /* 赋值运算符 */10;
private int num_2 = 20;
public/* 访问修饰符关键字 */static/* 静态修饰符关键字 */int /* 方法返回类型 */getSum /* 方法名标示符 */(
int a,int b)/* 参数列表(局部变量) */{
int sum = a + b; // 运算符、表达式、语句等等方法内容
return sum;
}
}
由此我们简单的总结1下,1个Java程序的编写工作,实际通常就是:
根据“需求”,通过对Java基础语言要素(示符、关键字、注释、常量(变量)、运算符、表达式和程序语句)的使用,组成“招式”。
写1篇结构为:题目(类声明) + 人、物、地点(变量/常量声明) + 段落(方法/函数)的“作文”。