Java变量声明的区别
如下:在一个类里面声明如下三个成员变量:privateinta=10;staticintb=11;privatestaticintc=12;现在我想请教各位大侠变量a、b...
如下:
在一个类里面声明如下三个成员变量:
private int a=10;
static int b=11;
private static int c=12;
现在我想请教各位大侠变量a、b、c之间的区别?最好谈谈实际运用中a、b、c之间的细微差别,比如在什么情况下可以引用a而不能引用b。 展开
在一个类里面声明如下三个成员变量:
private int a=10;
static int b=11;
private static int c=12;
现在我想请教各位大侠变量a、b、c之间的区别?最好谈谈实际运用中a、b、c之间的细微差别,比如在什么情况下可以引用a而不能引用b。 展开
4个回答
展开全部
a:这个类中的非静态方法才可以引用,而作用范围只限于这个类的生命周期(从类被实例化到类被回收)。
b:这个类所在的包中所有类的所有方法都可以引用,作用范围从整个应用程序开始到结束。
c:只有这个类的方法可以引用,作用范围也是整个应用程序。
其中a和c的区别在于作用范围,变量c(静态变量)是与对象无关的。在一个对象中改变c的值,其他对象中c的值也会跟着改变。。
b和c的区别在于访问权限。变量c只有这个类的方法可以引用,而变量b是包访问权限,与类在同一包下的所有其他类都可以通过类名.b引用。
b:这个类所在的包中所有类的所有方法都可以引用,作用范围从整个应用程序开始到结束。
c:只有这个类的方法可以引用,作用范围也是整个应用程序。
其中a和c的区别在于作用范围,变量c(静态变量)是与对象无关的。在一个对象中改变c的值,其他对象中c的值也会跟着改变。。
b和c的区别在于访问权限。变量c只有这个类的方法可以引用,而变量b是包访问权限,与类在同一包下的所有其他类都可以通过类名.b引用。
展开全部
首先是有static和没有static的区别
这两个区别最明显不过了,有static的就是类所有的,并不是对象所有的,如果你有面向对象的概念那这个应该是很清楚的,没有static的,每创建一个对象a都会创建一个副本给这个对象独占,如果有static的变量就是类所有的,也就是所有对象共享的
有private和没有private的区别,这个不算什么区别,类似private public protected都是访问权限,如果没有指明访问权限那么默认是包权限,不懂权限的看书去,书上有说明
这两个区别最明显不过了,有static的就是类所有的,并不是对象所有的,如果你有面向对象的概念那这个应该是很清楚的,没有static的,每创建一个对象a都会创建一个副本给这个对象独占,如果有static的变量就是类所有的,也就是所有对象共享的
有private和没有private的区别,这个不算什么区别,类似private public protected都是访问权限,如果没有指明访问权限那么默认是包权限,不懂权限的看书去,书上有说明
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
声明变量的形式主要是:
第一种:声明后直接赋值。
String str = new String("asd");这个就是先创建了一个字符串类型,之后声明str的类型为字符串并进行赋值“asd”。
第二种:声明变量但不定义具体的参数。
BufferedReader bre = null;这个就是先定义了流的读取对象,但是没有进行赋值,后续进行赋值。
备注:以上两种方法中第二种更灵活一些,因为在实际java开发过程中通常程序的运行过程报错与否无法知道,先定义好,之后在进行重新赋值,可以有效的避免方法参数无法在方法外面获取到的情况。
第一种:声明后直接赋值。
String str = new String("asd");这个就是先创建了一个字符串类型,之后声明str的类型为字符串并进行赋值“asd”。
第二种:声明变量但不定义具体的参数。
BufferedReader bre = null;这个就是先定义了流的读取对象,但是没有进行赋值,后续进行赋值。
备注:以上两种方法中第二种更灵活一些,因为在实际java开发过程中通常程序的运行过程报错与否无法知道,先定义好,之后在进行重新赋值,可以有效的避免方法参数无法在方法外面获取到的情况。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一个变量(从上到下)a 定义为私有的非静态的 int类型, 说明要使用这个属性,必须创建该类对象 然后用这个类对象的引用去调用a 或者给这个变量a公有的get set方法 这样用引用调方法是比较规范的例如
class Test{
private int a = 10;
public int getA(){
return a;
}
public void setA(int a){
this.a = a;
}
public static void main(String[] s){
Test t = new Test();
t.setA(5);
System.out.println(t.getA());
}
}
也就是说 如果声明私有 外部类想调用这个属性必须 实例化Test类对象,然后用对象引用点方法才可以 本类中可以直接调用 但是必须在非静态方法中,比如main函数 他是静态方法所以无法直接调用a
第二个 static int b 说明这个属性是默认 就是比private高一级 是个静态变量,所以在静态方法或者非静态方法中可以直接this.b 或者直接 b=**
第三个 声明为私有的静态的 道理一样 是否加private无非是对访问权限的注释而已 从宽限到窄限 public protected 默认就是不做任何声明 private 这四种你可以直接在网上看下四种声明的 权限控制 我就不一一复制了
class Test{
private int a = 10;
public int getA(){
return a;
}
public void setA(int a){
this.a = a;
}
public static void main(String[] s){
Test t = new Test();
t.setA(5);
System.out.println(t.getA());
}
}
也就是说 如果声明私有 外部类想调用这个属性必须 实例化Test类对象,然后用对象引用点方法才可以 本类中可以直接调用 但是必须在非静态方法中,比如main函数 他是静态方法所以无法直接调用a
第二个 static int b 说明这个属性是默认 就是比private高一级 是个静态变量,所以在静态方法或者非静态方法中可以直接this.b 或者直接 b=**
第三个 声明为私有的静态的 道理一样 是否加private无非是对访问权限的注释而已 从宽限到窄限 public protected 默认就是不做任何声明 private 这四种你可以直接在网上看下四种声明的 权限控制 我就不一一复制了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询