Java匹马行天下之教你用学汉语式方法学编程语言

前言:

前段时间接连更新了带小白从入门到了解的几篇博客:

Java匹马行天下之编程常识知多少

《Java匹马行天下之走进编程的殿堂

Java匹马行天下之高级语言大锅烩

Java匹马行天下之C国程序员的秃头原因

Java匹马行天下之Java国出了个Java

Java匹马行天下之Java帝国的崛起

我试着从不同的角度带新手理解编程,希望能帮助一些真正需要的朋友进行学习,后面的三篇故事新手朋友就当真正看故事了,等你学了后面的知识,你就能理解了,现在留个简单印象就可以了。一个月前我的《Java匹马行天下》其实已经更新到Spring框架了,但是我没有继续更新下去,因为又有一届大一新生步入了软件这个大家庭,作为“学长”,为了弥补自己内心的一丝遗憾,我毅然停下来我前进的脚步,决定再回过头去重新带他们走一遍,跟我一起行天下。或许我写的不都是对的,但我保证每一篇都是用我自己的理解认真去写的,是真的站到了作为小白的立场去写的,我也不知道我这样做的意义何在,或许是感恩,也或许是善良,也或许是自作多情,不管是什么吧,都不重要,重要的是我已经做了,那就坚持并做好,别的都让时间去解释吧。我最近注册了公众号,为了方便大家查看,我把文章发布到公众号上了,博客中因为还有别的文章,所以顺序有点乱,建议关注我的公众号,我做了系统的整理,方便你按顺序查看,公众号二维码在文章末尾有,自行关注。

用学汉语式方法学编程

看过上面六篇博客的朋友现在应该已经知道要跟电脑沟通交流就要学那些编程语言,现在我们要思考的问题是如何学编程语言。如何学?说句废话,“该咋学咋学呗”,认真点,你想想你小时候学汉语是怎么学的,是不是先学的“声母韵母”、“一声平二声扬三声拐弯四声降”、“嘴巴张大啊啊啊”,还有那些汉字的笔顺笔画,这些是学习汉语最基本的规则吧,等你学完了这些,你是不是才能组词、造句,然后你就能看懂别人写的优美的句子,写作的时候能引用别人的句子,直到你能自己写出更加优美的句子,再往后,你就能为所欲为了,思想有多远,世界舞台就有多大,天高任你飞。是不是勾起你的回忆了,嗯,看看下面的图片,感叹一声童年真好,再加一句时间真快,继续我们的编程语言吧。

其实编程语言的学习过程和学汉语差不多,首先就是要学习编程语言中最基本的“规则”,等学完这些规则,你才能做一些别的事,至于要做什么那是后面的事,此篇我就只教你编程语言里的“规则”,既然我的题目是Java匹马行天下,我就以Java这门编程语言为例了,此后的所有内容都是用Java。

Java的规则

首先我用最简单的例子普及一下这些规则,平时上学我们都离不开数学,学数学有时候真的很头疼,现在我学高数可痛苦,那现在我们看看计算机是如何“学数学”的。

常量

第一种:

1+1=2

简单吧,这都不用算,但是你发现了没,加号两边的数1是固定的,1就是1,不能再改变了,这在编程语言中把1称为“常量”。

那你知道了,规则一就是让你识别什么是常量?

常量:指在程序运行过程中其值不能改变的量。这是常量的官方定义,不难理解吧。

变量

第二种:

X+Y=Z

看到这个你是不是想到了你学过的方程式了,没错,这就是方程式,你看,加号两边的X和Y你可以给它们赋任意值,是可以变化的,Z随着X、Y的改变而改变,在数学中我们把X、Y、Z叫未知数,但在编程语言中它们有个名字叫“变量”。

规则二:识别什么是变量?

变量:用于存储可变数据的容器。

变量的特点:

  1. 必须要有大小

  2. 存储一定格式的可变数据

  3. 必须要有名字

数据类型

好,明白了常量和变量,再看,上面的变量X和Y给它们赋值,我们可以赋整数,也可以赋小数,这个整数和小数在编程语言中称为”数据类型“,整数和小数只是数据类型中的两种。

