注释:
注释的三种形式:单行注释、多行注释、文档注释
大驼峰:
第一个单词的首字母大写。以大写字母开头,用于类名、接口名
小驼峰:
第一个单词的首字母是小写,其他单词的首字母大写。以小写字母或单词开头,用于变量名、方法名
常量命令规范:
常量是使用final修饰的存储单元。(最终的)
全部为大写字母表示
修饰符:
+访问修饰符
+ default - 什么都不写。同一包内可见
+ private - 同一类可见,修饰变量
+ public - 所有类都可见
+ protected - 受保护的 - 同包内的所有子类可见
逻辑运算符:
&& 逻辑与 两个关系运算表达式结果都是真,结果是真,反之为假
|| 逻辑或 两个关系运算表达式结果有一个为真,结果就是真
! 逻辑非 表达式结果取反
大概顺序:算术运算符>移位运算符>关系运算符>逻辑运算符>赋值运算符
数据类型转换:
小转大自动转
大转小强制转
对象引用与对象的关系:
(1)对象引用,有时也称为对象引用变量,或称为引用变量。
(2)对象引用与对象在物理上是两个不同的东西。
(3)对于上图,我们通常说b1引用(有时也称为指向)图中的那个Box对象。
(4)对象只能通过对象引用来操作。有时直接使用对象引用代指对象,例如对于上面的例子,有时会直接将b1引用的对象称为“对象b1”或“”b1对象。
(5)将一个对象引用赋值给另一个对象引用,则两个引用变量指向同一个对象。
(6)对引用变量进行相等性比较,例如b1==b2,是比较两个引用变量是否引用同一个对象,所以b1==b2的结果为true。对对象引用进行相等性比较,有时也直接称为对象的相等性比较。
return:
1)return语句用于明确地从一个方法返回。即,return语句导致程序的执行控制转移回到方法的调用者。
(2)如果return之后还有代码也不会执行。
(3)如果方法的返回类型为void,可以使用return跳出函数,但是不能使用return返回数据。
(4)可以返回对象。
方法调用:
因为封装,不能直接访问其他对象的成员变量,通常是调用其他对象的方法。
方法调用有两种情况:
调用相同类中的方法:可以直接调用。(本质上是使用this关键字调用)
调用其它类中的方法:对象.方法名
构造方法的语法:
构造方法的作用:开辟内存空间,创建实例,初始化属性值。
构造方法的特点:
(1)方法名与类名相同
(2)不能声明返回类型
(3) 不能使用return语句返回值
(4) 通常为Public
注意:
1、如果没有明确提供构造方法,则系统会提供一个默认的构造方法,默认构造方法(也成为缺省构造方法)没有参数
2、如果我们提供了一个构造方法,则系统不再提供无参数的默认构造方法。
3、如果我们提供了一个有参数的构造方法,同时又需要无参构造方法的话,则必须同时提供一个无参的构造方法
类与对象:
(1)类是一种逻辑结构,对具有公共属性特征和行为(功能)的一个群体进行描述。
(2)定义了类之后,就可以根据类创建(new)出一个实例。
类的方法:
方法是对象行为特征的抽象,类具有的共性的功能操作,称之为方法。方法是个“黑匣子”,完成某个特定的应用程序功能。
注意:
方法中定义变量称为局部变量。
如果没有返回值,则方法的返回类型必须为void
当方法有具体的返回类型时,则必须使用return语句返回一种值。
面向对象——封装:
封装指的是将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部的信息,而是通过该类所提供的方法来实现对内部信息的操作和访问
访问范围: 本类 本包 子类 < 全局(所有包)
访问修饰符:private 缺省(default) < protected < public
封装的通常做法:
(1)将类的属性的访问权限设置为private,提供访问权限为public的set和get方法。在有些情况下不提供set和get方法,有时只提供其中的一个。
(2)提供合理的构造方法,即开发相应参数的构造方法,方便实例化对象。
(3)类的全部或部分方法的访问权限为public,类的公有方法是类对外开放的接口,供外部代码使用类的功能。类的私有方法通常是辅助方法实现部分功能,供类的公有方法调用。
方法重载基础:
在类中可以定义名称相同的方法:只要形参列表不同即可。
特点:
1、方法名相同
2、形参列表不同:形参的类型/顺序、形参的个数
注意的地方:
1、返回值在区分重载方法时不起作用。修饰符也不起作用
2、当调用重载方法时,Java使用参数的类型和/或数量确定实际调用哪个版本。
数组的概念:
一个具有固定大小,可以容纳相同类型数据的集合.
数组元素的类型:可以是基本类型,也可以是引用类型
创建数组需要注意的问题:
1、创建数组时必须知道数组的长度,否则new不知道要开辟多大的内存
2、第二种方式创建数组,必须在声明数组的同时创建数组
3、创建数组之后,数组的长度不能再改变。
继承的语法:
继承使用关键字 extends(扩展)实现
继承的说明:
超类就是父类
派生类就是子类
(1)子类不能从父类继承的资源:
私有方法、构造方法、如果子类与父类在不同包中,子类不能继承父类中那些具有默认访问权的方法。即不能继承那些不能访问的方法。在子类中不能访问到的那些方法,无法继承的
理论上子类会继承父类的全部成员变量,但是子类不能访问父类的私有成员变量,如果子类与父类在不同包中,子类也不能访问父类中具有默认访问权限的成员变量。
(2)JAVA类继承只允许单继承(只能有一个超类);JAVA中接口允许多继承。
(3)子类中可以定义与父类中同名的成员变量,这时子类的成员变量会隐藏\覆盖父类中的同名成员变量。
(4)子类中也可以定义与父类中同名的成员方法,这是子类中的方法重写了父类中的同名方法
子类的构造方法:
(1)构造方法的调用顺序:
在类继承层次中按照继承的顺序从父类到子类调用构造函数。
(2)在子类的构造方法中,一定会调用父类的构造方法。super();
(3)子类的每个构造方法都会隐式的调用父类的无参数构造方法,如果想调用父类的其他构造方法,必须使用super(参数列表)来显式调用。
说明:编写类时,通常需要提供无参数构造方法。
(4)如果父类没有无参的构造方法,或者想调用父类的有参构造方法,则在子类的构造方法中必须显示使用super(xxx)调用父类有参构造方法。这时super(xxx)必须是子类中的第一条语句。
(5)通常的做法:
在父类中定义有参数的构造方法,负责初始化父类的成员变量。
在子类的构造方法中,先调用父类的构造方法完成从父类继承来的那些成员变量,然后初始化子类中特有的成员变量。
注意:
如果父类中定义了一个有参数的构造方法,系统就不会在为父类提供默认的构造方法。这时,在子类的构造方法中,必须使用super(xxx)显示调用父类的有参构造方法
方法重写介绍:
当子类从父类中继承的方法不能满足需要时,子类可以重写该方法,重写方法要求方法名与参数列表都相同。
多态的概念:
同一个方法名称,执行不同的操作。
方法重写的规则:
两同:方法名相同、参数列表相同
两小:返回值类型更小(子类)或相等、抛出的异常更小或相等
一大:访问权限更大或相等
方法重写与方法重载的区别:
只有当两个方法名称和形参列表都相同时才会发生重写。如果不是都相同那么这两个方法就只是简单的重载关系
final修饰变量、方法、类:
如果final 修饰变量,变量就是常量,常量不可以修改,定义时必须初始化
如果final 修饰方法,方法就不能被子类重写
如果final修饰类,类就不能在被扩展,不能在有子类。JAVA类库中的String、Math就是final类
引用类型的常量
如果常量是基本数据类型,不可以再修改。
如果常量是引用类型,不能再将其它对象赋给该引用,但可以使用该引用改变独享内部的属性。
Object类介绍:
所有其他类都是Object的子类。也就是说,Object是所有其他类的超类。这意味着Object类型的引用变量可以引用任何其他类的对象。此外,因为数组也是作为类的实现,所以Object类型的变量也可以引用所有对象都可以使用这些方法。
static关键字:
在正常情况下,只有通过组合类的对象才能访问该类的成员。有时可能希望定义能够独立于类的所有对象进行使用的成员。为了创建这种成员,需要在成员声明的前面使用关键字static。例如Math类中的方法,就是静态方法。
静态变量:
特别注意
(1)被声明为静态的变量本质上是全局变量,类的所有实例共享相同的静态变量。因此,通过一个对象修改静态变量的值后,通过该类的其他对象访问到的静态变量是修改后的值。
(2)访问静态变量的方式:
类名.变量名(推荐)
对象.变量名(不推荐)
(3)初始化时机
静态变量:当类被虚拟机加载,静态变量就初始化,既不需要创建类的对象就可以使用静态变量
静态方法
最典型的静态方法是main()方法;
静态的方法有几个限制:
l 它们只能直接调用其他静态方法。
l 它们只能直接访问静态数据
它们不能以任何方式引用this或super关键字
关于static的几点说明
1、static的本质作用是区分成员属于类还是属于实例。
2、通常把使用static修饰的变量和方法称为类变量和类方法,有时也称为静态变量和静态方法,把不使用static修饰的变量和方法称为实例变量和实例方法。
3、对于使用static修饰的成员,既可以通过类来调用也可以通过类的实例调用,但是建议使用类调用静态成员。对于实例变量和实例方法,则只能通过类的实例调用。
this关键字:
在类的内部,可以在任何方法中使用this引用当前对象。
使用this关键字解决在实例变量和局部变量之间可能发生的任何名称冲突。
局部变量,包括方法的形参,可以和类的实例变量重名。当局部变量和实例变量具有相同的名称时,局部变量隐藏了实例变量。
supper关键字
关键字super用于调用\访问从父类中继承来的实例变量和方法。
super有两种一般用法。第一种用于调用超类的构造方法,第二种用于访问超类 中子类的某个成员隐藏的成员。
使用super()调用父类的构造方法。
在子类中使用super()调用父类的构造方法,必须是第一条语句
在本类中可以使用this()调用重载的构造方法,也必须是第一条语句
在子类的构造方法中this()和super不能同时使用
使用super访问父类中被子类隐藏的成员变量。
父类的属性被子类继承,如果子类又提案加了名称相同的属性,则子类有两个名称相同的属性,如果父类型对象调用属性,就是父类的,如果是子类型对象调用就子类的属性。
一个子类需要引用它的直接超类,都可以使用super
自动装箱与自动拆箱:
自动装箱是这样一个过程,只需要基本类型的对象,就自动将基本类型自动封装(装箱)进与等价的类型包装器中,而不需要明确的构造对象。自动拆箱是当需要时自动抽取(拆箱)已装箱对象数值过程。不需要调用inValue()或doubleValue()这类方法
自动装箱和自动拆箱特性极大的简化了一些算法的编码,移除了单调乏味的手动装箱和拆箱数值操作。它们还有助于防止错误。此外,它们对于泛型非常重要,因为泛型只能操作对象。最后,集合框架需要利用自动拆箱特性进行工作。
String类:
(1)创建的每个字符串实际上都是String类的对象。即使是字符串字面值实际上也是String对象。
(2)String类型的对象是不可变的;一旦创建了一个String对象,其内容就不能在改变。即,一旦创建了一个String对象,就蹦改变该字符串包含的字符。
所谓String类型对象中的字符串是不可改变的,是指创建了String实例后不能修改String实例的内容。但是可以修改String引用变量,使其指向起他String对象。
当每次需要已存在字符串的修改版本时,会创建包含修改后内容的新String对象。原始字符串仍然没有改变。使用这种方法的原因是实现固定的、不能修改的字符串与实现能够修改的字符串相比效率更高。
(3)对于那些需要能够修改的字符串的情况,JAVA提供了两个选择:StringBuffer和StringBuilder。这两个类都包含创建之后可以进行修改的字符串。
(4)String、StringBuffer和StringBuilder类都是在JAVA.lang包中定义的。这三个类都实现了CharSequence接口