换一个视角看事务 - 用"Java语言"写"作文"

前段时间在抽工作之空余,更加系统和深入的重新学习Java的一些技术知识。

最近也试着申请了一个专栏,对前段时间的一些收获和知识点做一个系统性的归纳回顾和总结。

昨天也是刚刚写完了关于Java中的各种基础语言要素的总结,总觉得少了点什么。

对基础语言要素的理解和使用,实际上是很重要的。

俗话说,一切伟大的行动和思想,都源于一个微不足道的开始。

而对于一门语言来说,熟练的掌握对其基础语言要素的理解和使用,就是这个“微不足道的开始”

可以这样说,一门语言的基础语言要素,就等同于是一门武功的内功。

将自己的“内功”练到炉火纯青,剩下的,就只是招式(外功)而已了。

我在网上看到别人这样解释内功与外功的区别,觉得用于表达我想说的话,十分契合:

内功就像子弹,外功就像枪。

每个人都会有子弹和枪,但问题是多少和优劣。

内功越强,子弹越多;外功越强,枪就越好。

其两者之间的关系就是,内功是基础,决定外功建筑。

对应于Java当中来说则是:

基础语言要素是根基;而我们所做的所谓的“编程”工作,实际就是通过根基创造使用招式而已。

回想最初学习Java时,一直没能对这些基础语言要素有足够的重视,

也没能对其有一个很系统性的分类归纳的理解,导致总觉得思路有点杂乱。

时常在想,怎么样可以对这些语言要素的概念和使用方式,有一个更形象的理解。

后来在渐渐深入的过程中,发现:

“编程”工作与我们在学生时代都经历的“作文”工作实际上是很相似的。

举例来说:

   请以《站在……的门口》为题写一篇文章。
   要求:1.立意自定。
         2.文体不限。可以记叙经历,抒发感情,发表议论,展开想象,等等。
         3.不少于800字

这是什么?这是一个作文题目。

而:

   有一个100万长度的数组,其中有两个数是重复的,
   请使用Java语言写一个最快的算法,查找到重复的数。

这又是什么?这是一道程序题目。

所以我们不难发现,所谓的“作文题目”与“程序题目”。

归纳来讲:实际上也就是一种“实现需求”罢了。

对于二种不同的需求,我们所做的工作实际上都是“编写文章”!不同的是,

  • 对于“作文题目”,我们使用的语言是:中文;对于“程序题目”,我们使用的语言是:Java;
  • 对于用中文书写的文章,我们通常称为“一篇作文”;对于用Java语言书写的文章,我们通常称为“一个Java类”。

一篇作文的构成可能通常包括:

  • 标题:用于对整篇作文所讲的内容做一个最精短的概括。例如每个人小时候可能都用过的作文题目《我的父亲》,目的就是让阅读的人看见就题目就知道这篇作文是描写关于你父亲的事迹的。
  • 人、物、地点:一篇文章自然会涉及到相关的人,物和事情发生的地点。例如《我的父亲》一文里,通常都有一个经典情节:记得小时候,夜里发高烧下着大雨,也打不到车了。父亲毅然决然的冒着大雨背着我跑到了医院..云云。那么这里涉及到的人就是:“我”和“父亲”;涉及到的物可能包括:雨伞,雨衣等;涉及到的地点可能包括:“家”,医院等.
  • 故事情节(段落):故事情节可能是一篇作文所占比重最大的部分。而同样以《我的父亲》为言,通常我们会根据多个事例来表现父亲对自己的好,而每个事例就会分别对应于一个故事情节。而我们就会通过分段来分别描述这些故事情节,而故事情节里涉及到的就是所谓的“人、物、地点”。

同理的,一个Java类的构成通常包括:

  • 类的声明:Java类的类名与作文的“标题”作用实际是一样的。就是用于描述你封装的该类提供的功能。
  • 变量/常量:变量与常量实际上就是作文中的“人,物和地点”。
  • 方法(函数):方法用于描述我们要提供的程序功能,就如同段落用于描述故事情节一样。而段落涉及“人、物、地点”,方法里使用定义的变量/常量。

我们将上面举例说到的《我的父亲》转换为一个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("记得小时候,有一次");
		sb.append(ME);//使用变量
		sb.append("发高烧!窗外下着大雨,也打不到车。万分紧急之下,");
        sb.append(MY_DAD);
        sb.append("赶紧拿出一件");
        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();
	}
}

