方法参数
按值调用:表示方法接收的是调用者提供的值。
按引用调用:表示方法接收的是调用者提供的变量地址。
一个方法可以修改传递引用所对应的变量值,而不能修改传递值调用所对应的变量值。
JAVA只采用按值传递调用。也就是说,方法得到的是参数值的一个拷贝。
2、方法参数的两种
a、基本数据类型(数字、布尔值);
b、对象引用;对象构造对于java对象的构造:总的来说有6种方法,
第一种是有参数的构造函数,第二种是无参数的构造函数,第三种是重载构造函数,第四种是调用其他构造器的构造函数,第五种是使用初始化块,第六种是使用显式域初始化
(1)如果在构造器中没有显式的给域赋予初值,那么就会自动地赋为默认值:数值为0,布尔值为false,对象引用为null2) 如果初始化块使用的是static,则只执行一次
(3)下面是java中调用构造器的具体处理步骤:
1.所有数据被初始化为默认值(0,false,null)
2.按顺序执行域初始化语句和初始化块
3.执行构造器,如果构造器里面使用了其他构造器,则首先执行里面的构造器。(4)另外还有一个finalize方法用于销毁对象,但是由于java的垃圾回收机制相当完善,因此这个方法并不常用
文档注释
在开始的/**之后,第一行或几行是关于类、变量和方法的主要描述.之后,你可以包含一个或多个何种各样的@标签。每一个@标签必须在一个新行的开始或者在一行的开始紧跟星号(*).多个相同类型的标签应该放成一组。例如,如果你有三个@see标签,可以将它们一个接一个的放在一起。
Object
Obje类是所有Java类的祖先。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。在不明确给出超类的情况下,sun定义的那么多类的终极父类是Object。Object描述的是所有类的通用属性与方法。
1、toString方法
toString() 返回对象的描述信息 java.lang.Object@15db9742 类名@哈希码值的十六进制形式。
直接输入一个对象的时候,会调用对象的toString方法。
2、equals方法
equals() 返回的是比较的结果 如果相等返回true,否则false,比较的是对象的内存地址值。
3、hashCode方法
hashCode() 返回该对象的哈希码值: 采用操作系统底层实现的哈希算法。 同一个对象的哈希码值是唯一的。
java规定如果两个对象equals返回true,那么这两个对象的hashCode码必须一致。
泛型
1、泛型的产生
虽然可以再类型转换的时候通过if语句进行类型检查(instanceof),但是效率较低.(例如吃饭的时候,还需要判断米饭里有没有沙子,吃饭效率低).可以通过给容器加限定的形式规定容器只能存储一种类型的对象.就像给容器贴标签说明该容器中只能存储什么样类型的对象。所以在jdk5.0后出现了泛型。
2、泛型应用:
格式:集合类<类类型> 变量名 = new 集合类<类类型>();
通过<> 来指定容器中元素的类型.
什么时候使用泛型:当类中操作的引用数据类型不确定的时候,就可以使用泛型类.
细节一:声明好泛型类型之后,集合中只能存放特定类型元素
细节二:泛型类型必须是引用类型
细节三: 使用泛型后取出元素不需要类型转换.
3、泛型方法
函数上的泛型定义
细节:
使用泛型方法前需要进行泛型声明,使用一对尖括号 <泛型>,声明的位置在static后返回值类型前。
当一个类中有多个函数声明了泛型,那么该泛型的声明可以声明在类上。
4、泛型类
格式:修饰符 class 类名<泛型>{
}
注意:静态方法不可以使用类中定义的泛型
因为类中的泛型需要在对象初始化时指定具体的类型,而静态优先于对象存在。那么类中的静态方法就需要单独进行泛型声明,声明泛型一定要写在static后,返回值类型之前.
泛型类细节:
1、创建对象的时候要指定泛型的具体类型
2、创建对象时可以不指定泛型的具体类型(和创建集合对象一眼)。默认是Object,例如我们使用集合存储元素的时候没有使用泛型就是那么参数的类型就是Object
3、类上面声明的泛型只能应用于非静态成员函数,如果静态函数需要使用泛型,那么
需要在函数上独立声明。
4、如果建立对象后指定了泛型的具体类型,那么该对象操作方法时,这些方法只能操作一种数据类型。
5、所以既可以在类上的泛型声明,也可以在同时在该类的方法中声明泛型。