规则三:数据类型有哪些?

数据类型分为两种:

一种是内置数据类型,另一种是引用数据类型。

目前我们先了解内置数据类型,引用数据类型在后面会提到。

内置数据类型有八种:

整数型: byte short int long

浮点型: float double

字符型: char

布尔型: boolean

这个数据类型要怎样理解呢?其实也简单,你把整数型、浮点型、字符型、布尔型分别看成是四个容器,生活中牛奶瓶中装的是牛奶,饮料瓶中装的是饮料,同样的道理,整数型这个容器中装的是整数,浮点型容器中装的是小数,字符型容器中装的是字符,布尔型容器是个特例,它里面就装了两个东西,true和false.

我们往牛奶瓶中倒牛奶的时候,如果牛奶很多,小牛奶瓶装不了,我们是不是要换一个大点的瓶子来装牛奶,假如本来准备的是500ML的牛奶瓶,装不了,又换了个1000ML的牛奶瓶。同理,整数型容器中装的是整数,整数都有大小,byte、short、int、long就相当于容器的容量,byte最小,依次增大,这样你就要注意了,以后在往整数型这个容器中“装整数”的时候,要看所选整数的大小,特别小的数放多大的容量里都可以,但最好是物尽其用,别浪费空间,大点的数就要根据实际情况具体分析了,要做到不浪费空间,也要“装得下,不遗漏”。

浮点型容器中装的是小数,float和double也可以看成是容器的容量,float叫单精度,double叫双精度,理解同上。

两者的主要区别如下:

  1.在内存中占有的字节数不同

    单精度浮点数在机内存占4个字节

    双精度浮点数在机内存占8个字节

  2.有效数字位数不同

    单精度浮点数有效数字8位

    双精度浮点数有效数字16位

  3.数值取值范围

    单精度浮点数的表示范围:-3.40E+38~3.40E+38

    双精度浮点数的表示范围:-1.79E+308~-1.79E+308

  4.在程序中处理速度不同

    一般来说,CPU处理单精度浮点数的速度比处理双精度浮点数快

如果不声明,默认小数为double类型,所以如果要用float的话,必须进行强转

  例如:float a=1.3; 会编译报错,正确的写法 float a = (float)1.3;或者float a = 1.3f;(f或F都可以不区分大小写)

注意:float是8位有效数字,第7位数字将会四舍五入

数据类型转换

在上面我提到了一个词叫强转,我来解释一下:

自动类型转换

假如现在你分别有一个500ML和1000ML的牛奶瓶,然后你需要装300ML牛奶,你先用500ML的牛奶瓶装了那300ML牛奶,然后你又把装在500ML牛奶瓶中的牛奶装到了1000ML的牛奶瓶中,这个过程在编程语言中叫自动类型转换(也叫隐式类型转换),根据这个例子也可以解释为把一个数赋值给更大数值范围的变量,例如可以将byte类型的整数赋值给short类型的整数,可以将short类型的整数赋值给int类型的整数,可以将int类型的整数赋值给long类型的整数。

强制类型转换

好,现在再想,依旧有两个分别是500ML和1000ML的牛奶瓶,然后你需要装800ML牛奶,你先用1000ML的牛奶瓶装了那800ML牛奶,然后你现在想把装在1000ML牛奶瓶中的牛奶倒进500ML的牛奶瓶中,想想会怎样,如果你强行倒入,是不是会溢出牛奶啊,这个过程在编程语言中叫强制类型转换(也叫显式类型转换)。

对应到编程语言中,可以把byte 理解为1两的碗,short 2两的碗,int 4两的碗,long 8两的碗。1两碗的满碗酒可以倒入 2两 4两 8两的碗中。但是 4两碗的酒倒入1两碗的酒就有一些问题。

运算符

上面介绍的都是编程语言中对数的理解,了解了这些之后终究离不开运算,运算离不开加减乘除,编程语言中把数学中的(+、-、*、/)叫运算符。

