zoukankan      html  css  js  c++  java
  • day09 面向对象(上)b

    一.面向对象的使用步骤:

    ①创建类

    ②类的实例化

    ③通过对象调用类的结构:对象.属性、对象.方法

    二.面向对象的内存结构:

    最主要的就是对象(包含类中的属性)在堆里,变量(包括局部变量)在栈里。栈里面的不同变量指向不同的对象。

    JVM(JAVAZ虚拟机)中是运行的时候才加载到内存中(才有堆,栈什么的)

     

     注意:所有的引用类型值不是NULL就是地址(引用类型包括类(字符串)、数组、接口)

    对象能代表的事情很多

     匿名对象

    public class InstanceTest {
        public static void main(String[] args) {
            mall m=new mall();
            m.showPhone(new phone());//这里的new phone()就是一个匿名对象,因为没有变量作为他的名字
        }
        
    }
    
    class mall{
        public void showPhone(phone p){//这里的形参phone p相当于给传进来的匿名对象一个名字即p
            p.price=10;
            p.call();
            p.phonePrice();
        }
    }
    class phone{
        double price;
        public void call() {
            System.out.println("手机打电话");
        }
        public void phonePrice() {
            System.out.println("手机价格为"+price);
        }
    }

     方法的增加知识点:

    重载概括为:

    两同一不同:

    1.类和方法名相同

    2.参数列表不同(参数个数,类型)

    注意:

    ①返回值,方法体,限定词都不能作为区分标志

    ②所以用对象如果想调用指定方法就两步:方法名----》参数列表

    可变形参的方法(jdk5.0新增):

    1.使用:(数据类型 ... 变量名),使用时可传入参数:0个,1个,2个........

    2.类似于数组:

    例如:public void sum(String ... strs)与 public void sum(String[] strs)效果相同,要使用传入的参数都是strs[1],strs[2].....

    注意:

    ①可变形参必须放在末尾(意味着一个方法只能有一个可变形参)

    方法参数的值传递机制:

    变量赋值的理解:

    基本数据类型和引用类型是有差别的:基本类型是把值给过去,引用类型是把地址值给过去

    当作为参数传递时,基本数据类型和引用类型也不同,方法形参的传递机制:值传递(分为数据值和地址值)

    1.如果参数是基本数据类型,则实参传给形参的是实参的真实数据

    2.如果参数是引用类型,则实参传给形参的是实参的地址

    上述两种,形参和实参都会在栈中分配内存

    public class TransferTest1 {
    public static void main(String[] args) {
        int m=10;
        int n=20;
        TransferTest1 test=new TransferTest1();
        test.swap(m, n);
        System.out.println("值传递:m="+m+" n="+n);
        
        Data data=new Data();
        data.m=10;
        data.n=20;
        test.swap(data);
        System.out.println("地址传递:m="+data.m+" n="+data.n);
    }
    
    public void swap(int m,int n) {
        int temp=m;
        m=n;
        n=temp;
    }
    
    public void swap(Data data) {
        int temp=data.m;
        data.m=data.n;
        data.n=temp;
    }
    
    }
    class Data{
        int m;
        int n;
    }

    练习

     

     

     扩展:

    对于string这个引用类型,不同的是虽然传递地址,但是String="hello";这种赋值方式时,"hello"是存在字符串常量池中

  • 相关阅读:
    刷题(十五)
    Pycharm按装
    Jmeter
    内存泄露部分检测工具
    Failed to resolve
    图片显示方向不对怎么办
    ScaleType属性
    RobotFramework
    LoadRunner
    Appium
  • 原文地址:https://www.cnblogs.com/miaobo/p/12572853.html
Copyright © 2011-2022 走看看