java 中 String 数组怎么动态赋值

 我来答
冷非冷
2015-12-29 · TA获得超过1573个赞
知道小有建树答主
回答量:496
采纳率:100%
帮助的人:179万
展开全部

首先明确一下数组的初始化:

//静态初始化
int a[]={1,2,3};
//动态初始化
int a[]; a = new int[3] ; a[0] = 1;a[1] = 2;a[2]=3;
//默认初始化
int a [] = new int [5] ;

JAVA是强类型,数组类型一旦声明,就不能更改了;

如果数组长度确定,我想所谓的“动态赋值”用循环应该可以搞定;

如果数组的长度是不确定的,我认为你这个提问才有点价值,因为这需要根据具体情况来改变数组的长度,告诉你java是怎么干的,用的 System.arraycopy,  jdk 里好多操作数组的源码都是用的这个,比如 ArrayList的实现


闲着没事写了个小例子玩玩:


import java.util.Random;
import java.util.Scanner;
/**
 *
 * @author LYTG
 * @since 2015-12-29 上午12:21:09
 */
public class DemoTest {
    /**
    * @author LYTG
    * @param args
    */
    public static void main(String[] args) {
        test2();
    }
    /**
    * @author LYTG
    * @param array
    */
    public static void out(String[] array){
        if(array==null){
            System.out.println("null");
            return;
        }
        if(array.length<1){
            System.out.println("{ }");
            return;
        }
        StringBuffer sb = new StringBuffer();
        sb.append("{\"");
        sb.append(array[0]);
        sb.append("\"");
        for(int i = 1; i<array.length; i++){
            sb.append(",\"");
            sb.append(array[i]);
            sb.append("\"");
        }
        sb.append("}");
        System.out.println(sb.toString());
    }
    /**
    * 声明一个长度为5的String类型数组,并为每个数组元素赋值一个随机整数
    * @author LYTG
    */
    public static void test1(){
        String[] array = new String[5];
        for(int i = 0; i<array.length; i++){
            array[i] = String.valueOf(new Random().nextInt());
        }
        out(array);
    }
    /**
    * 在控制台输入字符,把每次输入的字符保存到一个数组中,
    * 如果输入的字符串中包含空格,则切割后再分别保存到此数组中,
    * 在每次输入完成后输出整个数组,直到手动终止程序
    * @author LYTG
    */
    private static String[] array = new String[0];
    public static void test2(){
        Scanner sc = new  Scanner(System.in);
        System.out.println("请输入一串字符(输入完请敲回车):");
        String input = sc.nextLine();
        if(input.contains(" ")){
            String[] a = input.split(" ");
            int arrayLength = array.length;
            int aLength = a.length;
            String[] newArray = new String[arrayLength + aLength];
            System.arraycopy(array, 0, newArray, 0, arrayLength);
            System.arraycopy(a, 0, newArray, arrayLength, aLength);
            array = newArray;
        }else{
            int arrayLength = array.length;
            String[] newArray = new String[arrayLength + 1];
            System.arraycopy(array, 0, newArray, 0, arrayLength);
            newArray[arrayLength] = input;
            array = newArray;
        }
        out(array);
        test2();
    }
}
QQMSD8
2015-12-29 · 知道合伙人软件行家
QQMSD8
知道合伙人软件行家
采纳数:6788 获赞数:13239
没有做不到,只有想不到,帮助别人的同时也是对自己的提升

向TA提问 私信TA
展开全部
如果要用动态数组的话,建议使用JDK自带的集合类 List List是个泛型集合可放存放任意类型的数据。List<String> list = new ArrayList<String>();即可。ArrayList就是数组方式实现的。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
skillily
2015-12-29 · 超过50用户采纳过TA的回答
知道小有建树答主
回答量:98
采纳率:0%
帮助的人:53.9万
展开全部
写个方法传参数,或者写在构造函数里
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xiangjuan314
2016-04-15 · TA获得超过3.3万个赞
知道大有可为答主
回答量:2.9万
采纳率:0%
帮助的人:2922万
展开全部
一维数组的声明方式:
type var[]; 或type[] var;
声明数组时不能指定其长度(数组中元素的个数),
Java中使用关键字new创建数组对象,格式为:
数组名 = new 数组元素的类型 [数组元素的个数]
实例:
TestNew.java:
程序代码:
public class TestNew { public static void main(String args[]) { int[] s ; int i ; s = new int[5] ; for(i = 0 ; i 5 ; i++) { s[i] = i ; } for(i = 4 ; i >= 0 ; i--) { System.out.println("" + s[i]) ; } } }

初始化:
1.动态初始化:数组定义与为数组分配空间和赋值的操作分开进行;
2.静态初始化:在定义数字的同时就为数组元素分配空间并赋值;
3.默认初始化:数组是引用类型,它的元素相当于类的成员变量,因此数组分配空间后,每个元素也被按照成员变量的规则被隐士初始化。
实例:

TestD.java(动态):
程序代码:
public class TestD { public static void main(String args[]) { int a[] ; a = new int[3] ; a[0] = 0 ; a[1] = 1 ; a[2] = 2 ; Date days[] ; days = new Date[3] ; days[0] = new Date(2008,4,5) ; days[1] = new Date(2008,2,31) ; days[2] = new Date(2008,4,4) ; } } class Date { int year,month,day ; Date(int year ,int month ,int day) { this.year = year ; this.month = month ; this.day = day ; } }

TestS.java(静态):
程序代码:
public class TestS { public static void main(String args[]) { int a[] = {0,1,2} ; Time times [] = {new Time(19,42,42),new Time(1,23,54),new Time(5,3,2)} ; } } class Time { int hour,min,sec ; Time(int hour ,int min ,int sec) { this.hour = hour ; this.min = min ; this.sec = sec ; } }

TestDefault.java(默认):
程序代码:
public class TestDefault { public static void main(String args[]) { int a [] = new int [5] ; System.out.println("" + a[3]) ; } }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式