一*********
重写equals tostring方法内容(比较两个值 )
类名 引用 = new 类名();
new关键字是在创建一个实例。实例是内存中一块保存数据的空间。
类名 引用 ; 引用是一个指向实例的引用。
多个引用指向一个对象
类型 对象名称 = new class类型();
new关键字的实例化的过程就是在内存中开辟空间的过程。
创建一个学员对象
Student s1 = new Student();
再创建一个
Student s2 = new Student();
s1和s2就是变量,是Student这个class类型的变量,也叫Student类的两个对象。
同样比较s1 s2
是因为String重写了equals方法,所以对比学生 也可以重写 转换为学号的比较
二------------------------------- 构造方法 成员方法
成员方法:体现对象的行为
构造方法: 使用构造方法给属性赋值 (在参数过多 类型过多的情况下不建议使用)
1.new关键字后的Teacher();
2.一个类中一定有构造方法 最少一个;如果没有程序自己创建一个空构造方法
3.构造方法的特征 修饰符为public private;没有返回值 方法名称和类名一模一样
4.构造方法作用是用来创建对象。分内存,给属性赋初值
5.成员方法和构造方法的调用方式不一样。 成员方法为对象.方法 构造方法为 new 构造方法
6.如果创建了带参数的构造方法,程序不再自动去创建构造方法 必须手工去创建一个无参的构造方法
三------------------------------- 可变长参数
print();//传递0个以上的参数
public static void print(String... param){//可变长参数
}
ublic static void print(int i,String... param){//可变长参数只能有一个 而且只能在最后
}
public static void printinfo(String[] param2){//可变长参数
}
public static void printInfo(String param2){//非可变长参数
}
四------------------------------- This关键字
名称和属性一致
this.teacherName = teacherName
this.teacherName代表当前对象的属性(成员变量),
this关键字是一个在实例(对象)内部的引用。
this关键字是每个实例(对象)内部都有一个。
this关镇字是一个指向实例(对象)本身的引用。
this.teacher();
当前的对象的方法 (成员方法)
this(); //代表当前对象的无参构造方法 但是只能写到方法中的第一行;
this(param);// 代表当前对象的有参构造方法 但是只能写到方法中的第一行
public static void main(String[] args) {
Teacher t = new Teacher();
System.out.println();
}
}
/*教师类,
this关键字为当前对象的引用,也是指向当前的对象
1.this.teacherName代表了当前对象的属性(成员变量)
2.this.teach()代表了当前对象的方法(成员方法)
3.this()代表了当前对象的无参数构造方法,但是只能写到方法中的第一行
4.this(param)代表了当前对象的有参数构造方法,但是只能写到方法中的第一行
*/
public class Teacher {
//成员变量-属性
String teacherNo;
String teacherName = "zs";//成员变量
//4.如果创建了带参数的构造方法,程序不再自动去创建无参数的构造方法,必须手工去创建一个无参数的构造方法
public Teacher(){
//this("王五");//this(param)代表了当前对象的有参数构造方法,但是只能写到方法中的第一行
System.out.println("这个为当前对象的无参数的构造方法");
}
//使用构造方法给属性赋值
public Teacher(String teacherName){
//this();//3.this()代表了当前对象的无参数构造方法,但是只能写到方法中的第一行
System.out.println("这个为当前对象的有参数的构造方法");
this.teacherName = teacherName;//this.teacherName代表了当前对象的属性(成员变量)
}
public Teacher(int i){
}
//方法-行为
public void eat(){
String teacherName = "ls";//局部变量,优先级高于成员变量
System.out.println("teacherName=" + teacherName);
System.out.println("this.teacherName=" + this.teacherName );
System.out.println("吃饭");
}
public void teach(){
System.out.println("教学");
this.eat();//this.eat()代表了当前对象的方法(成员方法)
}
//写测试程序
public static void main(String[] args) {
//使用构造方法给属性赋值,一般不推荐参数过多,参数的类型过多使用构造方法赋值
Teacher teacher = new Teacher();
System.out.println("teacher.teacherName=" + teacher.teacherName);
/*
//使用对象.属性给属性赋值
teacher.teacherNo = "t001";*/
//teacher.eat();
//teacher.teach();
}
}
五------------------------------- 类的方法重载(overload)
1.方法重载(overload)定义:
对于同一个类,如果这个类里面有两个或者多个重名的方法,但是方法的参数个数、类型、顺序至少有一个不一样,这时候就构成方法重载
2.总结区别:
1和2属于参数的类型不一样1,2和3属于参数的个数不一样3和4参数的顺序不一样
4和5不是 不满足条件
3 如何调用.根据参数不同
4.没计方法的重载的好处,比较方便记忆方法
5.学习过的方法的重载Arrays.sort() Stringindex0fsubstring()
6 构造方法可以重载
方法重载特点:
在同一个方法名相同
参数列表不同(参数的类型不同,个数不同个,顺序不同)
和返回值无关
构造方法有参无参就是方法重载
4和5 重载与返回值无关
方法重载好处
减少了方法名称的数量调用方法更加简洁明了
使整个类的结构显得清晰明了
使用package关键字为类打包
package的命名规则
Java的包名都有小写单词组成
一般公司命名为“com.公司名.项目名.模块名....”。
package必须出现在类的第一句话中
java.lang包是不需要导包的 可以直接使用 System类在java.lang包下
导入包直接导入import static java.lang.Math.*;
然后就可以直接输出属性和方法 但是不推荐静态导入用法 因为可读性差