重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
首先,看一下为什么要用构造器?
创新互联是一家专业提供大田企业网站建设,专注与网站制作、做网站、H5开发、小程序制作等业务。10年已为大田众多企业、政府机构等服务。创新互联专业网站设计公司优惠进行中。
1、Java类的成员变量在被修饰为public、protected和包访问权限时,可以在不同层次上直接给成员变量赋值。
但是,赋值的前提是:必须存在持有成员变量的对象。而对象的初始化必须调用构造函数,所以构造函数是必不可缺的。
至于使用构造函数还是直接声明时给成员变量赋值,那就要看情况而定。
如果创建的这个对象是不可变的,那么就必须使用构造函数初始化成员变量,反之,就无所谓。
另外,直接给成员变量赋值,Java是不推荐的,因为这样会破坏它的封装性。所以,建议在构造函数或提供setters方法对变量赋值。
2、成员变量的赋值一般通过构造函数;直接赋值一般的话都是一些常成员变量,final关键字开头的。
3、其他的时候基本上都是用构造函数构造函数试用于动态创建对象。基于对象编程的思想,是不赞成直接给类里面的变量直接赋值的。
类变量、实例变量的初始化比较相似,对于实例变量有一个例子
public class RAMTest {
{
price = 3.4;//①--非静态语句块
}
public RAMTest(double price) {
this.price = price;//②--构造函数
}
double price = 2.0;//③--声明语句并赋值
}
本例中对实例变量price的初始化有三处
执行顺序为:③中price变量声明[price=0.0]
--①中price变量赋值[price=3.4]
--③中price变量赋值[price=2.0]
--②中price构造函数赋值
需要注意的是,虽然非静态语句初始块中的price变量的赋值在声明之前,但实际上执行的时候会先执行变量的声明,再按代码顺序执行变量值的赋值动作,然后再进行构造函数对实例的初始化构造。
这三种实例变量的初始化语句经过编译器处理后,都会合并到构造器中去,其中定义变量语句转换得到的赋值语句、初始化块中的语句转化得到的赋值语句,总是位于构造器的所有语句之前。合并后两种赋值语句的顺序保持他们在源码中的顺序。
java代码如下: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class IoDemo { public static void main(String[] args) throws IOException { BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(System.in)); System.out.println("请输入:"); String str = bufferedReader.readLine(); System.out.println("输入的内容是:" + str); } }
int[] a = new int[100];
int[] b = {-1,0,1};
for(int i =0; i a.length; i++){
int index = new Random().nextInt(b.length);
a[i] = b[index];
}