首先:
i%2 == 0?person3[i].name = "www":person3[i].name = "http";这种写法为什么不对?能不能改正一下,变成正确的?但是不要改成这样:person3[i] .name = i%2 == 0?"www":"heep";可以么?
第二个问题:
package com.Array;public class ArrayTest2
{
public static void main(String[] args)
{
Person2[] p = new Person2[100];
int j = 2;
int k = 1;
for(int i = 0;i < p.length;i++)
{
p[i] = new Person2();
j += i;
k += i;
p[j].name = "ll";
p[k].name = "pp";
}
for(int m = 1;m < p.length;m ++)
{
System.out.println(p[m].name);
}
}}
class Person2
{
String name;
}
这段代码会出现空指针异常,我很不理解为什么?能告诉我么?
i%2 == 0?person3[i].name = "www":person3[i].name = "http";这种写法为什么不对?能不能改正一下,变成正确的?但是不要改成这样:person3[i] .name = i%2 == 0?"www":"heep";可以么?
第二个问题:
package com.Array;public class ArrayTest2
{
public static void main(String[] args)
{
Person2[] p = new Person2[100];
int j = 2;
int k = 1;
for(int i = 0;i < p.length;i++)
{
p[i] = new Person2();
j += i;
k += i;
p[j].name = "ll";
p[k].name = "pp";
}
for(int m = 1;m < p.length;m ++)
{
System.out.println(p[m].name);
}
}}
class Person2
{
String name;
}
这段代码会出现空指针异常,我很不理解为什么?能告诉我么?
解决方案 »
- java面向对象设计求素数错误求解
- java 解析XML文件
- 面试题:如何对ArraySet进行排序,TreeSet有什么特点
- Java要学哪些东西啊?大家说说啊!
- 将CheckBox作为单元格Editor的表格列如何修改其值?
- (送分发发88)一个java应用程序的表单布置的小问题,希望大家帮忙?
- 全局变量
- 请问谁知道Jbuilder的serial number 和key是什么?
- 连接池里缓存PreparedStatement有什么用???
- 名词解释。一个类的成员变量,和这个类的对象有什么关系?
- java修改图片亮度对比度
- NIO 管道 为什么从第二个管道开始,能够读取到这么多个字节,可是读取到的字节却全为空?
第二题,
请注意:
j += i;
k += i;
和
j++;
k++;的区别
你输出的j和k那是累加
k += i;
p[j].name = "ll";
p[k].name = "pp";i=0时,j=2 此时p[2]还没有创建,当然会NullPointerException
即使你创建了,没有空指针异常,到后面还会有 ArrayIndexOutOfBoundsExcption
{ public static void main(String[] args)
{
Person[] person = new Person[10];//定义一个Person对象数组
for(int i=0;i<person.length;i++) // 初始化对象数组
{
person[i] = new Person();
//第一个问题,三目运算符后面的两个参数不能是赋值语句,必须是基本数据类型
String str = i%2 == 0? "www":"http";
person[i].name = str;
//第二个问题,不知道是不是要实现交替赋值的效果
// if(i%2==0)
// {
//
// person[i].name = "www";
//
// }
// else
// {
// person[i].name = "http";
// }
}
for(int i=0;i<person.length;i++) //遍历对象数组输出每个对象的name属性
{
System.out.println(person[i].name);
}
}}
class Person
{
String name ;
}
第二题,代码稍微奇葩了一点。new Person2[100]并不是创建了一个数组里面有100个Person2对象,而是100个NULL.只不过内存大小是按照Person2开辟的。你怎么可以为NULL.name赋值呢?
另外,你这个for循环,问题很大,数组总共length是100,当i=100的时候,j是多大了呢?亲。
这样试下。
从代码上看person3[i] .name = i%2 == 0?"www":"heep"比i%2 == 0?person3[i].name = "www":person3[i].name = "http" 优雅很多,即使支持后者的写法也优先使用前者,因为后者完全是if else 的概念所以应该选用if else
第二题明显的数值空指针啊,就是越界了啊,你是0-99循环100次,当i=100的时候,p[j]等几个值你算过是多少了么?远远大于100个对象了。
第二道题,好比楼主声明要建100层楼,刚建好第一层,就想住第三层,能不空?而且楼主还撕毁声明,企图入住超过100以上的楼层。这个题,即使破天荒没发生空指针异常,接下来也是数组越界异常。