this关键字
作用:区分成员变量和局部变量同名的问题
方法中的局部变量和成员变量如果同名,在方法中打印该变量会遵循就近原则,不会去理会成员变量,如果在该变量前面加上this.的话,就会指向成员变量,this的作用就是哪个对象调用我就指向哪个对象。
面向对象的案例:判断两人是否为同龄人
l 描述人的类
package cn.itcast.this关键字;
/*
* 定义人的类,描述年龄即可
*/
public class Person {
//定义年龄
private int age;
//设置值,setXxx()方法
public void setAge(int age){
this.age = age;
}
//获取值,getXxx()方法
public int getAge(){
return age;
}
/*
* 定义方法,对年龄进行比较并返回
* 方法名compareAge()
* 返回值:相同为true,不同为false,boolean
* 参数列表:Person变量
*/
public boolean compareAge(Person p){
return this.age == p.age;
}
}
l 测试类
package cn.itcast.this关键字;
/*
* 测试类
* 创建Person类的对象
* 对象名.调用成员变量方法并赋值
* 对象名.调用方法
*/
public class PersonTest {
public static void main(String[] args) {
//创建两个人的对象
Person p1 = new Person();
Person p2 = new Person();
//通过setXxx方法对对象赋值
p1.setAge(20);
p2.setAge(20);
//通过getXxx方法获取打印值
System.out.println(p1.getAge());
System.out.println(p2.getAge());
//调用方法进行比较值
System.out.println(p1.compareAge(p2));
}
}
面向对象的案例:随机点名器
l 学生类
package cn.itcast.random随机点名器;
/*
* 定义一个Student学生类
* 描述出姓名和年龄,私有化
* 对外提供访问方式
*/
public class Student {
//定义学生姓名
private String name;
//定义学生年龄
private int age;
//setXxx和getXxx
public void setName(String name){
this.name = name;
}
public void setAge(int age){
this.age = age;
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
}
l 测试类
package cn.itcast.random随机点名器;
import java.util.ArrayList;
import java.util.Random;
/*
* 测试类
* 分析:1、定义一个Student学生类,描述学生的姓名和年龄
* 2、在主方法中需要定义一个集合去存储学生的信息,实现随机点名器的功能
* 3、定义方法,将学生的姓名和年龄进行设置,并存储到集合中
* 4、定义方法,遍历集合,并获取打印出集合中的信息
* 5、定义方法,实现随机点名的效果
*/
public class StudentTest {
public static void main(String[] args) {
//定义一个ArrayList集合存储学生信息
ArrayList<Student> array = new ArrayList<Student>();
//调用addStudent方法,存储学生的信息
addStudent(array);
//调用遍历集合的方法
printStudent(array);
//调用随机点名的方法
randomStudent(array);
}
/*
* 定义方法,实现随机点名的效果
* 返回值:void
* 参数列表:集合
*/
public static void randomStudent(ArrayList<Student> array){
Random r = new Random();
int index = r.nextInt(array.size());
Student s = array.get(index);
System.out.println(s.getName());
}
/*
* 定义方法,遍历集合,并获取打印出集合中的信息
* 返回值:void
* 参数列表:集合
*/
public static void printStudent(ArrayList<Student> array){
//遍历集合
for(int i = 0;i < array.size();i++){
Student s = array.get(i);
System.out.println("姓名:"+s.getName()+"\t"+"年龄:"+s.getAge());
}
}
/*
* 定义方法,将学生的姓名和年龄进行设置,并存储到集合中
* 返回值:void
* 参数列表:集合
*/
public static void addStudent(ArrayList<Student> array){
//创建Student对象,对其设置年龄和姓名
Student s = new Student();
s.setAge(20);
s.setName("张三");
Student s1 = new Student();
s1.setAge(21);
s1.setName("李四");
Student s2 = new Student();
s2.setAge(23);
s2.setName("王五");
Student s3 = new Student();
s3.setAge(22);
s3.setName("胡椒");
//将信息存储到集合中
array.add(s);
array.add(s1);
array.add(s2);
array.add(s3);
}
}
转载于:https://blog.51cto.com/13502869/2050733