OK,学完上面这些其实我们可以让计算机进行一些运算了,不过还没那么简单,你要让计算机运算,你怎么告诉计算机你需要让它运算什么啊?难道就跟平时说话一样问它1+1等于几?哈哈,开玩笑的,别忘了计算机是死的,不会思考,就拿那个方程式来说吧,你给变量X赋一个数值,你得告诉它这个数值是什么数据类型,计算机才能知道,才能进行相应的计算。这个过程在编程语言中叫变量的声明和赋值

例:int X =10;

好,下面我们让计算机做一道加法题吧,我们在现实生活中写作业是在笔记本上写的吧,那在电脑上写作业,你也得找个"笔记本",在编程语言中这个“笔记本”叫编译器,然后你看你的笔记本上有画的像四线三格那样的各种线,老师让你把作业写到线里面,不要乱写,在编程中也一样,电脑老师让你把作业写到笔记本的“四线三格”中(暂且这样理解吧,等你学到后面之后就会有自己的理解了,目前就先按我说的这样理解),下面我就开始在编译器上写加法题了:

 public class AddDemo {
    public static void main(String[] args) {
        int X=10;
        int Y=20;
        System.out.println("X+Y的和为:"+(X+Y));
    }
 }

我用的这个编译器叫IDEA,也就是我写作业的笔记本,下面图片中的这个就相当于笔记本上的四线三格,你要把你的作业写到这里面电脑才会看,你必须按老师说的做

下面这个已经不陌生了吧,这个就是上面讲到的声明变量和给变量赋值。

其实现在你看不懂的应该是下面这句

System.out.println()这是一个函数,函数我到后面会讲到,暂时做个了解,你现在只需要知道,这个就跟生活中你跟老外说声Hello,他就知道你在跟他问好一样,你给电脑输入System.out.println(),电脑就知道你要在屏幕上输出东西,你只需要把你想要输出到电脑屏幕上的东西写道System.out.println()函数里面即可,你看,我在函数里面写的是System.out.println("X+Y的和为:"+(X+Y));电脑就会给我在屏幕上输出X+Y的值,至于里面为什么要那样写,后面我也会说,这就是编程语言里面的一些规则,你只有会这些规则,你才能跟计算机进行沟通交流,让计算机做你想做的事。

结束语

3500字了,先打住吧,写半天了,写这东西真耗时,不知不觉几个小时过去了,我还没见过有人像我这样用大白话写过Java基础,我也不知道我这样写别人看了能不能接受,但是我说了,我已经做了,有决定总比没决定好,喜欢的朋友不要吝啬你手中的赞,该鼓励的时候鼓励一下,给我点动力,最好是也关注一下我的公众号,我也不是拉顾客赚钱啥的,只能说是增加点人气,不至于那么冷清,可以传播一下,让更多有需要的人去发现,让这篇博客有它的价值,我就知足了。

后面我会不定期更新,想追剧的朋友就点个关注吧!

【尊重原创】:本文出自博客园https://www.cnblogs.com/zyx110/

