java为什么不能声明变量?java声明变量,可以不指定其数据类型,可以吗
大家好,今天给各位分享java为什么不能声明变量的一些知识,其中也会对java声明变量,可以不指定其数据类型,可以吗进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!
java中全局变量为什么不能先声明再赋值
//堆内存只保存信息栈内存用来保存方法.这样分配可以提高内存是使用效率
classA{
publicinta;//类信息保存在堆内存
a=1;//错执行语句保存在栈内存堆内存中不能保存
{age=1;}//可以执行语句保存在栈内存代码块相当于方法
Aa=newA();//可以保存信息
a.sayAge();//错执行语句
System.out.println(a);//错执行语句
publicvoidsayAge(){
System.out.println(a);//可以在栈内存中
}
}
java 在if块内不能声明变量
这个很典型的作用域问题,if后如果省略{},那么if只作用于其后面的第一行代码
这时候如果这行代码只是个变量声明语句的话,这个变量是没有其他任何逻辑可以访问到的,因为作用域问题(如果有{},那么声明语句中声明的变量只在这个{}内可用),由于省略了{},作用域有且只有1行,这行代码声明的变量谁也没法访问,这条声明语句就是个废语句,是无效的声明语句,java语法中严禁出现废语句的,所有废语句都会变成编译错误,不允许出现
类似的比如
publicStringgetName(){
Stringname="mike";
returnname;
name="jack";//这条也是废语句,永远不可能被执行到,也会编译不通过
}
声明了变量但在后续的代码里从不用它,语法是允许的,但是声明一个根本没法用的变量就不允许了
java声明变量,可以不指定其数据类型,可以吗
可以不指定具体的数据类型,定义的时候用Object。
举例:
Objectobj1=1;//定义一个整型
Objectobj2="2323";//定义一个字符串
补充:
Object类是类层次结构的根,Java中所有的类从根本上都继承自这个类。
Object类是Java中唯一没有父类的类。
其他所有的类,包括标准容器类,比如数组,都继承了Object类中的方法。
所以用Object能够表示所有的类型。
浅谈为什么Java接口中不允许定义变量
接口就是提供一种统一的“协议”,而接口中的属性也属于“协议”中的成员。它们是公共的,静态的,最终的常量。相当于全局常量。抽象类是不“完全”的类,相当于是接口和具体类的一个中间层。即满足接口的抽象,也满足具体的实现。如果接口可以定义变量,但是接口中的方法又都是抽象的,在接口中无法通过行为来修改属性。有的人会说了,没有关系,可以通过实现接口的对象的行为来修改接口中的属性。这当然没有问题,但是考虑这样的情况。如果接口 A中有一个public访问权限的静态变量 a.按照 Java的语义,我们可以不通过实现接口的对象来访问变量 a,通过 A.a= xxx;就可以改变接口中的变量 a的值了。正如抽象类中是可以这样做的,那么实现接口 A的所有对象也都会自动拥有这一改变后的 a的值了,也就是说一个地方改变了 a,所有这些对象中 a的值也都跟着变了。这和抽象类有什么区别呢,怎么体现接口更高的抽象级别呢,怎么体现接口提供的统一的协议呢,那还要接口这种抽象来做什么呢?所以接口中不能出现变量,如果有变量,就和接口提供的统一的抽象这种思想是抵触的。所以接口中的属性必然是常量,只能读不能改,这样才能为实现接口的对象提供一个统一的属性。通俗的讲,你认为是要变化的东西,就放在你自己的实现中,不能放在接口中去,接口只是对一类事物的属性和行为更高层次的抽象。对修改关闭,对扩展(不同的实现 implements)开放,接口是对开闭原则的一种体现。(note)虽然在接口里定义变量不会有错。但原则上不能这样做,不然违反接口本意。例子: interface ManagerDAO{int a=8;int b=9;}public class ManagerDBImpl implements ManagerDAO{} public static void main(String[] args){ ManagerDBImpl dbimpl=new ManagerDBImpl(); dbimpl.a=90; System.out.println(dbimpl.a); System.out.println(dbimpl.b);} dbimp1.a=90;行会显示如下错误:(Multiple markers at this line- The final field ManagerDAO.a cannot beassigned)这说明在接口里定义的变量是静态 final变量。
文章分享结束,java为什么不能声明变量和java声明变量,可以不指定其数据类型,可以吗的答案你都知道了吗?欢迎再次光临本站哦!