8.类与对象一举例、匿名对象

package com.atguigu.Demo;
/*
 * 1.编写程序,声明一个method方法,在方法中打印一个10*8的*形矩阵,在main方法中调用该方法
 * 2.修改上一个程序,在method方法中,除打印一个10*8的*形矩阵外,在计算该矩阵面积,并将其作为方法返回值。在main
 *    方法中调用该方法,接受返回的面积值并打印
 * 3.修改上一个程序,在method方法提供m和n两个参数,方法中打印一个m*n的*形矩阵,计算该矩阵面积,并将其作为方法返回值。在main
 *    方法中调用该方法,接受返回的面积值并打印
 *
 */
/*题目1
public class Exer3 {
 public static void main(String[] args) {
  Exer3 test = new Exer3();
  test.method();
 }
 
 public void method() {
  for(int i = 0;i < 10;i++) {
   for(int j = 0; j < 8; j++) {
    System.out.print("*");
   }
   System.out.println();
  }
 }
}
*/
/*题目二
public class Exer3 {
 public static void main(String[] args) {
  Exer3 test = new Exer3();
  
  //int s = test.method();
  //System.out.println(s);
  System.out.println(test.method());    
 }
 
 public int method() {
  for(int i = 0;i < 10;i++) {
   for(int j = 0; j < 8; j++) {
    System.out.print("*");
   }
   System.out.println();
  }
  int area = 10 * 8;
  return area;
 }
}
*/
//题目3
public class Exer3 {
 public static void main(String[] args) {
  Exer3 test = new Exer3();
  System.out.println(test.method(12, 10));    
 }
 public int method(int m,int n) {
  for(int i = 0;i < m;i++) {
   for(int j = 0; j < n; j++) {
    System.out.print("*");
   }
   System.out.println();
  }
  return m * n;
 }
}
/*
定义类Student,包含三个属性:学号number(int),年级state(int),成绩score(int).创建20个学生对象,学号为1到20,年级和成绩都由随机数确定
问题一:打印出3年级的学生信息
问题二:使用冒泡排序,遍历所有学生信息

1)生成随机数:Math.random(),返回值类型double
2)四舍五入取整:Math.round(double d),返回值类型long
*/
public class StudentTest {
    public static void main(String[] args) {        
        //声明一个Student类型的数组  对象数组
        Student[] stus = new Student[20];
        for(int i = 0; i < 20; i++) {
            //给数组元素赋值 每个元素创建一个实体对象
            stus[i] = new Student();
            //给Student对象的属性赋值
            stus[i].number = (i + 1);
            //年级[1,6]
            stus[i].state =(int) (Math.random() * (6 - 1 + 1) + 1);
            //成绩[0,100]
            stus[i].score =(int) (Math.random() * (100 - 0 + 1));
        }        
        //遍历所有学生信息
        for(int i = 0;i < stus.length; i++) {            
            System.out.println(stus[i].Info());
            //System.out.println(stus[i]);stu[i]存放 要么null 要么地址值            
        }       
        System.out.println("*******************");        
        //题目一
        for(int i = 0;i < stus.length; i++) {
            if(stus[i].state == 3) {
                System.out.println(stus[i].Info());
            }                            
        }        
        System.out.println("*******************");
        for(int i = 0;i < stus.length - 1;i++) {
            for(int j = 0;j < stus.length - 1 - i;j++) {
                if(stus[j].score > stus[j+1].score) {
                    //如果需要交换,交换的是数组元素:Studnet对象
                    Student temp = stus[j];
                    stus[j] = stus[j+1];
                    stus[j+1] = temp;
                }
            }            
        }
       for(int i = 0;i < stus.length; i++) {            
            System.out.println(stus[i].Info());                        
        }        
    }
}
class Student{    
    int number;
    int state;
    int score;
    //输出信息    
    public String Info() {        
        return ("学号为:"+number +"年级为"+state+"成绩为"+score);        
    }     
}
/*
public class StudentTest {
    public static void main(String[] args) {        
        //声明一个Student类型的数组  对象数组
        Student[] stus = new Student[20];
        for(int i = 0; i < 20; i++) {
            //给数组元素赋值 每个元素创建一个实体对象
            stus[i] = new Student();
            //给Student对象的属性赋值
            stus[i].number = (i + 1);
            //年级[1,6]
            stus[i].state =(int) (Math.random() * (6 - 1 + 1) + 1);
            //成绩[0,100]
            stus[i].score =(int) (Math.random() * (100 - 0 + 1));
        }        
        //遍历所有学生信息
        for(int i = 0;i < stus.length; i++) {            
            System.out.println("学号为:"+stus[i].number +
                    "年级为"+stus[i].state+"成绩为"+stus[i].score);            
        }        
    }
}

class Student{    
    int number;
    int state;
    int score;     
}
*/
public class StudentTest1 {
    public static void main(String[] args) {       
        //声明一个Student类型的数组  对象数组
        Student1[] stus = new Student1[20];
        for(int i = 0; i < 20; i++) {
            //给数组元素赋值 每个元素创建一个实体对象
            stus[i] = new Student1();
            //给Student对象的属性赋值
            stus[i].number = (i + 1);
            //年级[1,6]
            stus[i].state =(int) (Math.random() * (6 - 1 + 1) + 1);
            //成绩[0,100]
            stus[i].score =(int) (Math.random() * (100 - 0 + 1));
        }        
        StudentTest1 test = new StudentTest1();      
        //遍历所有学生信息
        test.print(stus);
        System.out.println("*******************");
        test.searchState(stus, 3);
        System.out.println("*******************");
        test.sort(stus);
        test.print(stus);
    }   
    //遍历Student1[]数组操作
    public void print(Student1[] stus) {
        for(int i = 0;i < stus.length; i++) {            
            System.out.println(stus[i].Info());                        
        }
    }    
    /**
     * @Description 查找Student 数组中指定年级的学生信息
     * @param stus 要查找的数组
     * @param state 要查找的年即
     */
    public void searchState(Student1[] stus,int state) {
        for(int i = 0;i < stus.length; i++) {
            if(stus[i].state == state) {
                System.out.println(stus[i].Info());
            }                            
        }
    }    
    public void sort(Student1[] stus) {
        for(int i = 0;i < stus.length - 1;i++) {
            for(int j = 0;j < stus.length - 1 - i;j++) {
                if(stus[j].score > stus[j+1].score) {
                    //如果需要交换,交换的是数组元素:Studnet对象
                    Student1 temp = stus[j];
                    stus[j] = stus[j+1];
                    stus[j+1] = temp;
                }
            }            
        }
    }
}
class Student1{    
    int number;
    int state;
    int score;
    //输出信息    
    public String Info() {        
        return ("学号为:"+number +"年级为"+state+"成绩为"+score);        
    }     
}

 理解“万事万物皆对象”

