精华内容
下载资源
问答
  • public class Test01 { public static void main(String[] args) { ... //动态赋值 arr01[0] = 13; arr01[1] = 15; for(int i=0; i<10; i++) { //i<arr01.length arr01[i] = 10*i; }
    public class Test01 {
    	public static void main(String[] args) {
    		int[] arr01 = new int[10]; 
    		String[] arr02 = new String[5];
    		
    		//动态赋值
    		arr01[0] = 13;
    		arr01[1] = 15;
    	
    		for(int i=0; i<10; i++) { //i<arr01.length   
    			arr01[i] = 10*i;
    		}
    		for(int i=0; i<10; i++) { //arr01.length 数组的遍历
    			System.out.print(arr01[i]+"\t");		
    		}
    		
    		System.out.println("###########");
    		//增强for循环
    		for(int m:arr01) { //只用来读取数组里面的内容
    			System.out.print(m);
    		}
    		
    		User[] arr03 = new User[3];
    		arr03[0] = new User(1001, "xie0");
    		arr03[1] = new User(1002, "xie1");
    		
    		for(int i=0; i<arr03.length; i++) {
    			System.out.println(arr03[i].getName());
    		}
    	}
    }
    
    class User{
    	private int id;
    	private String name;
    	
    	public User(int id, String name) {
    		super();
    		this.id = id;
    		this.name = name;
    	}
    	public int getId() {
    		return id;
    	}
    	public void setId(int id) {
    		this.id = id;
    	}
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	
    }
    
    
    展开全文
  • Scanner input=new Scanner(System.in); String[] s=new String[number];...来进行直接赋值而是通过声明多个对象从而进行逐一赋值 String类中的一些方法 1.length()方法,用来直接求字符串的长度 2...

    Scanner input=new Scanner(System.in);
    String[] s=new String[number];
    s[i]=input.nextLine();
    Java不像C/C++是用String s[i]=input.nextLine();来进行直接赋值而是通过声明多个对象从而进行逐一赋值

    String类中的一些方法
    1.length()方法,用来直接求字符串的长度
    2.charAt()方法返回指定索引位置的char值。索引范围为0~length()-1 (可以用来进行字符串中单个字符和要校验的字符的比较)
    例如
    String str = “This is yiibai”;
    System.out.println(str.charAt(0));
    System.out.println(str.charAt(4));
    System.out.println(str.charAt(6));
    输出的就是 T " " S

    展开全文
  • package les9; import java.util.Scanner; public class Book { /** * @param args ...代码如图,主要的问题是,如何在new一个对象的前提下,对数组进行循环赋值,并且能够输出前一轮循环赋值的数据
  • 数组的声明 一般有两种形式的声明: int[] a; int a[]; 这两种声明都没错,但是大多数都使用第一种声明,因为变量名是独立的,不...对象数组为null,如String类型的数组。 数组的循环 数组中的每个元素都有一个下标,

    数组的声明

    一般有两种形式的声明:

    int[] a;
    int a[];
    

    这两种声明都没错,但是大多数都使用第一种声明,因为变量名是独立的,不带任何符号。

    声明一个数组,并没有将a真正的初始化为一个数组。

    下面,语句就是声明了一个可以存储100个整数的数组。可以根据你的实际需求,更换int类型为你需要的数据类型。

    int[] a=new int[100];
    

    其中,数字数组的初始化默认为0。boolean为false。对象数组为null,如String类型的数组。

    数组的循环
    数组中的每个元素都有一个下标,下标从0开始,所以下标最大为数组的长度-1。

    当我们需要依次输出数组中的每个元素时,就需要用到循环。

    for(int i=0;i<100;i++)
    {
       System.out.println(a[i]);      
    }
    

    除了常规的循环,还有一种Java中的增强for循环,就相当于C#中的foreach,只是语法稍有不同。

    for(int item:a)
    {
       System.out.println(item);  
    }
    
    //加入Java开发交流君样:756584822一起吹水聊天
    

    其中,int为遍历对象的类型,item为自定义的一个名字,冒号后面的a就是你遍历的对象,数组a。

    增强for循环的用途很多,而且不用在意数组的下标。

    数组的赋值

    单单只声明数组的话,数组的元素的值都只是默认值,下面的方法可以在声明的同时初始化它们的值。

    int[] a={1,2,3,4,5};
    

    这种声明,不需要手动限制它们的长度,它会根据值得个数,自动设置长度。

    此时,a.length=5;

    除了刚声明就给数组初始化外。还有一种可以方法可以重新初始化一个数组。

    a=new int[] {6,7,8,9,10};
    

    实际情况下,很少说直接初始化一个数组的值,然后只用这些值。

    一般情况下,需要声明后,根据实际的情况,给数组赋值。

    如果是单独赋值就是a[i]=n;就行了。

    还可以使用上面的for循环,给数组循环赋值。

    数组的拷贝

    Java允许将一个数组变量拷贝给另一个数组变量。

    值得注意的是,拷贝不是单纯的把a的值复制一份然后给b,而是a和b引用内存当中同一个数组。

    大家可以把内存理解成很多个房间,变量名就是门牌号。就相当于a和b两个门牌号指向同一个房间。

    int[] a={1,2,3,4,5};
    int[] b=a;
    

    但是这种拷贝有种缺点,就是如果a[i]变了,对应的b[i]也会变。

    //加入Java开发交流君样:756584822一起吹水聊天
    如果你只是单纯的想要a中的值,可以使用copyOf方法。

    int[] b=Arrays.copyOf(a,a.lenght);
    
    

    image

    最新2020整理收集的一些高频面试题(都整理成文档),有很多干货,包含mysql,netty,spring,线程,spring cloud、jvm、源码、算法等详细讲解,也有详细的学习规划图,面试题整理等,需要获取这些内容的朋友请加Q君样:756584822

    展开全文
  • Java数组拷贝的四种方法循环赋值System.arraycopy()Arrays.copyOf()Object.clone()对象拷贝数组拷贝复制引用和复制对象的区别 效率:System.arraycopy > clone > Arrays.copyOf > 循环赋值 Java数组拷贝的...

    效率:System.arraycopy > clone > Arrays.copyOf > 循环赋值

    Java数组拷贝的四种方法:

    • 循环赋值:速度相对较慢
    • System.arraycopy():浅拷贝
    • Arrays.copyOf():或者Arrays.copyOfRange(),浅拷贝
    • Object.clone()

    循环赋值

    循环拷贝其实没什么好说的啦,就是用一个for循环进行元素的逐个拷贝,进行深拷贝或者浅复制这个大家可以自己把握。

    System.arraycopy()

    这个是系统提供的拷贝方式,也是我们推荐使用的拷贝方式,它是浅拷贝,也就是说对于非基本类型而言,它拷贝的是对象的引用,而不是去新建一个新的对象。通过它的代码我们可以看到,这个方法不是用java语言写的,而是底层用c或者c++实现的,因而速度会比较快。

    public static native void arraycopy(Object src, int srcPos,Object dest, int destPos,int length);                  
    

    通过源代码我们可以看到,关键字native说明它不是用java语言写的,而是调用其他语言的代码。

    • src:源数组
    • srcPos:源数组中的起始位置
    • dest:目标数组
    • destPos:目标数组中的起始位置
    • length:要复制数组元素的数量
    import java.util.Arrays;
    
    public class Solution {
        public static void main(String[] args) throws CloneNotSupportedException {
            int[] src = new int[]{1, 2, 3, 4, 5};
            int[] dest = new int[]{11, 12, 13, 14, 15, 16};
            int srcPos = 2;
            int destPos = 3;
            int length = 2;
            System.arraycopy(src, srcPos, dest, destPos, length);
            System.out.println(Arrays.toString(dest));//[11, 12, 13, 3, 4, 16]
        }
    }
    

    Arrays.copyOf()

    这个方法也是浅拷贝,为什么呢?我们看一下它的源代码就知道了。

    public static byte[] copyOfRange(byte[] original, int from, int to) {                   
       int newLength = to - from;
       if (newLength < 0)
           throw new IllegalArgumentException(from + " > " + to);
           byte[] copy = new byte[newLength];
           System.arraycopy(original, from, copy, 0,
                  Math.min(original.length - from, newLength));
            return copy;
        }
    
    

    实际上它调用的就是System.arraycopy,所以肯定也是浅拷贝。

    Object.clone()

    clone()比较特殊,对于对象而言,它是深拷贝,但是对于数组而言,它是浅拷贝。

    对象拷贝

    首先讲一下对象的拷贝,它是深拷贝,大家可以用对象去测试一下。下面我们看一下它的源代码:

    protected native Object clone() throws CloneNotSupportedException;
    

    这里也有native关键字,所以也是底层的c语言实现的。
    还要注意的是,这里修饰符是protected,也就是说,我们创建了一个Object类以后,是不能直接调用这个clone()方法的,因为protected关键字只允许同一个包内的类和它的子类调用,所以我们声明一个object类时,肯定不是同一个包内,所以就不能去调用它。

    要调用这个方法,就需要我们写一个类,然后声明实现cloneable接口就好了,不需要去显示地声明继承于object,因为java中的类如果不显示说明父类的话,默认父类就是object。然后我们继承这个方法:

    @Override
        public Object clone() throws CloneNotSupportedException {
            // TODO Auto-generated method stub
            return super.clone();
        }
    

    这里需要是,为了能够在不同包内去调用这个方法,我们需要把这个权限升级为public。现在我们就可以调用这个类的clone()方法去拷贝我们的类了。

    public class Solution {
        public static void main(String[] args) throws CloneNotSupportedException {
            Cat cat1 = new Cat("abc", 3);
            System.out.println(cat1);//Cat@1b6d3586
            Cat cat2 = (Cat) cat1.clone();
            System.out.println(cat2);//Cat@4554617c
        }
    }
    
    //被克隆的类要实现Cloneable接口
    class Cat implements Cloneable {
        private String name;
        private int age;
    
        public Cat(String name, int age) {
            this.name = name;
            this.age = age;
        }
    
        @Override
        protected Object clone() throws CloneNotSupportedException {
            return super.clone();
        }
    }
    

    数组拷贝

    对于数组而言,它不是简单的将引用赋值为另外一个数组引用,而是创建一个新的数组。但是我们知道,对于数组本身而言,它它的元素是对象的时候,本来数组每个元素中保存的就是对象的引用,所以,拷贝过来的数组自然而言也是对象的引用,所以对于数组对象元素而言,它又是浅拷贝。我们用以下代码验证一下:

    public class Solution {
        public static void main(String[] args) throws CloneNotSupportedException {
            Aby aby1 = new Aby(1);
            Aby aby2 = (Aby) aby1.clone();
            aby1.i = 2;
            System.out.println(aby1.i);//2
            System.out.println(aby2.i);//1
    
            Aby[] arr1 = {aby1, aby2};
            Aby[] arr2 = arr1.clone();
            arr2[0].i = 3;
    
            System.out.println(arr1[0].i);//3
            System.out.println(arr2[0].i);//3
        }
    }
    
    class Aby implements Cloneable {
        public int i;
    
        public Aby(int i) {
            this.i = i;
        }
    
        @Override
        public Object clone() throws CloneNotSupportedException {
            return super.clone();
        }
    }
    

    复制引用和复制对象的区别

    复制引用:是指将某个对象的地址复制,所以复制后的对象副本的地址和源对象相同,这样,当改变副本的某个值后,源对象值也被改变;

    复制对象:是将源对象整个复制,对象副本和源对象的地址并不相同,当改变副本的某个值后,源对象值不会改变;

    public class Solution {
        public static void main(String[] args) throws CloneNotSupportedException {
            Cat cat1 = new Cat("abc", 3);//源对象
            System.out.println("源对象地址:" + cat1);//源对象地址:Cat@1b6d3586
            //调用clone方法,复制对象
            Cat cat2 = (Cat) cat1.clone();
            System.out.println("复制对象地址:" + cat2);//复制对象地址:Cat@4554617c
            //复制引用
            Cat cat3 = cat1;
            System.out.println("复制引用地址:" + cat3);//复制引用地址:Cat@1b6d3586
        }
    }
    
    //被克隆的类要实现Cloneable接口
    class Cat implements Cloneable {
        private String name;
        private int age;
    
        public Cat(String name, int age) {
            this.name = name;
            this.age = age;
        }
    
        @Override
        protected Object clone() throws CloneNotSupportedException {
            return super.clone();
        }
    }
    
    展开全文
  • //导入java.util.Arrays;... // 循环遍历数组赋值 for (int i=0;i;i++) { nums[i]=(int)(Math.random()*100); // 产生一个100以内的随机数,并赋值数组的每个成员 } return nums; // 返回赋值后的数组 } }
  • **问题描述:**要求输出正确工资条(对象字段的toString方法),但因 执行顺序问题导致salary字段未能成功被赋值(为初始值0)。 1.1. 错误顺序:先输出staff2对象(toString),再执行satff2.calculateSalary ...
  • 创建:分配数组长度,nums = int[10],数组对象是在堆中的。 总结:int[] nums = new int[10]; 或 int nums[] = new int[10];,多用前者。 2.操作 获取数组长度:nums.length,多用与循环判断条件。 通过索引...
  • 一: .需求说明' (1)创建英雄类(Hero)。 (2)在该类中定义战斗方法battle(),在该方法中int类型变量count,count初始值为1,count表示一个计数i,用于记录战斗的次数。...创建循环,在循环中调用Hero对象的..
  • Java循环赋值和循环设置属性问题

    千次阅读 2017-10-31 17:40:15
    for循环可以修改对象内容 , 但是重新赋值无效 , 另外不可以删除和新增元素 集合或者数组中 , 存放的是对象的引用 , 而不是对本身 , 对于字符串来说 , 存的就是这个字符串, 而不是这个字符串对象  ...
  • 我们知道,在Java中有时对数组操作不当就会造成异常,尤其是对数组下标的操作,为此Java引入了for-each语句,以方便我们得到数组中的每一个元素。 语法格式:for(数据类型 变量 :数组|集合){}//表示将数组或...
  • Java JSON数组中出现{"$ref":"$[0]"}

    千次阅读 2019-03-26 22:37:32
    出现这个问题原因主要是同一对象重复引用,并重复赋值 一般在for循环中很可能会出现 有问题的代码类似这样重复给JSONObject对象赋值 JSONObject jsonObject1 = new JSONObject();//这里的JSONObject在循环体外声明 ...
  • 数组工具类:java.util.Arrays Arrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用,而”不用“使用对象来调用 具有以下常用功能: 给数组赋值:通过fill方法 对数组排序:通过sort...
  • 比如有一个int[][] a 已经...如果需要b不变,就必须用for循环,使a数组的每个元素都复制到b的数组里。之所以b会随着a变化,那是因为他们指向了同一个对象。 List例子: ArrayList a, 仅仅只是声明了一个list变量,...
  • 参考书:《Java语言程序设计与数据结构(基础篇)》—— 梁勇 文章目录一、一维数组1. 数组的存储2....数组JAVA中是对象数组变量是一个引用数据类型,JVM将对象存储在一个称为堆(heap)的内存区.
  • Java二维数组与构造方法

    千次阅读 2019-04-18 08:49:33
    比较一维数组:一维数组对于一维数组的时候,如果元素是简单数据类型,我们直接将数据本身放入数组,如果元素是引用数据类型,我们是将对象的地址放入数组。 创建: 赋值/取值:————下标 遍历:————增强...
  • 利用反射获取java类属性并赋值

    千次阅读 2017-11-06 18:47:46
    自己写的方法,通过传入Object类型的对象 来为自定义的java赋值,返回值再进行类型转换。注意类型转换。 整个思想是通过类反射获取类字段数组,然后获取属性名,获取属性类型。循环比较,为不同类型的java类属性...
  • Java循环一个对象的所有属性,并通过反射给这些属性赋值/取值 说到循环遍历,最常见的遍历数组/列表、Map等。但是,在开发过程中,有时需要循环遍历一个对象的所有属性。遍历对象的属性该如何遍历呢?查了一下资料...
  • 数组**内存分析****三种初始化方式****增强for循环****Arrays类**稀疏矩阵3. 面向对象(OO)4. 异常机制异常异常处理机制自定义异常 1. 方法 1. 定义 ​ 方法是解决一类问题的步骤的有序组合 ​ 方法包含于类或对象...
  • 案例:随机生成0-99内的10个数,放入到数组中,并打印出来,然后进行冒泡排序,之后再打印 package hehe;... //通过循环赋值数组 for(int i=0;i<arr.length;i++) { //生成0-99之类随机数变量a int
  • Java_13:多维数组-源码

    2021-05-18 16:59:05
    第二天:变量,数据类型和赋值。 第三天:更多变量/类型转换 第四天:介绍对象 第五天:方法/功能 第六天:自定义课程 第七天:JavaDoc和单元测试 第八天:If-Else陈述 第9天:开关/ If-Else梯子 第十天:循环 第11...
  • java数组拷贝主要有四种方法,分别是循环赋值,System.arraycopy(), Arrays.copyOf()(或者Arrays.copyOfRange)和clone()方法。 Java数组的复制操作可以分为深度复制和浅度复制。简单来说深度复制,可以将对象的值和...
  • 这样的修改并不是修改本身,$item就相当于赋值了一份数组中的值,就跟JAVA中的值方式传递值类型一样,我只是拿了你的值,并不是拿了你的内存地址,所已$item的改变,并不会影响数组 第一种方式就是直接修改数组键的值...
  • Java数组属于引用类型对象,以此为例说明地址引用和内容复制的区别 1.地址引用 为一个数组变量赋值另一个数组变量后,2个数组变量指向同一个内存地址,引用同一个数组对象,此时内存中并没有建立新的数组对象。 2....
  • *对象数组起始位置可以初始化几个元素 // 1.功能五 判断队名是否重复2.给队起名;3.队伍建队用flag循环判断是否队伍已满; 2.功能六 遍历二维数组子元素的方法 *3.Role[] roles = new Role[0];// 建立角色对象数组...
  • 定义类数组

    2019-10-06 04:58:12
    java中,可以类为基本对象来定义一个数组 ,也就是直接以一个class作为一个类型,同时里面还有属性 编写学生类,包含姓名,学号,成绩三个属性 题目要求: 1.为学生类添加构造函数给每个成员属性赋值,使用...
  • )1.3 for( : )2 防止在循环体里修改循环变量2.1 禁止重新赋值2.2 允许修改状态3 类型相容问题3.1 使用和 要被遍历的数组 中的元素 相同类型的 循环变量3.2 使用和 要被遍历的Collection 中的元素 相同类型的循环变量...

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 270
精华内容 108
关键字:

java对象数组循环赋值

java 订阅