1、数组是对象吗?
是。
byte[] bs = new byte[in.available()];
int[] numm ={1,2};
前面这两个都可以用tostring方法 所以是对象。但是输出可能是乱码。
数组是对象,int float char这些基本类型不是对象。关于如何判断基本类型和对象,参考下面的:
行为:
基本类型只是一个值,没有任何行为
对象类型有自己的行为
内存分配:
基本类型在栈内分配
对象在堆内分配
对象引用保存在栈内
引用与值:
基本类型是值类型,仅表示一个值,保存在栈内
引用类型分两部分,对象引用保存在栈内,对象保存在堆内,
访问变量,是使用的引用找对象
------------------------------
综上,数组是引用类型,创建的是对象,如:int[] a = new int[5];则说明a是int型数组对象。其实“一切皆对象”。
尝试了这几行代码 足以证明数组就是对象。
int[] numm ={5,1,2};
int[] a = new int[2];
int num =1;
// String str = bs.toString();
String str = numm.toString();
System.out.println(numm.getClass().getName());
System.out.println(str);
System.out.println(numm);//这里输出是个乱码!
Arrays.sort(numm);//进行排序
System.out.println(Arrays.toString(numm));//按数组的形式输出来~
System.out.println(numm instanceof Object);
//object instanceof class 返回布尔值 代表是否为这类的对象
但是输出的内容就有点奇怪。
[B 这个是classname输出
[B@15db9742 这个直接println数组 其实是getClass().getName() + '@' + Integer.toHexString(hashCode()) 后面意思是对象哈希码的无符号十六进制
下面这个int数组输出来的,原理和上面一样!
[I
[I@15db9742
所以数组不要直接输出 要遍历 或者转化一下先,通过Arrays.toString(numm)进行转化,就能正确的输出啦!
2、关于堆和栈的区别:有待更新!
http://blog.csdn.net/wjw0130/article/details/39105985
2、byte和Byte区别
前者是基本数据类型 后者是类 但注意 签名byte数组也可以用 new byte这种写法 比较少见而已 但确实是个对象
3、system.out.println
这个是system类的静态变量out out是printStream对象 所以直接调用方法println. 注意这个方法入参是object 所以其实内部是先把对象转换为string 然后再输出的!(输出其实是调用print方法) 如果是null 所以就会直接输出null 下面是源码!
4、println与print区别
println打印的时候自带了换行,下一次在打印的时候从下一行开始打印。
print不换行,下次打印的时候在这次打印的东西后面直接打印。