学海无涯,长路漫漫,有你相伴,便不会孤单
本人也正在Java的路上航行,整理的一点点笔记愿与诸君分享!
主要对一下几个问题做一下浅显的解答
1.对象与对象引用的区别是什么?
假如有个plane类,plane p1=new plane();
这里包括了三个操作:plane p1,声明一个对象,当声明被赋予特定的对象后,声明就变成了引用,产生一个对象引用变量p1;new plane(),根据plane类属性模板产生一个对象;“=”,使得对象引用变量p1指向刚刚产生的对象。
两者的区别就在于:
(1)对象引用指向该对象,改变引用的属性,对象的属性也会改变
(2)从内存空间上看,两者是独立的,对象储存在堆上,而引用储存在栈上
(3)同一个对象可以被多个引用所指向
2.对象作为参数传递的特点是什么?
一个方法中的参数可以是基本数据类型,也可以为一个对象;基本数据类型作参数时是值传递,传的是值,而对象作参数是引用传递,传的是对象的地址。
3.对象初始化顺序是怎么样的?
先用new产生对象,为对象分配内存空间后,系统自动调用类的构造方法实现对对象的初始化,然后赋值给引用。
例如:
对于*号所指的一行,IntClass = new IntClass(10};首先执行new部分,产生一个intclass对象并分配空间,然后自动调用其构造方法,为其value赋初值,最后赋值给引用s,完成初始化。
4.类的static字段和非static字段的区别是什么?
(1).用static修饰符修饰的域变量不属于任何一个类的具体对象,而专属于类,表示静态属性,保存在类的公共存储单元中,而不在某一对象的存储空间中。静态属性仅在类加载时初始化且只初始化一次
(2).static也可以修饰一段代码,为静态代码块,和静态变量的特点相同
5.Java中final修饰符都有什么作用?
final可以有三种用法:
1.修饰类属性:表示该属性为常量
2.修饰方法:则该方法为最终方法,不能被子类覆盖
3.修饰类:则该类不能被继承
6.java中float【10】arr;语句正确么?
不正确;数组的声明格式为: 类型标识符【】数组名 或者 类型标识符 数组名【】。
声明不会分配内存空间,所以中括号里面不能有数字。如果是初始化,则需要加上数组长度。
数组初始化格式:类型标识符【】数组名=new 类型标识符【数组长度】 例如:float【】arr=new float【10】;
7.Java数组元素类型为基本数据类型和引用类型时,有什么不同?
如下图:
区别:
基本数据类型在被创建时,在栈上给其划分内存空间,将数值直接存储在栈上;
引用数据类型在被创建时,首先要在栈上给其引用分配内存空间,而对象的具体信息都存储在堆内存上,然后由栈上面的引用指向堆中对象的地址。