62,620
社区成员
发帖
与我相关
我的任务
分享public class Test {
int arr1[] = new int[] { 2, 4, 6 };
// arr1[2] = 8; // 报错
static int arr2[] = new int[] { 2, 4, 6 };
{
arr2[2] = 8; // 不报错
}
public static void main(String[] args) {
Test test = new Test();
System.out.println("test.arr1[2]" + test.arr1[2]);
System.out.println("arr2[2]" + arr2[2]);
}
}
6
8
弄清楚,谁隶属于谁就明白了
1)arr1是非静态成员变量(没用static修饰),隶属于:由类定义的对象【调用方有多少个new就有多少份arr1】
2)arr2是静态成员变量(用static修饰了),隶属于:类本身【不管new几次,不管有没有调用方,都可以赋值、引用】
【数组的赋值只能在方法体内吗?】这句话应该转换一下
问题1)【成员变量的赋值只能在方法体内吗?】
回答是:成员变量的赋值只能在方法体内
即使示例中的【arr2[2] = 8; // 不报错】,也得用花括号包围起来,相当于放在了一个匿名方法里
问题2)【成员变量的初始化只能在方法体内吗?】
回答是:不是这样的,如示例所示,成员变量的初始化可以在方法体外进行
public class Test {
int arr [] = new int [] {2,4,6};
public static void main(String[] args) {
int arr [] = new int [] {2,4,6};
arr[2] = 8; // 报错
}
}
类中可以定义类级变量,但不可以对变量进行操作
对变量的操作放在方法里面就可以了
public class Test
{
public static void main(String args[])
{
//第一种
int arr[] = {2,4,6};
arr[2] = 8;
//第二种
int arrLength = 3;
int arr1[] = new int[arrLength];
arr1[0] = 2;
arr1[1] = 4;
arr1[2] = 6;
arr1[2] = 8;
}
}