用来调试程序 ,逐行运行程序
断点: 需要从哪行开始调试,在哪设置断点
以debug模式运行
F8:step over 步调
调试完成 释放程序
Connected 查看运行结果
定义:是一组相同数据类型元素的集合,是一个容器
数组中可以存储基本数据类型,也可以存储引用数据类型
数组创建时必须指定长度,创建后,长度不能改变
数组中每个元素空间是连续的
声明 创建
访问数组中的元素 下标
int[] a,d; 定义了两个数组
int b[],c; 定义了数组b与变量c
1. int[] a = new int[5];
2. int []a = new int[]{0,1,2,3,4};
3. int []a = {0,1,2,3,4};
new创建一个数组,并指定数组的长度(容量),每个空间会赋予默认值
整数的默认值是0
引用类型的默认值是null
boolean类型的默认值是false
System.out.println(a);//[I@1b6d3586 -- 数组在内存中的地址(hash值)
System.out.println(Arrays.toString(a));[0,0,0,0,0]
Arrays.toString() 把数组以字符串的形式返回,便于调试查看
Arrays.sort() 排序
数组名[索引/下标]
索引/下标(index):从0开始,是整数(int),数组长度最大值是int的最大值
int[] a = new int[Integer.MAX_VALUE];
Integer.MAX_VALUE int类型最大值
数组最大索引 长度-1
数组名.length
数组下标异常 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5 at day1.Demo2.main(Demo2.java:18)
for (int i = 0; i < a.length; i++) {
System.out.println(a[i]);
}
适合挨个的遍历每一个元素
a--要遍历的数组
int t--声明一个临时遍历,用来接收每次循环时,从数组中取出的元素
优点:写法简单 不足: 不能控制某一区间的遍历
for(int t:a){
System.out.println(t);
}
数组的数组,数组每个元素又是一个一维数组
int[][] a = new int[3][5];
[3]: 表示二维数组的长度是3
[5]: 表示二维数组中,每一个一维数组的长度为5
a[][] = {{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0}}
int[][] a = new int[3][]: 只声明了二维数组的长度,并没有声明二维数组中一维数组的长度,也就不会创建一维数组{null,null,null}
public class Demo5 {
public static void main(String[] args) {
int[][] a={{1,2,3},{4,5,6},{7,8,9}};
for (int i = 0; i < a.length; i++) {//对二维数组进行遍历
for (int j = 0; j < a[i].length; j++) {//对一维数组进行遍历
System.out.print(a[i][j]+" ");
}
System.out.println();//换行
}*/
int[][] a = new int[2][3];
Scanner scanner = new Scanner(System.in);
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
a[i][j] = scanner.nextInt();
}
}
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
System.out.print(a[i][j]+" ");
}
System.out.println();
}
}
}
每次取出相邻的两个元素进行比较,将较大的向后移,每比较一趟,可以找出一个最大值
5,4,3,2,1
第一趟 4,3,2,1,5
第二趟 3,2,1,4,5
第三趟 2,1,3,4,5
第四趟 1,2,3,4,5
import java.util.Arrays;
public class Sort1 {
public static void main(String[] args) {
int[] a = {5,4,3,2,1};
for (int i = 0; i < a.length-1; i++) {//外层循环控制比较趟数
for (int j = 0; j < a.length-1-i; j++) {//内层循环,相邻两个元素比较 j j+1
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));
}
}
从第一个元素开始,与之后的每一个元素进行比较,将较小的移动到第一个位置,以此类推
方法一:
import java.util.Arrays;
public class Sort2 {
public static void main(String[] args) {
int a[] = {5,4,3,2,1};
for (int i = 0; i < a.length-1; i++) {//控制比较的趟数
for (int j = i+1; j < a.length; j++) {
if(a[i]>a[j]){
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
System.out.println(Arrays.toString(a));
}
}
方法二:
import java.util.Arrays;
public class Sort2 {
public static void main(String[] args) {
int a[] = {5,4,3,2,1};
for (int i = 0; i < a.length-1; i++) {
int min = i;
for (int j = i+1; j < a.length; j++) {
if(a[min]>a[j]){
min = j;//记录最小索引的下标
}
}
int temp = a[i];
a[i] = a[min];
a[min] = temp;
}
System.out.println(Arrays.toString(a));
}
}
public class Project {
public static void main(String[] args) {
int row = 10;
int[][] a = new int[row][row*2+1];
a[0][row] = 1;
for (int i = 1; i < a.length; i++) {
for (int j = 1; j < a[i].length-1; j++) {
a[i][j] = a[i-1][j-1]+a[i-1][j+1];
}
}
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
if(a[i][j]!=0){
System.out.print(a[i][j]+"\t");
}
else {
System.out.print("\t");
}
}
System.out.println();
}
}
}