初始化字符串数组java
‘壹’ java中一个类包含String数组怎么初始化的
不可以滴!!
因为在B中,如果没有了带*的那一行,那么仅仅只是代表 有存在一个存放A类型数组:as[i],但是里面每个元素到底存放什么我们是不知道的,在JAVA里面,就是引用为空的意思,既as[i] = null。就是说里面其实是没有任何东西的,仅仅只有一个定义而已,那怎么可以指向A类里面的a属性呢?因为as[i]指向的东西都为空,空就是代表没有任何东西,那么里面自然也不会有a这个属性咯。所以我们在声明完数组的时候,必须把数组里面的元素也申明了。但是为什么C可以呢。
你看C是这样做的:
C先声明了一个数组,所以只要存在C的实例,就可以使用到这个数组。虽然这时候,数组里面的元素是为空的,但是你在主程序里面使用了c.s[1]="3",意思就是为c实例里面的数组的第2个元素给申明了,而不是直接引用,这与B是不同的。
——————————————————————————————————————————————————————
B-->不为空,所以可以使用B里面的元素,既as数组,但是as数组里面的元素是空的,所以不存在里面有某种属性的说法,自然是不可是使用A类里面的元素a咯。
C--》不为空,所以可以使用C里面的元素s数组,然后对s数组进行操作。
祝你好运!!希望你能够理解
‘贰’ JAVA中怎么初始化对象数组
嗯,new之后只是分配了空间,如果不指定值,对象数组空间对应的就是空。那么如你所说,可否详尽一下错误呢?
‘叁’ JAVA中怎么初始化对象数组
你这个试试对对象数组的一个声明,并没有示例话,所以会报空指针异常
这个数组对象都是现用现初始化的
Animals [] an=new Animals[5];//这只是个对象类型数组的声明
用的时候需要
for(int i=0;i<5;i++)
an[i]=new Animals();
这样你明白了吧
你前面的那个光声明了数组,但是没有调用Animals的构造函数,你数组里的每个元素都是一个对象,使用前必须要先实例化
如果你只是用户输入长度,
Animals [] an=new Animals[n];
声明时是可以用变量的
或者你直接Animals [] an=new Animals[100];定义一个大数组,要用的时候再new Animals();实例化,或者用LinkedList<Animals> an=new LinkedList<Animals>();定义一个动态数组
‘肆’ java字符串数组
import java.util.Arrays;
public class Txe {
public static void main(String[] args) {
//new java.lang.String [3];
//在堆中分配一个String类对象的空间,并将该对象的地址堆入操作数栈。
String [] s1 = new String[4];
String [] s2 = new String[4];
String [] s3 = new String[4];
System.out.println("0:"+s1); //<输出的是s1的地址>
System.out.println("1:"+s1.equals(s1)); // 为什么输出是 true <s1的地址与s1的地址比较,地址是相同的。>
System.out.println("2:"+new String [3].equals("null"));// 为什么,输出是 false <用一个地址与一个字符串比较>
System.out.println("3:"+new String[3].equals(null));// 为什么,输出是 false <地址与值比较>
System.out.println("4:"+new String[3]);//<输出地址>
s1[1]="a";
System.out.println("5:"+s1[3]);
System.out.println("6:"+s1[1].equals("a"));
//5,6是我自己忘记了,测试用的,汗!
System.out.println("7:"+s2+" "+s3);//<输出两个地址>
System.out.println("8:"+s2.equals(s3)); // <地址不同>
System.out.println("9:"+Arrays.equals(s2,s3));//<这个才是数组值与值的比较,注:我前面导入了Array包。>
System.out.println("10:"+new String[3].equals(new String[3])); // false<每重新分配一次地址都会不一样>
}
}
结果:
0:[Ljava.lang.String;@192d342
1:true
2:false
3:false
4:[Ljava.lang.String;@6b97fd
5:null
6:true
7:[Ljava.lang.String;@1c78e57 [Ljava.lang.String;@5224ee
8:false
9:true
10:false
你写了这道题第七分钟时我就看到了。
不过,用了这么久时间,我才稍稍有点点弄明白,找了N多的资料,问了N多的人。
希望对你有帮助。
‘伍’ 怎样在java中定义String数组
string[]
str
=
new
string[]{"aaaa","bbbb","cccc"};//直接初始化
string[]
str
=
new
string[]();//这样需要定义数组的空间
或者直接定义
string[]
str
=
null;
等你使用的时候在new
string[num]();
数组定义完了如果空间不够的话还可以扩充空间的,函数我忘了你可以在api文档查一下
‘陆’ java中怎么把字符串转化为字符串数组
1,
如果是 “字符串数组” 转 “字符串”,只能通过循环,没有其它方法
String[] str = {"abc", "bcd", "def"};
StringBuffer sb = new StringBuffer();
for(int i = 0; i < str.length; i++){
sb. append(str[i]);
}
String s = sb.toString();
2,
如果是 “字符数组” 转 “字符串” 可以通过下边的方法
char[] data={'a','b','c'};
String s=new String(data);
3,
使用StringUtils中的join函数。org.apache.commons.lang.StringUtils;
4,
将数组变成字符串
5,
StringUtils.join(str)
// 将数组用逗号分隔变成字符串
StringUtils.join(str, ",")
将字符串变成数组方法:
java.lang包中有String.split()方法,java中通常用split()分割字符串,返回的是一个数组。
特殊,转义字符,必须加"\"(“.”和“|”都是转义字符)
‘柒’ java String数组初始化问题
并不是出乱码了,是你把r加入进去了,r是一个String数组,无法直接转换为String
最后的那句 sb.append(r.toString()); 没有必要,删除就可以了