Java中OOP对象和引用

看注释:

class Person2 {
    String name;
    int score;
    String phone;
}
class App {
    public static void main(String[] args) {

        int size = 20;
        Person p1 = new Person();
        Person p2 = new Person();
        /*
        Person p3 = p1;
        p2 = p3;
        这三个p1,p2,p3,都只是一个引用类型,只存在两个new出来的对象,而第14行p2指向了第一个引用的
        对象后,第二个对象唯一的“线”就“断”了,有Java中的GC(垃圾回收机制)标记,当内存分配给其他不够时
        这款内存就会比用掉。比喻:对象为两个空调,而这三个引用类型相当于三个遥控器,连着这两个对象,进行操作。
        */
        /*对象必须要有引用,一旦没有引用指向,在特定是条件和时机后,就会被...*/
        p1.name = "Alice";
        p1.score = 98;
        p1.phone = "12131";

        p2.name = "Bob";
        p2.score = 95;
        p2.phone = "12134";
        Person tmp;
        tmp = p1;
        tmp.score = 100;
        System.out.println(p1.score);//打印100
        /*在这里tmp和p1指向的都是一个对象,所以改变tmp的数据对象的值,p1的也同样变了
        */
       }
}

class Person {
    String name;
    int score;
    String phone;

    void display() {
        System.out.printf("name=%s	score=%d	phone=%s
",name,score,phone);
    }

}

class App3 {

    public static void main(String[] args) {

        int size = 20;
        Person p1 = new Person();
        Person p2 = new Person();

        p1.name = "Alice";
        p1.score = 98;
        p1.phone = "12131";

        p2.name = "Bob";
        p2.score = 95;
        p2.phone = "12134";


        Person[] ps = new Person[3];
        p1 = new Person();
        p1.name = "Alice";
        p1.score = 98;
        p1.phone = "12131";

        ps[0] = p2;
        ps[1] = p1;
        ps[2] = new Person();
        ps[2].name = "Jack";
        ps[2].score = 90;
        ps[2].phone = "33231";

        // ps[1] = new Person();//如果又new了一个,则ps[1]指向的是新的空的才分配出来的一个对象

        for(Person person : ps)
            person.display();
            System.out.println();

        for(int i = 0; i < ps.length; i++) {
            Person p = ps[i];
            p.display();
        }
        for(int j = 0; j<ps.length-1; j++){
        for(int i = 0; i<ps.length-1; i++) {
            if(ps[i].score < ps[i+1].score) {
                Person t = ps[i];
                ps[i] = ps[i+1];
                ps[i+1] = t;
            }
        }
       }
       System.out.println();
       for(Person person : ps)
           person.display();
           System.out.println();
   }
}

class Person {
    String name;
    int score;
    String phone;

    void display() {
        System.out.printf("name=%s	score=%d	phone=%s
",name,score,phone);
    }

    String sayHello(String msg) {
        return "你好,"+msg+",我是"+name;
    }
}

class App2 {
    public static void main(String[] args) {

        int size = 20;
        Person p1 = new Person();
        Person p2 = new Person();

        p1.name = "Alice";
        p1.score = 98;
        p1.phone = "12131";

        p2.name = "Bob";
        p2.score = 95;
        p2.phone = "12134";

        p1.display();
        p2.display();
        System.out.println(p1.sayHello("2017"));

        //交换演示//
        Person tmp;
        tmp = p1;
        p1 = p2;
        p2 = tmp;
        p1.display();
        p2.display();


       }
}

import java.util.Scanner;

class Book {
    String bookName;
    int price;
    String writer;
  //书名
  //价格
  //作者
  void display() {
      System.out.printf("书名:%s	价格:%d	作者:%s
",bookName,price,writer);
  }
}

class BookManage {

    static void Bsort(Book[] book ) {
        for(int j = 0; j < book.length-1; j++){
            for(int i = 0; i < book.length-1; i++) {
                if(book[i].price>book[i+1].price) {
                    Book tmp = book[i];
                    book[i] = book[i+1];
                    book[i+1] = tmp;
                }
            }
    }
}
    public static void main(String[] args) {
    	int number = 5;
        Scanner cin = new Scanner(System.in);
        Book[] book = new Book[number];
        for(int i = 0; i <number; i++) {
            book[i] = new Book();
            System.out.println("请输入第"+(i+1)+"本书的名子");
            book[i].bookName = cin.next();
            System.out.println("请输入第"+(i+1)+"本书的价格");
            book[i].price = cin.nextInt();
            System.out.println("请输入第"+(i+1)+"本书的作者");
            book[i].writer = cin.next();
        }
        System.out.println();
        Bsort(book);
        for(Book bookt:book)
            bookt.display();
        //录入五本书的信息
        //按照价格降序排序
        //格式化输出信息
    }
}



原文地址:https://www.cnblogs.com/zhangmingzhao/p/7256684.html