当前位置: 技术问答>java相关
我在学习java时遇到的几个问题,望大家解答
来源: 互联网 发布时间:2015-05-06
本文导语: 一、 关于static 有一例子,如下 import java.io.*; public class StaticMethodSample{ int x;//非static类型 static void staticMethod(){ System.out.println(x); } } 书上说编译不通过,因为static 类型的method只能使...
一、
关于static
有一例子,如下
import java.io.*;
public class StaticMethodSample{
int x;//非static类型
static void staticMethod(){
System.out.println(x);
}
}
书上说编译不通过,因为static 类型的method只能使用和存取同为static 类型的数据成员,如果把上面的x定义成static int x就可以了。
在同一章节书上还有一个例子,如下:
//存储文件名为CallbyWhatSample.java
import java.io.*;
class SampleClass{
public int DM=1000;
}
public class CallByWhatSample{
public static void ChangePara(int x,SampleClass y){
y.DM=2000;
x=1999;
}
public static void main(String args[]){
int x=0;
SampleClass y=new SampleClass();
System.out.println("x:"+x+",y"+y.DM);
ChangePara(x,y);
System.out,println("x:"+x+".y"+y.DM);
}
}
让我不明白的是, ChangePara也是static类型,不是用到了非static类型x吗?
main也是static类型,不是也用到了x吗?程序还是可以执行的!
二、问题2
在上一个问题中的第二个程序,一个文件里有两个class,这两个class虽然在一个文件里,但是不是与在同一个package里的分别在两个文件里的class关系一样?
三、问题三
class1是另一各 package中class2的子类,问class1是否可以使用class2中的protected类型的数据和method?
关于static
有一例子,如下
import java.io.*;
public class StaticMethodSample{
int x;//非static类型
static void staticMethod(){
System.out.println(x);
}
}
书上说编译不通过,因为static 类型的method只能使用和存取同为static 类型的数据成员,如果把上面的x定义成static int x就可以了。
在同一章节书上还有一个例子,如下:
//存储文件名为CallbyWhatSample.java
import java.io.*;
class SampleClass{
public int DM=1000;
}
public class CallByWhatSample{
public static void ChangePara(int x,SampleClass y){
y.DM=2000;
x=1999;
}
public static void main(String args[]){
int x=0;
SampleClass y=new SampleClass();
System.out.println("x:"+x+",y"+y.DM);
ChangePara(x,y);
System.out,println("x:"+x+".y"+y.DM);
}
}
让我不明白的是, ChangePara也是static类型,不是用到了非static类型x吗?
main也是static类型,不是也用到了x吗?程序还是可以执行的!
二、问题2
在上一个问题中的第二个程序,一个文件里有两个class,这两个class虽然在一个文件里,但是不是与在同一个package里的分别在两个文件里的class关系一样?
三、问题三
class1是另一各 package中class2的子类,问class1是否可以使用class2中的protected类型的数据和method?
|
一, x不是非static类型的
引用你的话:
为static 类型的method只能使用和存取同为static 类型的数据成员
指的是,ChangePara那个x只是局部变量
二、是同一package的
三、可以
引用你的话:
为static 类型的method只能使用和存取同为static 类型的数据成员
指的是,ChangePara那个x只是局部变量
二、是同一package的
三、可以
|
一、用static定义的方法只能引用类变量(static),不能引用对象变量。
在你的程序里的main和ChangePara的方法用的是局部变量,main的x是局部的而ChangePara内的参数是传进来的,而实参是不变的。
二、是的。
三、子类是由父类派生的能够引用父的protected。
在你的程序里的main和ChangePara的方法用的是局部变量,main的x是局部的而ChangePara内的参数是传进来的,而实参是不变的。
二、是的。
三、子类是由父类派生的能够引用父的protected。
|
1.main中的x是方法内的变量,可以用
3.class1是另一各 package中class2的子类,class1可以使用class2中的protected类型的数据和method
3.class1是另一各 package中class2的子类,class1可以使用class2中的protected类型的数据和method
|
千万注意区别“方法变量”和“方法参数”——静态方法只能使用同为静态的变量,注意这个变量是方法“定义”时使用的,是成员变量;而方法参数则是在方法被“调用”(使用)时,传递给方法的! :) 一个是定义,一个是使用!OK?
其他同意楼上!
其他同意楼上!
|
同意楼上
|
留着待看