一、对象导论
1:多态的可互换对象
面向对象程序设计语言使用了后期绑定的概念。
当向对象发送消息时,被调用的代码直到运行时才能确定。也叫动态绑定。
2:单根继承结构
所有的类最终都继承自单一的基类,这个终极基类的名字就是Object
3:对象的创建和生命期
对象的数据处于作用域,Java完全采用了动态内存分配方式(基本类型只是一种特例)
二、一切都是对象
1:基本类型
基本类型是一个并非是引用的“自动”变量。这个变量直接存储“值”,并置于堆栈中
2:Java中的数组
Java确保数组会被初始化。而且不能在它的范围之外被访问
3:作用域(scope)
Java对象不具备和基本类型一样的生命周期。当用new创建一个Java对象时,它可以存活于作用域之外
{
String s = new String("a string"); } // End of scope
-
-
- 引用
s
在作用域终点就消失了。然而,s
指向的 String 对象仍继续占据内存空间
- 引用
-
import 关键字
指示编译器导入一个包,也就是一个类库,Java中所有的代码都必须写在类里。特定类 java.lang
会被自动导入到每一个Java文件中。
5:static 关键字
- 只想为某一特定域分配单一存储空间,而不去考虑空间要创建多少对象,甚至根本就不创建任何对象。
- 希望某个方法不与包含它的类的任何对象关联在一起。也就是说,即使没有创建对象,也能够调用这个方法。
static
作用于字段时,会改变数据的创建方式static
方法的一个重要用法就是在不创建任何对象的前提下就可以调用它;static
方法就是没有this
的方法,不能直接调用非静态方法,但可以传递一个对象引用到静态方法里,然后通过这个引用(和this
效果相同)来调用非静态方法和访问非静态数据成员。。
三、关系操作符
1:==
和 !=
比较的是对象的引用
2:特殊方法equals()
的默认行为也是比较引用
四、控制执行流程
1:if else
2:switch
JDK1.7开始,switch开始支持String作为选择因子。在switch语句中,String的比较用的是String.equals()
。
因此,需要注意,传给switch的String变量不能为null,同时switch的case子句中使用的字符串也不能为null
五、初始化与清理
1:方法重载
重载方法,方法名相同,形式参数列表不同(参数列表又叫参数签名,包括参数的类型、参数的个数和参数的顺序,只要有一个不同就叫做参数列表不同)
2:重载约束
- 声明为final的方法不能被重载
- 声明为static的方法不能重载,但是能够被再次声明。
- 重载方法的返回类型可以相同也可以不同,但仅返回类型不同不足以成为方法的重载。
class Animal {
public static void walk() { System.out.println("Animal行走方法"); }
}
public class Horse extends Animal {
public void walk(String s) {
System.out.println("Horse四条腿行走");
}
public static void main(String [] args) {
new Horse().walk("");
}
}
class Animal {
public static void walk() { System.out.println("Animal行走方法"); }
}
public class Horse extends Animal {
public static void walk() { //重新定义
System.out.println("Horse四条腿行走");
}
public static void main(String [] args) {
new Horse().walk();
}
}
3:成员初始化
有变量在使用前都能得到恰当的初始化。
Java 中类的成员变量会被自动初始化,但是方法里头的局部变量不会被自动初始化
自动初始化的进行,它将在构造器被调用之前发生
4:对象的创建过程
类加载检查-->分配内存-->初始化零值-->设置对象头-->执行成员变量的初始化-->执行init方法,执行构造方法
5:数组初始化
初始化:
int[] a = new int[3];
初始化各元素值为0
,对于boolean
,初始值为false
;int[] a = {1, 2, 3};
初始化元素分别为1, 2, 3
;
来源:https://www.cnblogs.com/sun-null/p/12359179.html