引用数据类型的使用
1.引用数据类型作为参数进行传递时
引用数据类型作为参数进行传递时,形参可以改变实参的内容,但是不能该改变实参对象本身
package com.qf;
public class People {
public static void changeName(Dog d){
d.color="粉色";
}
public static void main(String[] args) {
Dog v = new Dog("白色","牧羊犬",'母',2);
System.out.println(v.toString());
changeName(v);
System.out.println(v.toString());
}
}
2.引用属性类型作为属性进行声明时
模拟人有一条狗
public class People {
private String name;
private Integer age;
private Dog dog;
public People(String name, Integer age, Dog dog) {
this.name = name;
this.age = age;
this.dog = dog;
}
public People() {
}
@Override
public String toString() {
return "People{" +
"name='" + name + '\'' +
", age=" + age +
", dog=" + dog +
'}';
}
public class Dog {
String color;//颜色
String type;//品种
char sex;//性别
int age;//年龄
public void playWithMaster(){
System.out.println("陪主人玩");
}
public void makeHappy(){
System.out.println("使主人开心");
}
public String makeugle(){
return "ugle";
}
public Dog() {
}
public Dog(String color, String type, char sex, int age) {
this.color = color;
this.type = type;
this.sex = sex;
this.age = age;
}
@Override
public String toString() {
return "Dog{" +
"color='" + color + '\'' +
", type='" + type + '\'' +
", sex=" + sex +
", age=" + age +
'}';
}
public class test1 {
public static void main(String[] args) {
Dog v = new Dog("白色","牧羊犬",'母',2);
People p = new People("张三",18,v);
System.out.println(p.toString());
}
}
模拟人送狗
public class test1 {
public static void main(String[] args) {
Dog v = new Dog("白色","牧羊犬",'母',2);
People p1 = new People("张三",18,v);
System.out.println(p1.toString());
People p2 = new People("王五",20,null);
System.out.println(p2.toString());
p2.lendDog(p1,p2);
System.out.println(p1.toString());
System.out.println(p2.toString());
}
}
public void lendDog(People p,People p1){
p1.dog=p.dog;
p.dog=null;
}
访问权限修饰符
- 权限修饰符可以修饰类,属性,方法,从而来控制他们的可见范围
- public 所修饰称为公有的,任何地方都可以看得到(同一个类,同一个包,不同的包)
- privatec 所修饰称为私有的,只要同一个类下面可以看到(同一个类)
- 默认的,什么都不写,只有在同一个类和同一个包下面可以访问(同一个类,同一个包)
封装类
5.类的分类
javaBean的规范
第一步:属性私有化,别忘了加注释
第二步:设计构造方法的重载(有参和无参)
第三步:设计get和set方法
第四步:别忘了toString()方法
注意:如果你打印对象出现的是内存地址,那么你一定没有写toString()方法
对象数组的排序及用法
package com.qf;
import java.util.Arrays;
public class Demo {
public static void main(String[] args) {
Student[] ss ={ new Student("张三",'男',85,16),
new Student("张三1",'男',70,16),
new Student("张三2",'男',65,16),
new Student("张三3",'男',100,16),
new Student("张三4",'男',95,16)};
//遍历
System.out.println(Arrays.toString(ss));
int sum = 0;
int average=0;
//算出平均分
for(int i=0;i<ss.length;i++){
sum+=ss[i].getScorce();
}
average=sum/ss.length;
System.out.println("平均分为"+average);
//排序
//外层循环表示总共比较的轮次
for(int i=0;i<ss.length-1;i++){
for(int j=0;j<ss.length-1-i;j++){
if(ss[j].getScorce()>ss[j+1].getScorce()){
//根据两个人的成绩比较之后,是换两个对象在数组中的下标
Student temp = ss[j];
ss[j]=ss[j+1];
ss[j+1]=temp;
}
}
}
System.out.println(Arrays.toString(ss));
}
}