数组有两种创建方式,第一种方式可以分解,第二种方式不能分解; 有一个字符的数组创建 自己错了很多
数据只是一个容器,可以放基本数据类型,也可以引用数据类型;
数组里面讲了一些堆栈 内存的知识 自己没看 知道反转那个代码 三个引用 两个数组的代码
第一部分 一维数组
代码1,创建一个数组,自己真的是代码写的太少了,两次都没有写对
class Demo1_array
{
public static void main(String[] args)
{
int[] arr;
//arr = new[5];
//arr = new arr[5];
arr = new int[5];
System.out.println(arr);
}
}
代码2 也是创建数组,意思是初始化的正数数组中的每一个都是0,你可以赋值,赋值以后就不一样了,
代码3 数组只是一个容器,它和正数,浮点数什么的不一样,数组可以存储基本数据类型,也可以存储引用数据类型。这个代码里还介绍了,栈:存储局部变量 堆:存储new出来的数组和对象;方法区;这个代码和代码1没有什么区别
代码4:这个和代码1没什么区别
代码5:这个是三个引用 两个数组,所以a3数组的赋值是对a2数组是有影响的
class Demo5_Array
{
public static void main(String[] args)
{
int[] a1;
a1 = new int[3];
int[] a2;
a2 = new int[5];
int[] a3;
a3 = a2;
a1[0]= 10;
a1[1] =20;
a2[1] = 30;
a3[1] = 40;
a3[2] = 50;
System.out.println(a1[0]);
System.out.println(a1[1]);
System.out.println(a1[2]);
System.out.println(a2[0]);
System.out.println(a2[1]);
System.out.println(a2[2]);
System.out.println(a3[0]);
System.out.println(a3[1]);
System.out.println(a3[2]);
}
}
代码6 这个是静态创建数组 前面 那个属于动态创建数组
class Demo6_Array
{
public static void main(String[] args)
{
//int[] a1;
//a1=new int[]{1,2,3};
//a1={1,2};
int[] a1 = {1,2};
System.out.println(a1[1]);
}
}
在静态创建数组的时候,记住中括号里面是没有东西的,然后如果直接大括号赋值的时候,那么必须在一行简写,不能分两行
代码7,这个属于指针越界,自己不写了
代码8:这个是遍历数组,自己结合了前面的方法,用两种方式遍历了数组。
class Demo8_Array
{
public static void main(String[] args)
{
int[] arr = {1,2,3};
for(int i = 0;i<arr.length;i++){
System.out.println(arr[i]);
}
System.out.println("Hello World!");
print(arr);
}
public static void print(int[] a){
for(int i = 0;i<a.length;i++){
System.out.println(a[i]);
}
}
}
代码9 找到数组中最大的值 写这个代码的时候 自己int max的值得位置自己写错了,后来改正过。
class Demo9_Array
{
public static void main(String[] args)
{
//System.out.println("Hello World!");
int[] arr = {1,2,3};
int n = getmax(arr);
System.out.println(n);
}
public static int getmax(int[] a){
int max = a[0];
for(int i = 1;i<a.length;i++){
//int max = a[0];
if(a[i]>max){
max = a[i];
}
}
return max;
}
}
代码10 这个里面有一个重要的思想就是数组是可以变得,对一个数组进行方法的转换以后,再用原来的名字调用数组,发现数组发生了改变,这个自己应该记住。数组的反转,这个里面注意一点,反转的次数是数组内元素的一半。
class Demo10_Array
{
public static void main(String[] args)
{
System.out.println("Hello World!");
int[] arr = {2,3};
rever(arr);
//print(arr);
System.out.println(arr[0]);
}
public static void rever(int[] arr){
for(int i = 0;i<arr.length/2;i++){
int temp = arr[i];
arr[i] = arr[arr.length-1-i];
arr[arr.length-1-i]=temp;
}
}
}
代码11 这个是输出星期几的一个代码 自己看的时候就别扭,写的时候也出了问题,第一个问题,自己对于数组的理解还是不够深刻,在创建数组的时候采用了静态数组的创建,这种创建方法,需要里面都是字符,所以必须用单引号,双引号是不行的,。第二个问题,自己在写返回值得时候,还是不够清楚,必须是一个数组的名字再加上索引,自己写了一个数组的类型加上索引,这是什么操作,自己都搞不懂自己在写什么东西。
import java.util.Scanner;
class Demo11_Array
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
int x = sc.nextInt();
char y = getweek(x);
System.out.println(y);
}
public static char getweek(int week){
//char[] i= {"","一","二","三","四"};
char[] i ={' ','一','二'};
//return char[week];
return i[week];
}
}
代码12 这个是找到第一个一样的值,感觉这个代码挺简单的,结果自己出了俩错,这个return语句的位置,要写在if内部,外面也需要加一个return语句 这个的意思是找不到就-1
class Demo12_Array
{
public static void main(String[] args)
{
int[] x = {3,4,5,6,7};
int y = 6;
int z = getindex(x,y);
System.out.println(z);
}
public static int getindex(int[] arr,int value){
for(int i = 0; i<arr.length;i++){
if(arr[i]==value){
//break;
return i;
}
}
//return i;
return -1;
}
}