Java匹马行天下之教你用学汉语式方法学编程语言的更多相关文章

  1. Java匹马行天下之新手学习目录

    Java匹马行天下之新手学习目录 学习路线 [Java匹马行天下——Java学习路线] [Java匹马行天下——开篇学习计划] 基础篇 [Java匹马行天下之学编程的起点——编程常识知多少] [Jav ...

  2. Java匹马行天下——开篇

    个人感言: 匹马行天下是我高中时候看过一部叫<九鼎记>的小说中的其中一个大章节标题,在整个这一章中,讲的是是主人公滕青山历经艰险,又心如磐石,一心修行,最后巅峰归来的故事.现在回想,依旧心 ...

  3. Java匹马行天下之JavaWeb核心技术——JSP

    JSP动态网页技术 一.JavaWeb简介 一.什么是JavaWeb? JavaWeb是用Java技术来解决相关web互联网领域的技术总称. 需要在特定的web服务器上运行,分为web服务器和web客 ...

  4. Java匹马行天下之JavaWeb核心技术——JSP(续一)

      十二.JSP表单处理 我们在浏览网页的时候,经常需要向服务器提交信息,并让后台程序处理.浏览器中使用 GET 和 POST 方法向服务器提交数据. GET 方法 GET方法将请求的编码信息添加在网 ...

  5. Java匹马行天下之J2EE框架开发——Spring—>Spring框架知多少

    ————也许我注定成不了一个伟大的人,但是至少我可以做一个很棒的自己.我想我现在应该做的不是瞻前顾后,而是活在当下,正确认知自己,做好自己现在的工作,努力提升自己的能力,踏踏实实地做一个程序员 一.思 ...

  6. Java匹马行天下之C国程序员的秃头原因

    Java帝国的崛起 前言: 分享技术之前先请允许我分享一下黄永玉老先生说过的话:“明确的爱,直接的厌恶,真诚的喜欢.站在太阳下的坦荡,大声无愧地称赞自己.” <编程常识知多少> <走 ...

  7. Java匹马行天下之 Java国出了个Java——举国欢庆

    Java帝国的崛起 前言: 看庭前花开花落,宠辱不惊, 望天上云卷云舒,去留无意. 闹心的事儿,选择释怀: 纠缠的人儿,试着放下, 生活其实很美. 心若向阳,就无惧悲伤. 愿你明朗坦荡纵情豁达,有得有 ...

  8. Java匹马行天下之Java帝国的崛起(大结局)

    Java匹马行天下之Java帝国的崛起大结局 前言: [博客*缘] 网络真情伴, 博客友谊连. 笑中藏泪暖中寒. 回想那些悲喜, 苦涩也缠绵. 往事难回首, 新篇染旧言. 世间多少梦能全. 感谢相牵, ...

  9. Java匹马行天下之JavaSE核心技术——异常处理

    Java匹马行天下之JavaSE核心技术——异常处理 异常的简介 在Java中,异常就是Java在编译.运行或运行过程中出现的错误. 程序错误分为三种:编译错误.运行时错误和逻辑错误 编译错误是因为程 ...

随机推荐

  1. cesium页面小控件的隐藏

    cesium页面小控件的隐藏 1   创建一个Viewer var viewer = new Cesium.Viewer('cesiumContainer');//cesiumContainer为di ...

  2. Go组件学习——手写连接池并没有那么简单

    1.背景 前段时间在看gorm,发现gorm是复用database/sql的连接池. 于是翻了下database/sql的数据库连接池的代码实现,看完代码,好像也不是很复杂,但是总觉得理解不够深刻,于 ...

  3. List集合的排序

    最近在写需求时,将某张表中的短信信息拿出,sql写完后,取出来后的结构是List<Map>,在进行到某一步时需要将这个List<Map>进行逆序排序, 当时第一想法便是写一个f ...

  4. Linux开机启动过程(个人理解)

    简述Linux启动过程 1)BIOS开机自检 2)MBR引导 3)启动引导程序菜单(GRUB) 4)加载内核 5)加载虚拟文件系统加载函数模块 6)启动系统进程 /sbin/init --->/ ...

  5. 【Offer】[37] 【序列化二叉树】

    题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 请实现两个函数,分别用来序列化和反序列化二叉树. 二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得 ...

  6. 【LeetCode】17-电话号码的字母组合

    题目描述 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母. 示例: 输入:"23" 输出: ...

  7. idea中applicationContext-trans.xml中的Cannot resolve bean 'dataSource'...的问题解决

    问题如下: (applicationContext-trans.xml中的部分截图) 先了解问题是怎么出现的: 此处的dataSource是在applicationContext-dao.xml中配置 ...

  8. android Action中的data属性

    (2) 根据Action和Data匹配 <activity android:name=".MyActivityTwo" android:label="@string ...

  9. 为什么有的编程规范要求用 void 0 代替 undefined

    Undefined Undefined 类型表示未定义,它的类型只有一个值,就是 undefined. 任何变量在被赋值前它的值都是 undefined,但是在 JavaScript 引擎中,unde ...

  10. .Net基础篇_学习笔记_第四天_关系运算符和逻辑运算符

    1.关系运算符 包含:>   <   <=  >=   ==  != 以及bool类型中的true和false. 2.逻辑运算符 与 && 或 || 非 ! 注 ...