1.在java语言范畴中,我们都将功能、结构等封装到类中,通过类的实例化,来调用具体的功能结构。

>scanner、String 等

>文件file

>网络资源:URL

2.涉及到java语言与前端html、后端的数据库交互时,前后端的结构在java层面交互时,都体现为类、与对象。

 匿名对象的使用

1.理解:我们创建的对象,没有显示的赋给一个变量名,即为匿名对象

2.特征:匿名对象只会调用一次

public class InstanceTest{
         pubic static void main(String[] args){
                  Phone p = new Phone();
                  p.sendEmail();
                  p.playGame();

                  //匿名对象
                  new Phone().sendEmail();
         }
}
class Phone{
          double price;//价格
          public void sendEmail(){
                   System.out.println("发邮件");
          }
           public void playGame(){
                   System.out.println("玩游戏");
          }
}

/*
 * 利用面向对象的编程,计算圆的面积
 */

package com.atguigu.Demo;
public class CircleTest {

    public static void main(String[] args) {
           Circle c1 = new Circle();
           c1.radius = 2.1;    
           double s1 = c1.findArea();
           System.out.println(s1); //system.out.println(c1.fingArea) 
    }
}
class Circle{ 
      double radius;
      public double findArea() {
             double area = radius * radius * Math.PI;
             return area;
      }     
      //错误情况: 则定义属性多余
      public double findArea(double r) {
              double area = 3.14 * r * r;
              return area;
      } 
}
/* 方法二
public class CircleTest {  
    public static void main(String[] args) {   
           Circle c1 = new Circle();
           c1.radius = 2.1;  
           c1.findArea();  
    }
}
class Circle{
      double radius;
      public void findArea() {
              double area =radius * radius * Math.PI;
              System.out.println("面积为:" + area);
      } 
}
*/
/*
 * 要求:
 *(1)创建Person类的对象,设置该对象的name、age、sex属性,
 *   调用study方法,输出字符串“studying”,
 *   调用showAge()方法显示age的值
 *   调用addAge()方法给对象的age属性值增加2岁
 *(2)创建第二个对象,执行上述操作,体会同一个类的不同对象之间的关系
 */
package com.atguigu.Demo;
public class PersonTest {
 public static void main(String[] args) {
  Person p1 = new Person();
  
  p1.name = "Tom";
  p1.age = 18;
  p1.sex = 1;
  
  p1.study();
  
  p1.showAge();
  
  //int newAge = p1.addAge(2);
  //System.out.println("新年龄:" + newAge);
  p1.addAge(2);
  p1.showAge();
  
  Person p2 = new Person();
  p2.showAge();//0
  
 }
}
 
package com.atguigu.Demo;
public class Person {
 
 String name;
 int age;
 /**
  * sex: 1表示男性
  * sex: 0表示女性
  */
 int sex;
 
 public void study() {
  System.out.println("studying");
 }
 
 public void showAge() {
  System.out.println("age:" + age);
 }
 
 public int addAge(int i) {
  age += i;
  return age;
 }
 
}

 

 
 
 
posted @ 2020-03-04 16:00  孫sun  阅读(376)  评论(0编辑  收藏  举报