JAVA_06

何为面向过程?
面向过程的实质是注重实现功能及步骤流程,一步步解决问题。

面向对象开发

面向对象的实质是从结果出发,即站在管理者的角度去解决问题
把每个功能板块交给有能力的人去做 学会 分配任务,最后自己收取成果即可;

			输出一个数组
常规操作是
 for (int i = 0; i < a.length - 1; i++) {
            for (int j = 0; j < a.length - 1 - i; j++) {
                if (a[j] > a[j + 1]) {      //这是升序排序
                    int temp = a[j];
                    a[j] = a[j + 1];
                    a[j + 1] = temp;

                }
            }
        }
但是我只要调用Arrays.toString(数组名称)即可完成数组的输出;

类是抽象的;用于描述一个一类事物;
对象: 是一个具体表现,对类进行属性的赋值与定义 //属性 和方法
成员属性 : 是什么???几岁?叫什么?性别是??
成员方法: 能做什么?动作 可以访问成员属性;

类与对象的关系:
                                    类是对象的抽象概念;      //理想的蓝图
                                    对象是类的具体表现;  //现实的残酷;

类的定义:
class 类名—大写{
成员属性 //在方法外面; 类变量也叫实例变量
public void//或者int等等其他数据类型 eat(){}; //普通方法;(成员方法)
成员方法不要用静态 static;

                                  导包的操作:import java.util(包名).Scanner(类名) 包名+类名
                                  在同一个包下面不用导入;


                                  实例化对象:
                                        类名  对象名 = new 类名(); 实际就是调用构造函数;
                                        Student stu  = new Student(); 实例化一个学生对象;

                                        //堆里面含有类的属性和方法
                                                类的属性就一直在堆里面   (属性都含有默认值!!!)
                                                不是指向方法区里面属性的属性地址;

                                        //堆里面的方法记录的是方法区的地址
                                         //方法的具体实现是是在方法区里面
                                         即比如求和方法  具体的过程是在方法区
                                         方法就没有默认值

                                    方法区里面都是一些类的基本信息!!!
                                      堆也可以叫回收垃圾的堆
                                      堆里面属性跟
                                      方法是独立的一个地址


               创建对象的两个方法
              1.在主程序直接new对象;
              2.较复杂  需要调用main外类里的静态方法    通过方法构建对象
                            方法需要返回一个对象;
                            方法体内执行new对象的过程;
                            注意:!!只要是关于返回对象的数据类型 一定得定义一个变量给他储存;
                   内存地址用哈希值表示时 哈希值是随机产生的
                    当内存地址相同时  哈希值不一定相同;
                    new一个对象的(方法): //在main类外的方法:
                    1.以引用数据类型作为返回值类型 public static int[] a(方法名){}
                    2.以引用数据类型作为方法的参数;public static
                  匿名对象:
                        1.它是不会在栈中有地址!!  但是在堆中有内存空间 所以运行不到 编译通过
                        2. 形式  new int();
                        3.匿名对象就只用一次 一般用于方法的参数,节省内存空间;
                        4.匿名对象给成员变量赋值没有意义;
                                例子 new Person().age  //只要你new一个对象 值都是重新变化的
                         5.匿名对象一般用于方法的调用或者是作为方法的参数;
                                    new Person().study   getPhone(new Person());





                        成员变量与局部变量的区别:
                         局部变量:方法里的变量,包含方法的参数
                         成员变量: 类里 方法外的变量
                         生命周期:
                                1.局部:随着方法的开始而开始,随着方法的结束而结束;
                                2.成员: 随着对象的创建而开始,随着对象的回收而结束;
                                        垃圾回收器
                           存在位置:
                               1.局部变量存在栈里面 没有默认值;
                               2.成员变量存在堆里面; 有默认值;

                               封装
                      成员变量属性的私有化@!
                                    属性只能在本类被访问,其他类不能访问该类的属性值;
                                优点:
                                        1.隐藏内部细节
                                        2.保护数据的安全,防止数据的错误;
                                        3.提供对外两个对外的方法。
                                                1.提供设置的方法  赋值  setXXX()
                                                 将外界的值赋值给本类的属性,需要参数
                                                2.提供取值的方法  getXXX()
                                                    将已赋值得属性通过get方法返回给外类  本类的属性
                                                    return name; 返回的值


                                            因为外界只能通过公共的方法入口进去
                                            然后将参数传给本类的setXX方法
                                            方法体为  =  赋值操作
                                            这样本类的属性就有初值

                                            但是这样外界只是将值赋给本类  但是他本身没有收到值!!
                                            就需要getXXX()方法
                                            return 本类的属性值
                                            外界调用getXXX()方法就能获取name的值;

                    私有化就是封装
                    this的用法
                        1.本类对象的引用  也就是谁调用这个方法 ,这个对象就是谁
                        2.this.变量就是成员变量
                        如 this.name = name;
                                1.第一个name是本类的成员变量
                                2.第二个name是方法的参数
                         3.this()是成员方法
                         4.如果成员变量名和局部变量一样
                                        在方法里面 局部变量的作用域优先于成员变量;




            封装
                1.属性的封装:
                            setXXX和getXXX;//封装私有化属性
                2.方法的封装
                        如将实现冒泡排序功能的一堆执行语句代码块封装到方法中
                        只要在主函数内调用某类的方法(数据类型 变量名)即可实现功能;
                        调用某类的前提是创建了类 且 主函数实例化了对象 才能调用

总结

对象的声明和创建是不同的
声明是 Person p;只是栈中有这个Person类型的引用变量p;但是没有指向堆;
new Person()是在堆里面储存类的属性 以及方法 注意 方法里面存的是方法区里面方法的地址!!!

Student student = null;
        System.out.println(student);

方法中reurn就是结束方法的语句;后面的程序执行

if(i = =3){  return;} x+=34;

用对象名作方法参数时需要提前将实参new出来

 public static void main(String[] args) {

        Student stu = new Student();//	若是没有new的话 stu是空对象!!
        getStudent(stu);

    }
        //    以引用数据类型作为参数
        public static void getStudent (Student student){		//**以引用数据类型为参数一定得new!**
              System.out.println(student.name);
              System.out.println(student.age);
 Student stu ;
        getStudent(stu);			//报 stu 未初始化 即空对象的错误

可以把null赋值给对象引用变量;

Person p = null;
但是p.name 操作属性的时候就会报出空指针的错误

**.匿名对象给成员变量赋值没有意义;
例子 new Person().age //只要你new一个对象 值都是重新变化的
5.匿名对象一般用于方法的调用或者是作为方法的参数;
new Person().study

***getPhone(new Person());***不等于getPerson(Person p)!!!
两个有区别
Person p是已经在堆开辟了空间 一个是 new Person()匿名对象的使用

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值