------- android培训、java培训、期待与您交流! ----------
一、JAVA中的名称规范
包名:多单词组成时所有字母都小写
类名接口名:多单词组成时,所有单词的首字母大写
变量名和函数名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写。
常量名:所有字母都大写,多单词时每个单词用下划线连接。
二、变量类型
float f = 2.3f 必须后面加f,告诉这是单精度
三、逻辑运算符
&和&&的特点
&:无论左边是true还是false. 右边都运算。
&&:当左边为false时,右边不运算
| :两边都参与运算
||:当左边为true。右边不运算。
四、位运算符
《:其实就是乘以2的移动的位数次幂
》:就是除以2的移动的位数次幂
》:最高位补什么由原有数据的最高位值而定。
如果最高位为0,右移后,用0补空位。
如果最高位为1,右移后,用1补空位。
>>>:无论最高位是什么,右移后,都用0补。
一个数异或同一个数两次,结果还是那个数。
五、Ctrl + C 强制结束命令行运行
无限循环的最简单表现形式 for(;;)
栈的特点,数据使用完毕,会自动释放(局部变量都在栈内存中)
六、对象
Person p = new Person("zhangsan",20)
该句话都做了什么事情?
1、因为new用到了Person.class.所以会先找到Person.class文件并加载到内存中。
2、执行该类中的static代码块,如果有的话,给Person.class类进行初始化。
3、在堆内存中开辟空间,分配内存地址。
4、在堆内存中建立对象的特有属性。并进行默认初始化。
5、对属性进行显示初始化
6、对对象进行构造代码块初始化。
7、对对象进行对应的构造函数初始化。
8、将内存地址付给栈内存中的p变量
对象:
子类的所有构造函数,默认都会访问父类中空参数的构造函数
因为子类每一个构造函数内的第一行都有一句隐式super();
当父类中没有空参数的构造函数时,子类必须手动通过super语句形式来指定要访问父类中的构造函数。
当然,子类的构造函数第一行也可以手动指定this语句来访问本类中的构造函数,子类中至少会有一个构造函数会访问父类中的构造函数。
七、抽象类的特点:
1、抽象方法一定在抽象类中。
2、抽象方法和抽象类都必须被abstract关键字修饰
3、抽象类不可以用new创建对象,因为调用抽象方法没意义
4、抽象类中的抽象被使用,必须由子类复写起所有的抽象方法后,建立子类对象调用,如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类。
抽象类和一般类没有太大的不同
该如何描述事物,就如何描述事物,只不过,该事物出现了一些看不懂的东西
这些不确定的部分,也是该事物的功能,需要明确出来,但是无法定义主体。
通过抽象方法来表示
抽象类比一般类多了个抽象函数,就是在类中可以定义抽象方法,抽象类不可以实例化。
特殊:抽象类中可以不定义抽象方法,这样做仅仅是不让该类建立对象。
八、接口:初期理解,可以认为是一个特殊的抽象类
当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表示。
Class 用于定义类
Interface 用于定义接口
接口定义时:格式特点
1、 接口中常见定义:常量,抽象方法
2、 接口中的成员都有固定修饰符
变量:public staticfinal
方法:public abstract
记住:接口中的成员都是public的
接口:是不呆以创建对象的,因为有抽象方法。
需要被子类实现,子类对接口中的抽象方法全都覆盖后,子类才可以实例化,否则子类是一个抽象类。
接口可以被类多实现,接口互相可以多继承
接口的特点
1、 接口是对外暴露的规则
2、 接口是程序的功能扩展
3、 接口可以用来多实现
4、 类与接口之间是实现关系,而且类可以继承一个类的同时实现多个接口。
5、 接口与接口之间可以有继承关系
九、多态:可以理解为事物存在的多种体现形态
1、 多态的体现
父类的引用指向了自己的子类对象
父类的引用也可以接收自己的子类对象
2、多态的前提
必须是类与类之间有关系。要么继承,要么实现
通常还有一个前提:存在覆盖
3、多态的好处
多态的出现大大的提高程序的扩展性
4、多态的弊端
提高了扩展性,但是只能使用父类的引用访问父类中的成员
注意:千万不要出现这样的操作,就是将父类对象转成子类类型。
我们能转换的是父类应用指向了自己的子类对象时,该应用可以被提升,也可以被强制转换。
多态自始至终都是子类对象在做着变化
十、内部类
内部类的访问规则:
1、内部类可以直接访问外部类中的成员,包括私有。
之所以可以直接访问外部类中的成员,是因为内部类中持有了一个外部类的引用,格式 外部类名.this
2、外部类要访问内部类,必须建立内部类对象
访问格式:
1 当内部类定义在外部类的成员位置上,而且非私有,可以在外部其他类中,可以直接建立内部类对象
格式
外部类名.内部类名 变量名 = 外部类对象.内部类对象;
Outer.Inner in = new Outer().new Inner();
2 、当内部类在成员位置上,就可以被成员修饰符所修饰。
比如 private: 将内部类在外部类中进行封装
static: 内部类就具备static的特性
当内部类被static修饰后,只能直接访问外部类中的static成员。出现了访问局限
在外部其他类中,如何直接访问static内部类的非静态成员呢?
new Outer.Inner().function();
在外部其他类中,如何直接访问static内部类的静态成员呢?
Outer.Inner.function();
注意:当内部类中定义了静态成员,该内部类必须是static的。
当外部类中的静态方法访问内部类时,内部类也必须是static的。
当描述事物时,事物的内部还有事物,该事物用内部类来描述。因为内部事务在使用外部事物的内容。
3、匿名内部类:
匿名内部类其实就是内部类的简写格式。
定义匿名内部类的前提
内部类必须是继承一个类或者实现接口
匿名内部类的格式: new 父类或者接口(){ 定义子类的内容 }
其实匿名内部类就是一个匿名子类对象。