- 数组概念
- 数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器。
- 数组既可以存储基本数据类型,也可以存储引用数据类型。
- 数组定义格式
数据类型[] 数组名 = new 数据类型[数组的长度];//new表示创建新的对象 - 数组动态初始化 只指定长度,由系统给出初始化值
int[] arr = new int[5]; - [I@19bb25a — [ 的个数代表数组维数,I代表int类型,19bb25a代表16进制地址
java中的内存分配:
- 栈 存储局部变量
- 堆 存储new出来的数组或对象
- 方法区 面向对象部分讲解
- 本地方法区 和系统相关
- 寄存器 给CPU使用
ArrayIndexOutOfBoundsException:数组索引越界异常
* 原因:你访问了不存在的索引。
NullPointerException:空指针异常
* 原因:数组已经不在指向堆内存了。而你还用数组名去访问元素。
“`
int[] arr = {1,2,3};
arr = null;
System.out.println(arr[0]);不要把return语句写进循环—>因为循环是不一定执行的—>除非是void类型不需要返回值
二维数组的格式:
int[][] arr = new int[][]; int arr[][] = new int[][]; int[] arr[] = new int[][];
基本数据类型的值传递,不改变原值,因为调用后就会弹栈,局部变量随之消失。
应用数据类型的值传递,改变原值,因为即使方法弹栈了,堆内的数组对象还在,且已经被修改。
java中只有传值,后者传递的是地址值,地址值也没被改变。面向对象设计(格式):
创建对象并使用 类名 对象名 = new 类名();
使用成员变量 对象名.变量名
使用成员方法 对象名.方法名(…)成员变量和局部变量的区别
- 在类中的位置不同
- 成员变量:在类中方法外
- 局部变量:在方法定义中或者方法声明上,不同方法间的局部变量是不会互相访问的,因此可以同名.
- 在内存中的位置不同
- 成员变量:在堆内存(成员变量属于对象,对象进堆内存)
- 局部变量:在栈内存(局部变量属于方法,方法进栈内存)
- 生命周期不同
- 成员变量:随着对象的创建而存在,随着对象的消失而消失
- 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
初始化值不同
- 成员变量:有默认初始化值
- 局部变量:没有默认初始化值,必须定义,赋值,然后才能使用。
注意事项:
- 局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。
- 基本数据类型变量包括哪些: byte, short, int, long, float, double, boolean, char
- 引用数据类型变量包括哪些:数组,类,接口,枚举
- 在类中的位置不同
实际参数简称“实参”。在调用有参函数时,函数名后面括号中的参数称为“实际参数”,实参可以是常量、变量或表达式。自定义函数中的“形参”全称为”形式参数” 由于它不是实际存在变量,所以又称虚拟变量。实参和形参可以重名。
形参和实参的区别:英文名字不同:形参是parameter,实参是argument。
本质不同:形参的本质是一个名字,不占用内存空间。实参的本质是一个变量,已经占用内存空间。匿名对象(没有名字的对象)
- 用于仅仅调用一次的时候。匿名对象调用完毕就变成垃圾文件。
- 节省代码
- 匿名对象可以作为实际参数传递,减少命名步骤
封装
- 是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
- 封装好处
- 隐藏实现细节,提供公共的访问方式
- 提高了代码的复用性
- 提高安全性。
- 封装原则
- 将不需要对外提供的内容都隐藏起来。
- 把属性(隐藏)私有化,提供公共方法getXxx()和setXxx()等对其访问,加强可操作性。
private关键字特点
- 是一个权限修饰符
- 可以修饰成员变量和成员方法
- 被其修饰的成员只能在本类中被访问
- 把成员变量用private修饰
- 提供对应的getXxx()和setXxx()方法
- private仅仅是封装的一种体现形式,不能说封装就是私有
this关键字的概述和应用
- this关键字特点,代表当前对象的引用,随着引用改变而改变
- 用来区分成员变量和局部变量重名
类实例
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 } }
学习日记32--java基础学习2--数组和类
最新推荐文章于 2022-12-25 18:10:56 发布