Java 数组
2020-12-13 16:06
标签:行操作 height etag 获取 首字母 int length rgs 重用 1.定义数组的方式 类/基本类型 [] 数组名 = new 类/基本类型[长度]; 例如: 缺点:长度固定,不够灵活 定义的时候就初始化了,类数组的初始值是null,基本类型数组的初始值是0; 2.获取长度 数组名.length; a.length;b.length; 用于遍历,越界访问则异常 3.内存 4.引用 等号右侧:创建了一个int型数组对象 a指向一个对象,b指向 和 a指向 相同 的对象,a和b都是该对象的引用,a和b都可以操作目标对象 此时a不指向任何对象,不能再访问,比如把数组第一个值改为12,a[0]=12会出错,但是b[0]=12不会出错。 创建一个数组对象obj1,内容为1,2,3,4 如果想保留obj1,应该a=new int[3];之前加一句int [] b = a;这样可以使b引用a,a另外去引用别的也没关系。 5.匿名数组 在栈内存中没有任何引用,只在堆内存开辟空间,存放数据 和失去引用的对象一样,用一次就废了,没办法重用,会被java系统自动回收。 6.用Arrays实现对数组的操作 导入包:import java.util.Arrays; (1)排序 语法: Arrays.sort(数组名); (2)将数组转换为字符串后捆绑输出 语法: Arrays.toString(数组名); 可以使用 toString() 方法将一个数组转换成字符串,该方法按顺序把多个数组元素连接在一起,多个元素之间使用逗号和空格隔开 输出: sports (3)复制数组 语法: 数据类型 [] 新的数组名 = Arrays.copyOf(需要复制的数组名,需要复制的长度); 输出: a数组的长度6 7.作为参数传入方法 输出: 1 11 33 44 理解:方法里的形参,相当于创建新的引用来 共同引用a数组,可以对a数组进行操作,进行的操作直接对堆中的数据进行修改。 8.类数组 类 [] 数组名 = new 类[长度]; 输出: null 推测:创建对象的引用数组stu,一开始引用都是null,直到new之后堆中才开辟内存空间,分别创建3个对象,再通过stu引用,对于字符串,初始值是null,基本类型初始值则是0,直接输出对象则默认调用toString()方法,这个方法默认返回该对象实现类的类名 + @ +hashCode值。一般都被重写,江湖上的不成文规定是返回属性+值。 Java 数组 标签:行操作 height etag 获取 首字母 int length rgs 重用 原文地址:https://www.cnblogs.com/shoulinniao/p/11617252.htmlnode[] a=new node[5];
int [] b=new int[6];
double []c=new double[6]; for(int i=0;i
int[] x = null;
x = new int[3];
x[0] = 10;
x[1] = 20;
x[2] = 30;
x = null;
int[] a=new int[4];
等号左侧:变量a称为该对象的引用(Reference)
称作:变量a指向一个对象int[] a=new int[4];
int[] b=a;
int [] a={1,2,3,4};
int [] b=a;
a=null;//空对象
int [] a={1,2,3,4};
System.out.println(a[0]+" "+a[1]+" "+a[2]);
a=new int[3];
a[0]=a[1]=a[2]=55;
System.out.println(a[0]+" "+a[1]+" "+a[2]);
/**输出
1 2 3
55 55 55
*/
创建另一个数组对象obj2,内容为0,0,0
obj2内容变为55,55,55
此时obj1无人引用(失去引用的对象),会被java系统自动回收System.out.println(new int[]{1,2,3}.length);
可以使用 sort() 方法实现对数组的排序,只要将数组名放在 sort( ) 方法的括号中,就可以完成对该数组的排序(按升序排列),字符串则以首字母排序import java.util.Arrays;
public class MyTest8 {
public static void main(String[] args) {
String[] hobbies = { "sports", "game", "movie" };
int [] a= {11,33,44};
for(int i=0;i
game
movie
[sports, game, movie]
[11, 33, 44]public class MyTest8 {
public static void main(String[] args) {
int [] a = {11,33,44,20,53,87};//初始化长度为6的数组
int [] c1 = Arrays.copyOf(a,2);//复制前2个长度的数组
int [] c2 = Arrays.copyOf(a,4);//复制前4个长度的数组
int [] c3 = Arrays.copyOf(a,a.length);//完全复制
System.out.println("a数组的长度"+a.length);
System.out.println("c1数组的长度"+c1.length);
System.out.println("c2数组的长度"+c2.length);
System.out.println("c3数组的长度"+c3.length);
for(int i=0;i
c1数组的长度2
c2数组的长度4
c3数组的长度6
11 33 44 20 53 87
11 33
11 33 44 20
11 33 44 20 53 87public class MyTest8 {
public static void main(String[] args) {
int [] a= {11,33,44};
MyTest8 test=new MyTest8();
test.print(a);
System.out.println("2 "+a[0]+" "+a[1]+" "+a[2]);
test.print2(a);
System.out.println("4 "+a[0]+" "+a[1]+" "+a[2]);
}
public void print(int []c )
{
System.out.println("1 "+c[0]+" "+c[1]+" "+c[2]);
c[0]=10;c[1]=20;c[2]=30;
}
public void print2(int a[])//形参名可以相同,并且int [] a和int a[]效果一样
{
System.out.println("3 "+a[0]+" "+a[1]+" "+a[2]);
a[0]=a[1]=a[2]=1;
}
}
2 10 20 30
3 10 20 30
4 1 1 1package my_acm;
import java.util.Arrays;
public class MyTest8 {
public static void main(String[] args) {
Student[] stu = new Student[3];
for(int i=0;i
null
null
3
id=1 name=null age=0
id=2 name=守林鸟 age=0
id=3 name=霸王别鸡 age=21
id=1 name=null age=0
id=2 name=守林鸟 age=0
id=3 name=霸王别鸡 age=21
hello