目录
Josh Hug是CMU一位年轻计算机教授,他讲课风趣幽默且加以实例分析,让人印象深刻。他的所有网课都能在youtube上找到。
本课程并不是一门专门的java课程,java只是Josh选择用于数据结构讲解的一门编程语言,但是Josh假定所有人都没有编程基础,于是从零开始讲java语言。
java 和面对对象
java是一种重点强调类的语言,它会强制你运用OOP的思想。
- 每一个java文件都必须还有类的声明
- 所有的java代码都必须写在类里面
- 为了运行java代码,必须自己定义一个
psvm
也就是public static void main(String[ ] args)
java语言的要点:
in java ,all code must be a part of a class
java和静态类型
众所周知,和C++一样,java也是一门静态类型的语言,具体表现在以下几点:
- 所有的变量、参数、方法都得声明有明确的类型
- 且类型不得更改(没有强制类型转换那一说)
- 在程序运行之前,编译器会检查程序中的所有类型是否兼容!
- This is unlike a language like Python, where type checks are performed DURING execution.
java静态类型的优劣
优点
- 容易跟踪查看代码正在解决的问题
- 它能让你事先发现错误
- More efficient under the hood.(更有效率,under the hood在后台)
缺点
- 代码非常冗长
- 代码不那么通用,使它通用需要更多的代码。
java程序的编译
.java
文件被编译成易于执行的.class
文件,而且.class
文件在多平台可以执行,实现了java跨平台的梦想。
java中的对象实例化
基本方法和C++没有太大的区别
- 在java中,每个方法都要和某个类有关,实际上是所有代码
- 要运行自己写的一个类,必须先定义一个主方法(main method)
这种方法完全背离了java设计者们的oop思想,代码可以运行,但是会冗长复杂,降低了代码的可读性,虚化了代码的逻辑。
Josh的这句话十分经典:类为自己所有的实例对象提供了可效仿的蓝图
与C++一样,java类也具有自己的构造函数。没有static
的函数是非静态方法,非静态方法的调用必须使用实例化后的对象。
对象的实例化和赋值,以及对象的方法调用。
对象数组语法也和C++相同,所以说,从C
->C++
->java
,oop的思想越来越浓厚。
java中的静态和非静态方法
主要的不同之处
- 静态方法是使用类名来调用的 如 :
Dog.makeNoise()
- 非静态方法是使用对象的名字来调用的:
maya.makeNoise()
为什么要有静态方法?
对于具有普适性的常用函数,声明为静态更方便。
- 非静态方法不能使用类名进行调用
public static void main(String[ ] args)
java这里main函数和C++中的main函数如出一辙,不过后者中有两个参数,前者只有一个参数–命令行参数的字符串数组
using java libraries
和C++中的STL相似,java也拥有自己的库。
函数
public class larger
{
public static int large(int a,int b)
{
if (a > b)return a;
return b;
}
public static void main(String[] args)
{
System.out.println(large(5, 10));
}
}