该程序运行的输出信息为:

记得小时候,有一次我发高烧!窗外下着大雨,也打不到车。万分紧急之下,我的父亲赶紧拿出一件雨衣为我披上,背上我,冒着大雨把我从我家送到了医院

请看了,我们不正是用Java语言写了一篇“作文”吗?

到此,我们通过以熟悉的“作文”为切入点,了解了一个Java类的构成结构。

由此我们知道了:一个Java类的构成实际并不复杂,它的结构通常就是类声明、变量(常量)以及方法(函数)。

而所谓的一个“复杂的类”就如同“一篇几万字的文章”的原理一样,无非就是:

1、涉及到的人、物更多 = 定义的变量\常量更多

2、段落更多/描述的故事情节更多 = 定义的方法(函数更多)

而对应的,以长篇小说为例。如果一篇文章的故事的字数已经达到了一定范围,那么可能就会影响阅读性。这个时候,我们就可以进一步的对其进行“分解”。

例如一本自传体的长篇小说,一个人一生中可以描述的情节有很多,那么它可能被搭建成如下结构:

有十篇用于描述其青年时期事迹的故事,我们将其提取出来放在一起,形成小说的第一篇:《我的青年时期》

有十篇用于描述其中年时期事迹的故事,我们也将其提取出来,作为小说的第二篇:《我的中年时期》..

从而以此类推。最终这个结构的总和被我们称作“小说”。

Java中,也是一样的。如果多个类综合完成同一方面的功能实现,

那么我们也可以将这些类提取出来,形成一个“篇章”,Java中的包结构就是这个“篇章”。

而最终由多个包结构组合起来的整个程序,就是所谓的一个完整的Java项目。

再壮观的高楼大厦,究其根本也不过就是由众多数量的钢精水泥搭建起来的。

而建筑师能做的就是通过设计手段(招式)让大楼的结构更加稳固,美观和实用。

我们谈到,之所以对一篇长篇小说进行这样的结构搭建。是因为当文章字数达到一定量的时候,就会影响阅读性,其主题也会模糊。

所以在Java中也是同样的道理,这一定程度上也是“代码重构”的初衷之一。类应该具有足够的功能特性化。

前面我们说到的是程序的结构,但同时我更想重点谈到的是Java的基础语言要素的使用。

但是在了解了程序的结构之后,我们相对就更容易了解基础语言要素的意义了。

同样以作文为例,了解作文结构是必要的。但我们还应该做的,就是以结构为切入点,

继续深入看一篇作文的基础要素与基础成分,也就是是:标点符号,词语,语句之类的东西。

因为即使你对于作文结构的研究再深,如果不会使用文字,不会使用标点,不会书写语句,那一切都是空谈。

同理,假设我们要搭建一所房屋。需要了解房屋的结构构成要有卧室,厨房,浴室,客厅。

但仅仅是了解这样的结构,也许足够成为一名在纸上画房屋结构设计图的设计师;但还不足以让你真的搭建出一所房子。

要成功的搭建出房子,还需要了解房屋的构建成分也就是材料,如同水泥,钢筋,一些建材等等。

那么对应到Java中来说,其实也是一样的道理。

而Java为我们提供的材料(基础语言要素),包括:

标示符、关键字、注释、常量(变量)、运算符、表达式以及程序语句。

到了这里我们再对前面说到的“类声明、变量、方法”的Java类的结构构成,进行成分分析:

类声明 = 访问修饰符关键字 + 类声明关键字 + 类名标示符

变量(常量) 的声明 =  访问修饰符关键字 +  数据类型(基本数据类型或对象数据类型) + 赋值运算符 + 变量或常量的值

方法的声明 = 访问修饰符关键字 + 类/变量/方法修饰符关键字 + 返回类型关键字 + 方法名标示符 + 方法参数列表(局部变量)

而方法的内容通常就是通过对:运算符表达式程序语句(简单语句和复合语句)组成“招式”,完成对数据(变量等)的操作。

//类声明
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;

	}
}

由此我们简单的总结一下,一个Java程序的编写工作,实际通常就是:

根据“需求”,通过对Java基础语言要素(示符、关键字、注释、常量(变量)、运算符、表达式以及程序语句)的使用,组成“招式”。

写一篇结构为:题目(类声明) + 人、物、地点(变量/常量声明) + 段落(方法/函数)的“作文”。

