java中关于包、类和方法有几个问题不懂,请高手指点下
这是我写的一段代码,package对应的是包名,class对应的是类名,那main方法中写的那些东西算是什么呢,有没有一个具体的名称来描述,比如for循环,当初学的时候成为流程控制,但是我觉得这个名很怪,方法中的那些代码总不能称为语句块吧,虽然现在我就是这么用的
我在学习中,通过实验的出了如下结论,但是书上找不到总结,请问正确吗
1、非静态类中不能使用静态方法
2、静态类中可以使用非静态方法
3、静态方法可以直接调用静态类中的方法
4、静态方法不能直接调用非静态类中的方法
如何区分是不是静态类\方法,仅仅从static判断吗,如果没有static,是否说明一定是非静态类\方法
请高手指点下迷津
package study;
public class Q01 {
public static void main(String[] args) {
// TODO Auto-generated method stub
char []a = new char[] {'a','b','c'};
char []x = new char[] {'x','y','z'};
for (int i = 0;i<3;i++){
for(char ch : x){
if(!(a[i] == 'a'&& ch =='x'||a[i]=='c'&& (ch == 'x'|| ch == 'z'))){
{System.out.println("比赛组合为a队"+a[i]+"对x队"+ch);}
}
}
}
}
}
static 就是静态关键字,有就是静态,没有肯定不是静态(即非静态)。
关于总结的1和2来说,在同类中,所有的方法都可以直接调用静态方法。但是静态方法不能直接调用非静态方法,必须new对象之后才可以通过对象名.方法名来调用。
在非同类中,我的静态方法(public 的),任何非同类都可以直接类名.方法名来调用,不需要new我的对象。所以,不管我的类是不是静态的,我都可以使用静态和非静态方法。
方法中的内容为方法实现。就和main方法里面的一样,你想让方法体里面实现什么都是可以的。实际上你可以在一个方法里面把你这一个类的实现都写出来。当然这个是不推荐的。拆分出方法主要是为了一个方法(method)只用来做一件事。拆分出类(class)是为了一个类做一类事。比如Math类。里面大部分都是静态的,我们平时使用都是Math.method();Math就是用来处理数学这一方面的事情的。
还有就是类里面的属性。属性是抽象出来的这个类所描述的东西共有的一些概念。比如我定义一个Human(人类)的类,那么我就可以定义两个属性,name,age,因为姓名和年龄是所有人类都有的一个概念。这个就是属性。
来说一说类里面的变量。变量分为成员变量和局部变量。定义在方法外层,类里层的变量称之为成员变量,定义在方法内部的变量为局部变量。局部变量里面的变量名称是可以和成员变量一致的。但是同一个类的成员变量里面不能有重复的变量名称,同一个方法内的局部变量也一样。如果局部变量和成员变量一致,那么方法调用就是调用的局部变量,如果不一致,方法调用的是对应的局部变量或成员变量。例如
public class Human{
private int age;//成员变量
public int getAge(){
return age;//此处为成员变量;
}
public int getAge1(){
int age=1;//定义一个局部变量
return age;//这个地方返回的是局部变量
}
public int getAge2(){
int age=1;//定义一个局部变量
return this.age;//此处返回的是成员变量。this代表我这个类。
}
}
希望以上能对你有帮助
main里面写的是函数的实现代码
如何判断,从static判断,有就是,没有就不是
1、非静态类中不能使用静态方法 可以使用,用类名.方法名
2、静态类中可以使用非静态方法 可以使用,但是要new 实例化对象,用对象名.方法名
3、静态方法可以直接调用静态类中的方法 直接调用
4、静态方法不能直接调用非静态类中的方法 对
静态的变量属于类,不为对象私有,所以在静态定义下不能出现this或者super之类的关键字,隐含的也不可以。用这个判断就不会太混了。既然静态都为类所有了那么类中各处也就均可调用了。
首先,所有使用static修饰的代码都是静态代码。静态的代码块优先加载到内存,两个静态代码之间按程序执行顺序加载。
当用于修饰方法,方法叫静态方法,也叫类方法;用于修饰变量,叫静态变量,也叫类变量。
你的疑惑是不清楚static的作用。它的的作用就是在最先加载到内存。也就是说,因此,你不能够在static修饰的方法中调用非静态的方法,
因为这个方法根本还没有加载。
static 有就是,没有就不是