JAVA 基础
1、方法重载(与返回值无关 ,与参数有关)
* 在同一个类中,方法名相同,参数列表不同。 *******与返回值类型无关。
* 参数列表不同:
* A:参数个数不同
* B:参数类型不同
* C:参数的顺序不同 , 但两个参数类型不一样 【(double u, int a)】 (算重载,但是在开发中不用)
2、一维数组
所谓的静态和动态是相对于程序运行是而言的:
静态是在程序编译时就初始化好了的, int [] arr = {1,23,3}
动态初始化是在程序运行是才动态分配内存空间 int [] arr = new int [4]
(1)、什么是数组的初始化
* 就是为数组开辟连续的内存空间,并为每个数组元素赋予值
(2)、如何对数组进行初始化
* a:动态初始化 只指定长度,由系统给出初始化值
* int[] arr = new int[5];
* b:静态初始化 给出初始化值,由系统决定长度
(3)、动态初始化的格式:
* 数据类型[] 数组名 = new 数据类型[数组长度];
(4)、动态初始化时给出的默认值:
整数类型:byte,short,int,long默认初始化值都是0
浮点类型:float,double默认初始化值都是0.0
布尔类型:boolean默认初始化值false
字符类型:char默认初始化值'\u0000'
char在内存中占的两个字节,是16个二进制位
\u0000,每一个0其实代表的是16进制的0,那么四个0就是代表16个二进制位
int [] a = new int[5];
for (int i: a
) {
System.out.println(i);
}
0
0
0
0
0
(5)、常见2种数组异常:
* a:ArrayIndexOutOfBoundsException:数组索引越界异常
* 原因:你访问了不存在的索引。
* int[] arr = new int[5]; //0x0011
* System.out.println(arr[-1]); //当访问数组中不存在的索引,会出现索引越界异常
* b:NullPointerException:空指针异常
* 原因:数组已经不在指向堆内存了。而你还用数组名去访问元素。
* int[] arr = {1,2,3};
* arr = null;
* System.out.println(arr[0]);
(6)、二维数组的定义:
- 1:数据类型 数组名[][] = new 数据类型[m][n];
- 2:数据类型[] 数组名[] = new 数据类型[m][n];
- 3:int[] x,y[]; x是一维数组,y是二维数组
- 4:int [] [] arr ; arr.length===指的是二维数组中一维数组的个数
(7)、成员变量和局部变量的区别
-
A:在类中的位置不同
- 成员变量:在类中方法外
- 局部变量:在方法定义中或者方法声明上
-
B:在内存中的位置不同
- 成员变量:在堆内存(成员变量属于对象,对象进堆内存)
- 局部变量:在栈内存(局部变量属于方法,方法进栈内存)
-
C:生命周期不同
- 成员变量:随着对象的创建而存在,随着对象的消失而消失
- 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
-
D:初始化值不同
- 成员变量:有默认初始化值
- 局部变量:没有默认初始化值,必须定义,赋值,然后才能使用。
-
注意事项:
- 局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。
- 基本数据类型变量包括哪些:byte,short,int,long,float,double,boolean,char
- 引用数据类型变量包括哪些:数组,类,接口,枚举
(8)、匿名对象
- A:什么是匿名对象
- 没有名字的对象
- B:匿名对象应用场景
- a:调用方法,仅仅只调用一次的时候。
- 那么,这种匿名调用有什么好处吗?
- 节省代码
- 注意:调用多次的时候,不适合。匿名对象调用完毕就是垃圾。可以被垃圾回收器回收。
- 那么,这种匿名调用有什么好处吗?
- a:调用方法,仅仅只调用一次的时候。
//可作为参数进行传递,减少一步代码
method1(new Student());
method1(new Student());
public void method1(Student stu){
stu.setnum(111);
stu.print();
}
(9)、封装的概述
-
A:封装概述
- 是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
-
B:封装好处
- 隐藏实现细节,提供公共的访问方式
- 提高了代码的复用性
- 提高安全性。
-
C:封装原则
- 将不需要对外提供的内容都隐藏起来。
- 把属性隐藏,提供公共方法对其访问。
可简单理解为:
------------只要是不能直接访问 就是封装
(10)、get·set 方法存在的意义
- get set 方法在关键的时候可以对数据进行一定的处理和拦截(感觉不太明显)
(11)、this关键字的概述和应用
- A:this关键字特点
- 代表当前对象的引用
- B:案例演示
- this的应用场景
- 用来区分成员变量和局部变量重名