Day09 JavaObject01

1.定义一个Student类:
a. 要求包含4个成员变量 String name, int age, boolean isFemale, int sno
b. 分别定义5个构造方法
分别为无参构造
初始化name成员变量值的1参构造方法
初始化name 和 sno两个成员变量值的2参构造方法
初始化name,age,isFimale三个成员变量值的3参构造方法
初始化name,age,isFemale,sno这4个成员变量值的4参构造方法
c. 在定义一个成员方法
public void print() { System.out.println(name + “—” + age + “—” + (isFemale ? “男” : “女”) + “—” + sno);

package com.cskaoyan.syntax.homework.Work01;

/**
 * 1.定义一个Student类:
 *    a. 要求包含4个成员变量 String name, int age, boolean isFemale, int sno
 *    b. 分别定义5个构造方法
 *       分别为无参构造
 *  初始化name成员变量值的1参构造方法
 *  初始化name 和  age两个成员变量值的2参构造方法
 *  初始化name,age,isFemale三个成员变量值的3参构造方法
 *  初始化name,age, isFemale,sno这4个成员变量值的4参构造方法
 *    c. 在定义一个成员方法
 *       public void print() {
 *    System.out.println(name + "---" + age + "---" + (isFemale ? "男" : "女") + "---" + sno);
 */
public class Demo01 {
    public static void main(String[] args) {
        //001
        /*Student stu0 = new Student();
        stu0.print();
        Student stu1 = new Student("张三");
        stu1.print();
        Student stu2 = new Student("张三",18);
        stu2.print();
        Student stu3 = new Student("张三",18,true);
        stu3.print();
        Student stu4 = new Student("张三",18,true,1);
        stu4.print();*/
        //002
        Student stu1 = new Student("张三",18,true, 1);
        Student stu2 = new Student("李四",25,false, 2);
        stu1.print();
        stu2.print();
    }
}
class Student{
    String name = "1";
    int age;
    boolean isFemale;
    int sno;
    //无参构造
    Student(){

    }
    //初始化name成员变量值的1参构造方法
    Student(String name){
        this.name = name;
    }
    //初始化name 和 sno两个成员变量值的2参构造方法
    Student(String name,int age){
        this.name = name;
        this.age = age;
    }
    //初始化name,age,isFemale三个成员变量值的3参构造方法
    Student(String name,int age,boolean isFemale){
        this.name = name;
        this.age = age;
        this.isFemale = isFemale;
    }
    //初始化name,age, isFemale,sno这4个成员变量值的4参构造方法
    Student(String name,int age,boolean isFemale,int sno){
        this.name = name;
        this.age = age;
        this.isFemale = isFemale;
        this.sno = sno;
    }
    public void print() {
        System.out.println(name + "---" + age + "---" + (isFemale ? "男" : "女") + "---" + sno);
    }
}

测试:
在这里插入图片描述

  1. 在第一题的基础上,创建两个Student对象分别为stu1和stu2
    要求stu1对象的四个成员变量name, age, isFemale, sno的值分别为“张三”,18,true, 1
    要求stu2对象的四个成员变量name, age,sFemale, sno的值分别为“李四”,25,false, 2
    然后在两个对象上调用print()方法,即stu1.print(), stu2.print(),
    两次调用方法输出的结果相同吗?
    为什么?(提示:在方法体中访问name成员变量,直接用成员变量名name,是this.name的简写形式)

对题1中代码修改部分如下:

Student stu1 = new Student("张三",18,true, 1);
Student stu2 = new Student("李四",25,false, 2);
stu1.print();
stu2.print();

测试:
在这里插入图片描述
说明:
不相同,因为用同一个类创建了两个不同的对象,开辟了两个不同的内存空间存放两个不同对象的属性值。

  1. 在定义类MyStudent(类中定义的成员变量和成员方法同Student, 同时在MyStudent类中定义和Student相似的5个构造方法)的基础上,
    根据需要修改MyStudent相应构造方法的方法体,要求实现
    MyStudent st = new MyStudent(); st.print(); 这两句代码打印出的结果是 麻花疼—100—男---1000
package com.cskaoyan.syntax.homework.work03;

/**
 * 3. 在定义类MyStudent(类中定义的成员变量和成员方法同Student,
 *  同时在MyStudent类中定义和Student相似的5个构造方法)的基础上,
 *  根据需要修改MyStudent相应构造方法的方法体,要求实现
 *  MyStudent st = new MyStudent();
 *  st.print();
 *  这两句代码打印出的结果是 麻花疼---100---男---1000
 */
public class Demo03 {
    public static void main(String[] args) {
        MyStudent st = new MyStudent();
        st.print();
    }

}
class MyStudent{
    String name = "麻花疼";
    int age = 100;
    boolean isFemale = true;
    int sno = 1000;
    //无参构造
    MyStudent(){

    }
    //初始化name成员变量值的1参构造方法
    MyStudent(String name){
        this.name = name;
    }
    //初始化name 和 sno两个成员变量值的2参构造方法
    MyStudent(String name,int age){
        this.name = name;
        this.age = age;
    }
    //初始化name,age,isFemale三个成员变量值的3参构造方法
    MyStudent(String name,int age,boolean isFemale){
        this.name = name;
        this.age = age;
        this.isFemale = isFemale;
    }
    //初始化name,age, isFemale,sno这4个成员变量值的4参构造方法
    MyStudent(String name,int age,boolean isFemale,int sno){
        this.name = name;
        this.age = age;
        this.isFemale = isFemale;
        this.sno = sno;
    }
    public void print() {
        System.out.println(name + "---" + age + "---" + (isFemale ? "男" : "女") + "---" + sno);
    }
}

测试:
在这里插入图片描述

  1. 如图所示,分别将一个double类型的数据和一个引用类型的数据传入某个方法,在方法内分别对对应的数据进行一些运算,经过运算之后,double类型的数据和引用类型的数据分别是什么?
    在这里插入图片描述>

画图分析(分析结果在图左上角):
在这里插入图片描述
代码验证:

package com.cskaoyan.syntax.homework.work04;

public class Demo04 {
    public static void main(String[] args) {
        Person p = new Person();
        p.name = "我是马化腾";
        p.age = 50;
        PersonTest(p);
        double money = 100.00;
        doubleTest(money);
        System.out.println("方法执行后的money:" + money);
        System.out.println("方法执行后的name:" + p.getName());
    }
    private static void doubleTest(double money){
        money = 200.00;
    }
    public static void PersonTest(Person person){
        System.out.println("传入的person的name:" + person.name);
        person.name = "我是马云";
        System.out.println("方法内重新赋值后的name:" + person.name);
    }
}
class Person{
    String name;
    int age;
    public String getName(){
        return this.name;
    }
}

测试:
在这里插入图片描述

发布了12 篇原创文章 · 获赞 0 · 访问量 3923

猜你喜欢

转载自blog.csdn.net/qq_38628659/article/details/104294256
今日推荐