1.float、long的赋值

float类型赋值时,要在末尾加上f,例如:

float a = 3.14f;

long类型在赋值时,要在末尾加上l,例如:

long b = 100l;

2.引用型

观察以下代码:

String s0 = "hello";

String s1 = "hello";

上述代码定义了两个字符串,但是内存中只会有一个hello字符串,而s0和s1都去引用这同一个hello,因此说String是引用型。

3.实例变量和类变量:

4.static不能访问非static

static方法访问非static的成员变量,编译不通过。

5.方法重载:

允许一个类中存在同名方法,只要它们的参数的类型或者参数的数量不一样即可。

6.可变参数:

方法的参数个数不确定。

7.对象的存储

对象在内存中的存储,是存储到堆里面的:

8.Java的参数传递

java里面参数传递的方式只有一种:值传递。

9.包的问题

同一个包里面的类可以彼此引用,不同包的类要先导包才能引用。

10.jdk与jre的关系

jre是Java运行环境,jdk = Java development kit 里面即包含了Java的运行环境,也包含了Java的开发环境。

11.对象被创建时的初始化赋值

 

 12.对象属性的隐藏

封装和隐藏的优点:

 

 

13.构造方法(对象的构造器)

person p = new person()//为什么能new出一个对象呢,就是因为我们在创建一个类的时候,Java会默认写一个构造方法public person(){},我们new的时候其实就在调用这个构造方法。

构造方法里面可以初始化属性值。

并且显示的定义了构造方法,就会覆盖掉默认的构造方法。

 

 或者可以通过传参,来自己定义对象的初始值。

 

 

 14.this关键字

 

加了this之后的变量就是类的成员变量,没加this就是函数的形参。

 

 

 this还可以用来调用构造方法:this();

 15.override

子类继承父类时,可以重写父类的方法。但是要遵循以下原则:

 

16.super

super关键字用于多层继承,具体功能如图中红字所述:

 

调用父类方法:

17.简单类的实例化

 

自我思考:是不是对象的成员变量及其值都放在jvm的堆中?是不是引用对象的引用变量放在栈中?对象实例化的最后一步就是把对象的地址赋给引用变量?

18.多态性

Java的方法重载以及override,都体现了多态性。

 

 

 

对象的多态:父类引用型变量可以引用子类对象实例(运行时动态绑定),但是该引用变量只能访问子类实例的方法,不能访问子类中的非父类成员变量。

19.object

object类是最底层的类。作用:

 

 

 类的转换:

 

 

 

 20.equals

用==来比较两个字符串是不行的,因为要使==成立,那么左右两边都必须是同一个对象,而两个string往往不属于同一个对象,所以就算其内容相等,也会得出false的结论;所以比较string通常用equals,其实equals原本也是看是不是同一个对象,但是string继承了object的equals方法后重写了这个方法,把它改成了只看内容,不看对象。

 

 

22.String对象的创建

 

 

 

23.static

类变量(静态变量)在其他类中可以直接使用,如:类名.a = xx; 但是实例变量必须在对象实例化之后才可使用。类似的还有静态方法,其他类可直接使用。值得注意的是,static的内容在初始化之后是不会改变的,以及静态方法不能使用非静态的成员变量。

 

 

 24.单例开发模式

 

例子:私有化构造器,使得外界不能new对象,只能通过getinstance来获得对象。

 

 

另外一种写法:懒汉式

 

 

 25.代码块

 

静态代码块:

 

 

 静态代码块只能执行一次:

 

26.接口类

接口类中定义的变量为常量,定义的方法默认为抽象方法。

 

27.面向对象总结

28.异常

例子:

 

 

 子类在重写父类方法时,不能抛出比父类方法范围更大的异常。

29.hashset

 

泛型:

 

 

 

 

 

 

 treeset在存储对象的时候,通过实现“比较器”来进行排序,再存储。即comparator。

30.List

 

 

 

 31.map

 

 

 

 类似的还有treemap。