day4
数组篇
// 数组创建的俩种方式
// 动态创建
int[] nums = new int[10];
// 静态创建
int[] nums_1 = {1,2,3,4,5,6};
System.out.println(nums.length);
System.out.println(nums_1.length);
// 内存分析
// 定义时先存入栈中,然后在堆中开辟空间,调用超出数组长度时会出现栈溢出
System.out.println(nums[11]);
System.out.println(nums_1[6]);
// java.lang.ArrayIndexOutOfBoundsException: Index 11 out of bounds for length 10
java栈:用于存放局部变量表
java堆:是所有线程共享的一块内存区域,用于存放对象实例,大部分的数组及对象实例都在此分配内存
当输出时超出数组长
//会提示相同错误
//ArrayIndexOutOfBoundsException:
数组下的类型保持一致性,同时创建完长度也就确定了
增强for循环
int[] arrays = {1,2,3,4,5};
for (int array:arrays){
System.out.println(array);
}
二维数组
// 多维数组
int [][] array = {{1,2},{2,3},{3,4},{4,5}};
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
System.out.println(array[i][j]);
}
}
内置排序算法调用
Arrays.sort(a);
冒泡排序(bubble)
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a.length-i-1; j++) {
if (a[j]>a[j+1]){
int temp = a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
System.out.println(Arrays.toString(a));
}
改进
- 在第一层循环后加一个判断类型,
- judge = false
- 如果在第二层循环中有过交换,则将judge赋值为ture
- 如果此轮比较没有交换数据,则说明已经排序完成,退出此次循环
int count2 = 0;
for (int i = 0; i < b.length; i++) {
boolean judge = false;
for (int j = 0; j < b.length-i-1; j++) {
if (b[j]>b[j+1]){
int temp = b[j];
b[j]=b[j+1];
b[j+1]=temp;
judge = true;
}
count2++;
}
if (judge == false){
break;
}
System.out.println(Arrays.toString(b));
}
稀疏数组
查找有效坐标
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南