尚学堂自学笔记
一、计算机语言发展历史:核心就是向着人类越容易使用的方向发展。
第一代:机器语言;计算机只能理解自己的机器语言。
第二代:汇编语言;
第三代:高级语言。
面向过程编程:C、Fortran、Cobol、Pascal、Ada;
面向对象编程:C++、Java和C#;
Java的核心优势:跨平台。
Android的应用程序是用Java书写的,是一个操作系统。
JDK、JRE和JVM。
JVM是一种规范。就是一个虚拟的用于执行Bytecodes字节码的计算机。JVM可以用软件来实现,也可以用硬件来实现。
环境变量的配置:
JAVA_HOME:所执行的Java命令所在位置;
path:执行dos命令,系统会在path指定的路径中寻找该命令对应的可执行文件。执行路径是指OS搜索本地可执行文件的目录列表。
Java是区分大小写的;
注释不会出现在字节码文件中。即Java编译器编译时会跳过注释语句。
标识符 identifier
作用:给变量、类和方法命名;
Java标识符有如下命名规则:
1、标识符必须以字母、下划线、美元符开头;
2、标识符其他部分可以是字母、下划线、没怨妇和数字的任意组合;
3、Java标识符大小写敏感,且长度无限制。
4、不可以是Java的关键字。
注意:Java不采用通常语言使用的ASCII字符串,而是采用unicode这样的标准的国际字符集,因此,这里的字母的含义:英文、汉字等等(不建议大家使用汉字来定义标识符)。
数据类型:
1、基本数据类型:数值型(整数类型和浮点类型)、字符型和布尔型;
2、引用数据类型:类、接口和数组。
Java语言的整型默认为int型;浮点型默认为double型。
如果数据的大小没有超过byte/short/char的表述范围,则可以自动转型。
float类型的尾数可以精确到7位有效数字。
在比较中,尽量少用浮点数。
字符型:单引号用来表示字符常量;char类型用来表示在Unicode编码表中的字符;Java语言中还允许使用转义字符‘\’来将其后的字符转变为其他的含义。Char是在0~65535范围,运算时直接当做整数来运算;可以把0~65535之间的整数直接转型为char。
boolean类型有两个值,true和false。
自动类型转换:范围小(指的是表述的范围)的数据类型可以自动转化为容量大的数据类型。可以将整型常量直接赋值给byte、short、char等类型变量,而不需要进行强制类型转换,只要不超出其表述范围。
变量(variable)
局部变量:方法或语句块内部定义的变量。在使用前必须先声明和初始化;
成员变量:方法外部、类的内部定义的变量。
常量之能被初始化一次!
Switch括号的表达式在JDK7之前为int或者自动可以转为int的类型(byte、short、char)和枚举类型;在JDK7之后,可以使用字符串。
循环结构都有下面四个结构组成:初始化、条件判断、循环体和迭代。
Break和continue。以及带标签的break和continue。Goto也是Java的关键字,尽管不用。
方法:类似于其他语言的函数,是一段用来完成特定功能的代码片段,声明如下:
[修饰符1 修饰符2 ...] 返回值类型 方法名(形式参数列表){;}
形式参数:在方法被调用时用于接收外界输入的数值;
实参:调用方法时实际传给方法的数据;
实参的数目、参数类型和次序必须和所调用方法声明的形参列表匹配;
return终止方法的运行和指定要返回的数据。
Java中传递参数的原则:只有值传递。基本类型传递的是爱数据本身,引用类型传递的是对对象的引用,而不是对象本身。
OOP的本质:以类的方式组织代码,以对象的方式组织(封装)数据。
类是用于描述同一类型的对象的一个抽象概念,类中定义了这一类对象应所具有的静态和动态属性。
属性用于定义该类或该类对象包含的数据或者说静态属性。属性作用范围是整个类体。
栈(自动分配连续空间,后进先出):存放局部变量;
堆(不连续)new出来的对象;
方法区(也是堆):存放类的代码信息、static变量、常量池。
GC
对象空间的分配:使用new关键字创建对象即可;
对象空间的释放:讲对象赋值null即可。GC将负责回收所有”不可达”对象的内存空间;
要点:程序员无权调用GC;
程序员可以通过System.gc()。通知GC运行,但是JAVA规范并不能保证立刻运行;
finalize方法,是Java提供给程序员用来释放对象或资源的方法,但是尽量少用。
构造函数
1、通过new关键字调用;
2、构造器虽然有返回值,但是不能定义返回类型(返回值的类型肯定是本类),不能在构造器里调用return;
方法重载是指一个类中可以定义相同的名字,但是参数不同的多个方法。调用时,会根据不同的参数表选择对应的方法。
同一个类,同一个方法名;
参数列表不同(类型、个数,顺序不同)。
在类中,用static声明的成员变量为静态变量,或者叫做类属性、类变量;
类变量为该类的公用变量,属于类,被该类的所有实例共享,在类被载入时被显示初始化;
静态方法不可访问非静态成员。
如果希望加载后,对整个类进行某些初始化操作,可以使用static初始化块;静态初始化块是在类初始化时执行,不是在创建对象时执行,静态初始化块中不能访问非static成员。
this不能用于static方法中。
类是对对象的抽象,继承是对某一批类的抽象,从而实现对现实世界更好的建模,提高代码的互用性。
重写:在子类中可以根据需要对从基类中集成来得方法进行重写;
重写方法必须和被重写方法具有相同方法名称、参数列表和返回类型;重写方法不能使用比被重写方法更严格的访问权限。
Super是直接父类对象的引用。可以通过super来访问父类中被子类覆盖的方法或属性。