学习日记32--java基础学习2--数组和类

  1. 数组概念
    • 数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器。
    • 数组既可以存储基本数据类型,也可以存储引用数据类型。
  2. 数组定义格式
    数据类型[] 数组名 = new 数据类型[数组的长度];//new表示创建新的对象
  3. 数组动态初始化 只指定长度,由系统给出初始化值
    int[] arr = new int[5];
  4. [I@19bb25a — [ 的个数代表数组维数,I代表int类型,19bb25a代表16进制地址
  5. java中的内存分配:

    • 栈    存储局部变量
    • 堆    存储new出来的数组或对象
    • 方法区   面向对象部分讲解
    • 本地方法区    和系统相关
    • 寄存器    给CPU使用
  6. ArrayIndexOutOfBoundsException:数组索引越界异常
    * 原因:你访问了不存在的索引。
    NullPointerException:空指针异常
    * 原因:数组已经不在指向堆内存了。而你还用数组名去访问元素。
    “`
    int[] arr = {1,2,3};
    arr = null;
    System.out.println(arr[0]);

  7. 不要把return语句写进循环—>因为循环是不一定执行的—>除非是void类型不需要返回值

  8. 二维数组的格式:

    int[][] arr = new int[][];
    int arr[][] = new int[][];
    int[] arr[] = new int[][];
  9. 基本数据类型的值传递,不改变原值,因为调用后就会弹栈,局部变量随之消失。
    应用数据类型的值传递,改变原值,因为即使方法弹栈了,堆内的数组对象还在,且已经被修改。
    java中只有传值,后者传递的是地址值,地址值也没被改变。

  10. 面向对象设计(格式):
    创建对象并使用       类名 对象名 = new 类名();
    使用成员变量          对象名.变量名
    使用成员方法           对象名.方法名(…)

  11. 成员变量和局部变量的区别

    • 在类中的位置不同
      • 成员变量:在类中方法外
      • 局部变量:在方法定义中或者方法声明上,不同方法间的局部变量是不会互相访问的,因此可以同名.
    • 在内存中的位置不同
      • 成员变量:在堆内存(成员变量属于对象,对象进堆内存)
      • 局部变量:在栈内存(局部变量属于方法,方法进栈内存)
    • 生命周期不同
      • 成员变量:随着对象的创建而存在,随着对象的消失而消失
      • 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
    • 初始化值不同

      • 成员变量:有默认初始化值
      • 局部变量:没有默认初始化值,必须定义,赋值,然后才能使用。
    • 注意事项:

      1. 局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。
      2. 基本数据类型变量包括哪些: byte, short, int, long, float, double, boolean, char
      3. 引用数据类型变量包括哪些:数组,类,接口,枚举
  12. 实际参数简称“实参”。在调用有参函数时,函数名后面括号中的参数称为“实际参数”,实参可以是常量、变量或表达式。自定义函数中的“形参”全称为”形式参数” 由于它不是实际存在变量,所以又称虚拟变量。实参和形参可以重名。
    形参和实参的区别:英文名字不同:形参是parameter,实参是argument。
    本质不同:形参的本质是一个名字,不占用内存空间。实参的本质是一个变量,已经占用内存空间。

  13. 匿名对象(没有名字的对象)

    1. 用于仅仅调用一次的时候。匿名对象调用完毕就变成垃圾文件。
    2. 节省代码
    3. 匿名对象可以作为实际参数传递,减少命名步骤
  14. 封装

    1. 是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
    2. 封装好处
      • 隐藏实现细节,提供公共的访问方式
      • 提高了代码的复用性
      • 提高安全性。
    3. 封装原则
      • 将不需要对外提供的内容都隐藏起来。
      • 把属性(隐藏)私有化,提供公共方法getXxx()和setXxx()等对其访问,加强可操作性。
  15. private关键字特点

    • 是一个权限修饰符
    • 可以修饰成员变量和成员方法
    • 被其修饰的成员只能在本类中被访问
    • 把成员变量用private修饰
    • 提供对应的getXxx()和setXxx()方法
    • private仅仅是封装的一种体现形式,不能说封装就是私有
  16. this关键字的概述和应用

    • this关键字特点,代表当前对象的引用,随着引用改变而改变
    • 用来区分成员变量和局部变量重名
  17. 类实例

    class Demo_Phone {
    public static void main(String[] args) {
        Phone p1 = new Phone();
        p1.setBrand("summing");
        p1.setPrice(5288);
        System.out.println(p1.getBrand() + "---" + p1.getPrice());
        p1.call();
        p1.sendMsg();
        p1.playGame();
    }
    }
    class Phone {                   // 类名
    private String brand;       //属性1
    private int price;          //属性2
        public void setBrand(String brand) {
        this.brand = brand;
    }
    public String getBrand() {
        return this.brand;      //这里this可省略
    }
    public void setPrice(int price) {
        this.price = price;
    }
    public int getPrice() {
        return this.price;      //这里this可省略
    }
    public void call() {
        System.out.println("---call---");  //方法1
    }
    public void sendMsg() {
        System.out.println("---msg---");    //方法2
    }
    public void playGame() {
        System.out.println("---game---");   //方法3
    }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值