1.今天在面试的时候遇到一个程序题,代码如下:
public class test2
{
public static void main(String[] args)
{
int[] arr=new int[5];
//给数组成员赋值
arr[0]=2;
arr[3]=5;
for (int i = 0; i < arr.length; i++)
{
//依次输出每个数组成员的值
System.out.println("show:"+arr[i]);
}
}
}
输出结果如下:
show:2
show:0
show:0
show:5
show:0
你会发现,没有赋值的成员,输出的结果默认值是:0;
原因:因为int是java的基本数据类型,它的默认值是0;
扩展:
8中基本数据类型的默认值:
①byte short int long 这四种基本数据类型数组默认值为0
②float double 这两种数组默认值是0.0
③char这种类型数组默认值为空格
④boolean类型数组默认值为false
2.当定义的数组类型是Integer时,输出结果又是什么?
代码如下:
public class test2
{
public static void main(String[] args)
{
//int[] arr=new int[5];
Integer[] arr=new Integer[5];
//给数组成员赋值
arr[0]=2;
arr[3]=5;
for (int i = 0; i < arr.length; i++)
{
//依次输出每个数组成员的值
System.out.println("show:"+arr[i]);
}
}
}
输出结果:
show:2
show:null
show:null
show:5
show:null
这里没有赋值的输出是null,这又是位什么呢?
原因:因为Integer类不是基本的数据类型,默认值不是0,是null;
扩展:java基本数据类型的默认值为0,引用数据类型的默认值为null;引用数据类型主要包括三种:类Class,接口Interface,数组;
类Class引用
可以是我们创建的,这里我不多讲,主要是讲解几个java库中的类
Object :Object是一个很重要的类,Object是类层次结构的根类,每个类都使用Object作为超类,所有对象(包括数
组)都实现这个类的方法。用Object可以定义所有的类
如:
Object object= new Integer(1); 来定义一个Interger类
Integer i=(Integer) object; 在来把这个Object强制转换成Interger类
String :String类代表字符串,Java 程序中的所有字符串字面值(如"abc")都作为此类的实例来实现。检查序列的单
个字符、比较字符串、搜索字符串、提取子字符串、创建字符串副本、在该副本中、所有的字符都被转换为 大 写或小写形式。
Date :Date表示特定的瞬间,精确到毫秒。Date的类一般现在都被Calendar 和GregorianCalendar所有代替
Void :Void 类是一个不可实例化的占位符类,它保持一个对代表 Java 关键字 void 的 Class 对象的引用。
同时也有对应的Class如:Integer Long Boolean Byte Character Double Float Short这些基本数据类型的封装类;
.3.String类型的数组输出?
代码如下:
public class test2
{
public static void main(String[] args)
{
String[] arr=new String[5];
//给数组成员赋值
arr[0]="haha";
arr[3]="java";
for (int i = 0; i < arr.length; i++)
{
//依次输出每个数组成员的值
System.out.println("show:"+arr[i]);
}
}
}
show:haha
show:null
show:null
show:java
show:null