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。