数组属于引用类型的变量,数组的元素既可以是引用数据类型,又可以是基本数据类型。
数组长度一旦确定不可修改。
package j1;
public class array {
public static void main(String[] args){
int[] ids;//声明
ids=new int[]{1001,1002,1003,1004};//静态初始化
String[] names=new String[4];//动态初始化
names[0]="蛋包饭";
names[1]="麻辣香锅";
names[2]="酸辣粉";
names[3]="炸鸡";
System.out.println(names.length);//获取数组的长度
for(int i=0;i<names.length;i++){
System.out.println(names[i]);
}
}
}
数组一旦初始化,其长度就确定了。
数组元素的默认初始化值:
整型全为0;浮点型0.0;char类型ascll码值为0的;boolean为false,引用数据类型为null
stack栈:主要存放局部变量,先进后出
heap堆:主要存放new出来的变量,比如:对象,数组
方法区(常量池,静态域)
放在方法中的变量都叫做局部变量
package j1;
public class array {
public static void main(String[] args) {
int[] arr=new int[]{1,2,3};//一维数组
int[][] arr1=new int[][]{{1,2,3},{4,5},{6,7,8}};//二位静态数组
int arr4[][]=new int[][]{{1,2,3},{4,5,9,10},{6,7,8}};
int[] arr5[]=new int[][]{{1,2,3},{4,5},{6,7,8}};
int[][] arr6={{1,2,3},{4,5},{6,7,8}};//类型推断
String[][] arr2=new String[3][2];
String[][] arr3=new String[3][];
//调用指定位置的元素
System.out.println(arr1[0][1]);
System.out.println(arr2[1][1]);//null
//System.out.println(arr3[1][0]);//报错,空指针的异常
arr3[1]=new String[4];
System.out.println(arr3[1][0]);//不报错
//获取数组的长度
System.out.println(arr4.length);//3
System.out.println(arr4[0].length);//3
System.out.println(arr4[1].length);//4
//如何遍历二维数组
for(int i=0;i<arr4.length;i++){
for(int j=0;j<arr4[i].length;j++){
System.out.print(arr4[i][j]+" ");
}
System.out.println();
}
}
}
数据结构:
1.数据与数据之间的逻辑关系:集合、一对一、一对多、多对多
2.数据的存储结构:
线性表:(一对一),顺序表(数组)、链表/栈、队列
树形关系:二叉树
图形结构:
package j1;
public class array {
public static void main(String[] args) {
//数组的冒泡排序
int[] arr=new int[]{43,25,68,42,78,56,65,21,3,2,1,4,45,44,21};
int t;
for (int k : arr) {
System.out.print(k + " ");
}
System.out.println();
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr.length-i-1;j++){
if(arr[j]>arr[j+1]){
t=arr[j];
arr[j]=arr[j+1];
arr[j+1]=t;
}
}
}
for (int j : arr) {
System.out.print(j + " ");
}
System.out.println();
}
}
算法:
排序算法:
搜索算法:
package j1;
public class array {
public static void main(String[] args) {
//数组的反转
String[] arr=new String[]{"a","b","c","d","e","f","g"};
String t;
for (String s : arr) {
System.out.print(s + " ");//增强的for
}
System.out.println();
for(int i=0,j=arr.length-1;i<j;i++,j--){
t=arr[i];
arr[i]=arr[j];
arr[j]=t;
}
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+" ");
}
System.out.println();
}
}
package j1;
public class array {
public static void main(String[] args) {
//数组的二分查找
int[] arr=new int[100];
for(int i=0;i<arr.length;i++){
arr[i]=i;
}//顺序赋值
int dest=25;
int head=0;//首索引
int end=arr.length-1;//尾索引
boolean isFlag=true;
while(head<=end){
int middle=(head+end)/2;
if(dest==arr[middle]){
System.out.println("find "+middle);
isFlag=false;
break;
}
else if(dest<arr[middle]){
end=middle-1;
}
else{
head=middle+1;
}
}
if(isFlag){
System.out.println("not found");
}
}
}