zoukankan      html  css  js  c++  java
  • Unit01-OOP-对象和类(上)

          Unit01-OOP-对象和类(上)      

    1.什么是类?什么是对象?
      1)现实生活是由很多很多对象组成的
        基于对象抽出了类
      2)对象:真实存在的单个的个体
        类:类型、类别,代表一类个体
      3)类中可以包含:
        3.1)所有对象所共有的特征/属性------变量
        3.2)所有对象所共有的行为-----------方法
      4)一个类可以创建多个对象,
        同一类型的对象,结构相同,数据不同
      5)类是对象的模板,对象是类的具体的实例
     
    2.引用类型之间画等号:
      1)指向同一个对象
      2)对其中一个引用的修改影响另一个引用
        eg:房子钥匙
      基本类型之间画等号:
      1)赋值
      2)对其中一个变量的修改不会影响另一个变量
        eg:身份证复印件
        
    3.null:空,没有指向任何对象
           若引用的值为null,则该引用不能再进行任何操作了
           若操作则NullPointerException空指针异常

    语法:
                 引用
    类型       引用类型变量  指向   对象
    Student    zs             =     new Student();


    Student zs; //引用
    int a; //变量

                 引用
    数据类型  引用类型变量  指向   对象
    Cell         c                 =     new Cell();

    实参,形参
    public static void main(String[] args){
      String n = "zhangsan";
      sayHi(n); //String name="zhangsan"; //实参
    }
    public static void sayHi(String name){ //形参
     
    }

    面向过程的结构化设计的缺陷:
    1.缺乏对数据的封装
    2.数据和方法(操作数据)的分离

    基本数据类型-------------不够
    数组类型-----------------不行
    自己造数据类型-----------想装什么就装什么

    高质量的代码:
      复用性好、扩展性好、维护性好、
      可移植性好、效率好、健壮性好、可读性好......

    引用类型与基本类型

    画等号

    nullNullPointerException

    程序示例1:

    Cell.java

    package oo.day01;
    //格子类
    public class Cell {
        int row; //行号
        int col; //列号
        
        void drop(){ //下落一格
            row++; //行号增1
        }
        void moveLeft(int n){ //左移n格
            col-=n; //列号减n
        }
        String getCellInfo(){ //获取格子的行号和列号
            return row+","+col; //返回行列号
        }
    }

    CellTest.java

    package oo.day01;
    //格子类的测试类
    public class CellTest {
        public static void main(String[] args) {
            /*
            Cell c = new Cell();
            c.row = 2;
            c.col = 5;
            c.drop();
            c.moveLeft(3);
            String str = c.getCellInfo();
            System.out.println(str); //3,2
            */
            
            Cell c = new Cell();
            c.row = 2;
            c.col = 5;
            printWall(c); //Cell cc=c;
            
            c.drop(); //c.row=3
            System.out.println("下落后:");
            printWall(c);
            
            c.moveLeft(3);
            System.out.println("左移后:");
            printWall(c);
        }
        //打墙+打格
        public static void printWall(Cell cc){
            for(int i=0;i<20;i++){ //
                for(int j=0;j<10;j++){ //
                    if(i==cc.row && j==cc.col){ //行列匹配
                        System.out.print("* ");
                    }else{
                        System.out.print("- ");
                    }
                }
                System.out.println(); //换行
            }
        }
    }

    程序示例2:

    Student.java

    package oo.day01;
    //学生类
    public class Student {
        //成员变量
        String name;
        int age;
        String address;
         
        //方法
        void study(){
            System.out.println(name+"在学习...");
        }
        void sayHi(){
            System.out.println("大家好,我叫"+name+",今年"+age+"岁了,家住"+address);
        }
    }

    StudentTest.java

    package oo.day01;
    //学生类的测试类
    public class StudentTest {
        public static void main(String[] args) {
            //创建学生对象
            Student zs = new Student();
            //给成员变量赋值
            zs.name = "zhangsan";
            zs.age = 25;
            zs.address = "河北廊坊";
            //调用方法
            zs.study();
            zs.sayHi();
            
            Student ls = new Student();
            ls.name = "lisi";
            ls.age = 26;
            ls.address = "黑龙江佳木斯";
            ls.study();
            ls.sayHi();
            
            //new之后每个成员变量都有默认值
            Student ww = new Student();
            ww.study();
            ww.sayHi();
            
        }
    }

    引用类型与null的演示

    package oo.day01;
    //引用类型与null的演示
    public class RefNullDemo {
        public static void main(String[] args) {
            Cell c = new Cell();
            Cell cc = c; //指向同一个对象
            c.row = 2;
            cc.row = 5;
            System.out.println(c.row); //5
            
            Cell ccc = new Cell();
            ccc.row = 6;
            ccc = null; //空,没有指向任何对象
            //ccc.row = 6; //NullPointerException空指针异常
        }
    }
  • 相关阅读:
    jvm性能监控(4)–JVM的监控工具Jconsole
    jvm性能监控(3)-jdk自带工具 jps jstack jmap
    jvm性能监控(2)–JVM的监控工具jstat
    jvm(1)性能监控-linux相关命令
    jvm学习(5) 对象的创建与结构
    jvm(4) 对象创建
    jvm学习(3)方法区、堆、对象存储位置
    jvm学习(2)JVM内存说明
    java泛型
    windows下部署spring boot 的jar
  • 原文地址:https://www.cnblogs.com/tangshengwei/p/6147861.html
Copyright © 2011-2022 走看看