时间: 2024-10-13 16:37:57

换一个视角看事务 - 用"Java语言"写"作文"的相关文章

如何判断一个网址是由哪种语言写的

一般的情况看页面的后缀名 Server Side Includes 技术,拓展名为.shtml或.html或.htm PHP技术,拓展名为.php JSP技术,拓展名为.jsp或.jsf(JSF技术是JSP技术的拓展) ASP.NET技术,拓展名为.aspx (x 代表extension) ASP技术,拓展名为.asp ColdFusion技术,拓展名为.cfc 好点的网站,一般用资源转向功能(就向JSP中web.xml定义的名字,把HOME转向到home.jsp,就隐藏了拓展名).或者用Apa

今天看到一个网站不知道是用什么语言写的

今天看到一个网站不知道是用什么语言写的网站(www.kufangwuyou.com)不知道这是怎么回事一直费解,想换成div+cdd的!

java语言写文件内容

import java.io.File;import java.io.FileWriter;import java.io.IOException; public static void main(String[] args) { String fileName = "D:/softwareinstall/apache-jmeter-2.13/testdata/medicalrecord.txt"; String content = vars.get("medicalrecor

Java语言写出水仙花数,

package com.llh.demo; /** * 水仙花数 * @author llh * */public class Demo14 {    public static void main(String[] args) {        for (int i = 100; i <= 999; i++) {            //取出每一位上的数            int gum, sum, bum,num;            bum = i/100;            

java语言程序

第一章 Jave语言基础 1.1 Java语言的特点 领会Java语言的特点.关键字 1010-11.Java语言采用多种机制来保证可移植性,其中最主要的是______.虚拟机 1110-11.Java语言是一种 ____强类型语言___ 语言,它约束程序员必须遵守规定编写程序,能让编译器检测出程序中尽可能多的错误. 1.2 Java应用程序和小应用程序 识记      Java应用程序与小应用程序的特点和区别 11.一个应用程序必须在某个类中定义的方法是______.main() 1201-

Java 语言的发展史

维基百科引入 早期的Java 语言最开始只是Sun计算机(Sun MicroSystems)公司在1990年12月开始研究的一个内部项目.Sun计算机公司的一个叫做帕特里克·诺顿的工程师被公司自己开发的C++和C语言编译器搞得焦头烂额,因为其中的API极其难用.帕特里克决定改用NeXT,同时他也获得了研究公司的一个叫做“Stealth计划”的项目的机会. “Stealth计划”后来改名为“Green计划”,詹姆斯·高斯林和麦克·舍林丹(Mike Sheridan)也加入了帕特里克的工作小组.他们

用Java语言编写一个简易画板

讲了三篇概博客的概念,今天,我们来一点实际的东西.我们来探讨一下如何用Java语言,编写一块简易的画图板. 一.需求分析 无论我们使用什么语言,去编写一个什么样的项目,我们的第一步,总是去分析这个项目需要满足怎样的需求. 那么,画板需要满足怎样的需要呢?换句话说,在画板上,我们应该赋予它什么功能呢?从我们熟悉的画板来看,我们需要实现诸如铅笔.橡皮.喷枪.刷子的功能,我们可以画出一些规则的图形,比如直线.矩形.圆.最好我们还能调整画笔的颜色和粗细.以上,我们希望的是,当我们点击一个按钮的时候,我们

Java语言程序设计 上机实验4 掌握声明接口、一个类实现接口的声明和使用方法

Java语言程序设计 上机实验4 实验目的: 理解接口的作用,理解接口和实现接口的类的关系,掌握声明接口.一个类实现接口的声明和使用方法:熟悉Java语言包和实用包中的常用类. 实验内容:(*)为选做 声明圆柱体类Cylinder,继承椭圆类Ellipse(实现周长Perimeter接口和面积Area接口),为圆柱体类设计较为全面的构造方法,并实现体积Volume接口,计算表面积和体积. 将Java的若干关键字(15个以上)保存在一个字符串数组中,对其按升序排列,再采用顺序查找和二分法查找,判断

java语言MySQL数据库事务的处理

事务处理流程 1.屏蔽自动提交功能 2.处理事务 3.恢复自动提交功能 代码实例 执行程序之前数据表的样子 import java.sql.*; public class GetConnection{ public static void main(String[] args){ Access2Database adb=new Access2Database(); Connection conn=adb.getConn(); //transaction dealing PreparedState