数组:
1.数组的概念
1)数组相当于是个容器,存相同类型的若干数据
2)数组也是一种基本的数据结构
3)数组属于引用数据类型
2.数组的定义
数组的定义: 声明 + 初始化
数组一旦确定数组的长度,不可变的 -> 数组长度不可变
1)数组的声明:
int[] arr; -> 只能放int类型的整数
double[] d; -> 只能放都double类型
char[] c;
2)数组的初始化
(1)静态赋值(静态初始化)
ps: int[] arr = {1,2,3,4};
特点: 只能在声明的同时初始化
(2)静态赋值(静态初始化)
ps: int[] arr = new int[]{1,2,3,4};
特点:再次赋值时也可以使用
静态赋值特点:赋值的同时就已经确定好数组的长度(元素个数)和元素的值
(3)动态赋值(动态初始化)
ps: int[] arr = new int[5];
特点:只确定了数组的长度,但是没有初始化数组的元素
数组元素有默认的初始值,初始值都是0
只是0的表现形式不一样
int -> 0
double -> 0.0
char -> '\u0000'
boolean -> false
3.获取数组中的元素
可以通过下标获取数组中的元素,并且下标从0开始
下标范围: 0 ~ arr.length-1
4.数组的属性
数组的长度 = 数组的个数
ps: 引用名.length
5.数组的遍历/迭代
依次获取数组中的元素,叫做数组的遍历/迭代
6.使用数组有可能会出现的问题
ArrayIndexOutOfBoundsException - 数组下标越界异常
NullPointerException - 空指针异常
for(int i = 0; i < arr.length; i++) {
// 重新生成新的随机数
for(int j = 0; j < i; j++) {
i–;//回到原来位置
int i = 0
第一没有进入 for j 的循环
int i = 1;
j < i
0 < 1
j进入循环 ->
判断 i = 1 和 j = 0 是不是相等
11 和 11 是不是相等
i
7.JVM内存空间
方法区: 类相关的信息
栈: 局部变量 / 临时变量
堆: 引用的真正数据
类加载: 为了把字节码(.class)文件中的类相关的信息读取到JVM中
使用到的工具:类加载器
8.方法: 函数,放一堆代码
public static void main(String[] args) {方法体}
修饰词 + 返回值类型 + 方法名 + 方法参数 + 方法体
1)修饰词: public static
2)返回值类型: void/double/char/int[]
3)方法名: main/随意
4)方法参数(临时变量): 类型 + 变量名
5)方法体
方法的使用:
1)如果有返回值类型,那就必须使用return返回,但是方法没有返回值类型时也可以使用return
2)return表示方法结束
猜字母游戏
随机生成5个字符 asdfg -> String
用户猜字符 aqwde
比较判断: 个数相等的有几个, 位置相等的有几个
常用类:
System:
System.print()
System.println()
System.arrayCopy()
System.exit()
System.gc()
Math
Math.random() -> 获取随机数(范围 -> [0,1) )
Math.pow(double d1, double d2) -> 获取 d1 的 d2 次幂
String
String.charAt(index) -> 获取index(下标)位置上的字符
Arrays:
Arrays.toString -> 转换成字符串输出
Arrays.sort -> 排序
Arrays.copyOf() -> 数组的复制
命名规则:
1.变量名: 只能出现 英文 + 数字 + _ + $
2.变量名不能以数组开头
3.变量名第一个单词首字母小写,第二个单词开始首字母大写 - 小驼峰命名法
可读性要好
4.方法名:
可读性要好,长度不限 -> 首字母全小写,第二个单词开始首字母大写
5.类名:第一个单词首字母大写,第二单词首字母大写 -> 驼峰命名法
Arrays/System/Scanner/String
6.包名: 全小写