迪仔的java学习教程
前言:
因为我不算教师,而且理论知识储备也不够详尽,我能做的就是整合ucb的cs61b神课和廖学锋老师的java课程来做一些梳理,计算机是一门工科语言,最需要的就是不断的练习,在联系中理解这些内存机制,数据结构。我希望宝宝可以尽力做一些作业,因为这些作业是国外的大学教授,成千上万的助教花心思布置的作业,目的是让你领会理解,学习是一件辛苦的事情,希望我们一起努力进步。
1. Why Study Algorithms or Data Structures?
原因是想做一些有意思的,漂亮的东西。
链接: https://youtu.be/BIjj3Qcmbf4
https://www.youtube.com/watch?v=pp1NWRDl0pI
有关流体渲染的一些建模,更多的就不放了,我们快点进入正题
2. 从hello world开始
1 | public class HelloWorld { |
和processing,以及python比较,java语言是更啰嗦繁琐的,但是我们从这个小程序可以看到一些java的语法知识
- 这个hello world程序声明了一个class类,而且是public class类。在java中任何代码都必须被包裹在类里。
- 实际运行的method被称为main,声明为public static void main(string[] args). java都会有一个主函数来负责运行
- 我们使用{}来表示这段代码的开始和结束
- 每个语句结尾的时候用分号。
2.1 more about hello world
类名是HelloWorld, case sentstive, 也就是说如果helloworld那就是不同程序,是会识别大小写的。而java里的public, class都是一些固定写法,必须用小写。
类名按照习惯必须大写。
方法除了方法名,还有参数,参数名是args,public,static。这里就是代表这是一个公开的方法,而void是函数的返回值,代表一个空值。常用的返回值还有Int, string等等。
2.2 java运行以及javac
最普遍运行java的方式就算通过java编译器,javac,然后再用解释器interpreter, 比如java。
比如运行helloworld.java,我们可以用两行命令来运行刚才的hello world程序
1 | $ javac HelloWorld.java |
$是命令行的输入提示符,编写语言的过程中不可避免的会涉及到一些命令行操作
这里编译器是把源码编译成二进制的代码,为了能够执行在电脑上。
2.3 变量和循环
1 | public class HelloNumbers { |
1 | $ javac HelloNumbers.java |
函数在使用之前必须声明,而且必须给予变量类型。
我们的循环函数得写在{}之中,控制循环条件是写在{}之外的
System.out.print和System.out.println都是输出,但是区别是println会输出新的一行,而System.out.print输出完后会在原本行停留。
这里加空格的目的是输出的时候不会挤在一起。
2.4 static typing
静态变量,对于java关键的特性有一个就是静态变量检测,比如说
1 | public class HelloNumbers { |
1 | $ javac HelloNumbers.java |
如果我们尝试运行这段代码,会报错。报错的原因是string不能转换为int格式。
这个编译器在运行前就报错了,因为检测到了类型变换的错误。当然python不会有这种问题,即使在程序运行的时候也可以改变函数类型,但是java是强类型语言,因此会报错。
如果你真的深入学习,你会觉得这种强制规范类型的代码更规范
对于编程人员来说更容易查bug
因为会在运行前就查错,所以不太容易使程序崩溃,特别是应用程等等
每一个变量,参数,函数都需要声明,也更易理解明白看一些代码,明白每个函数是做什么事情的。
2.5 关于一个有意思的小例子
1 | String h = 5 + "horse"; |
因为java是强类型的声明,因此如果是string类型的5+”horse”,java会首先认为这是string类型,因此会自动把5转换为“5”,那么输出就是5horse,并不会报错。
但如果是int类型呢,因为”horse”字符串无法转化为int,因此会报错。
在Python中因为变量不需要声明类型,因此5 + “horse”会让编译器困惑,到底是int呢还是string呢?因此会报错。
从这个例子你就可以理解强类型变量的含义
2.6 定义函数
1 | def larger(x, y): |
在python和processing中,函数可以随意被定义