Java-第三章 关键字与作用范围

作用范围 数据的作用范围也是全局变量 和两类的局部变量,测试一下

类变量:独立于方法之外的变量,用 static 修饰。

实例变量:独立于方法之外的变量,不过没有 static 修饰。

局部变量:类的方法中的变量。

没有全局变量的定义,但是可以自己组合出来,其他关键字对作用的范围影响是

Java-第三章 关键字与作用范围_第1张图片

public: Java语言中访问限制最宽的修饰符,"公共的"其修饰的类、属性以及方法不
     仅可以跨类访问,而且允许跨包(package)访问。
private: Java语言中对访问权限限制的最窄的修饰符,“私有的”其修饰的类、属性以
     及方法只能被该类的对象访问,其子类不能访问,更不能允许跨包访问。
protect: 介于public 和 private 之间的一种访问修饰符,一般称之为“保护形”。被其修饰的类、
     属性以及方法只能被类本身的方法及子类访问,即使子类在不同的包中也可以访问。
default(friendly):即不加任何访问修饰符,通常称为“默认访问模式“。该模式下,只允许在同一个包中进行访
     问。

 

package:

Java引入包(package)机制,提供了类的多层命名空间,用于解决类的命名冲突、类文件管理等问题。
Java允许将一组功能相关的类放在同一个package下,从而组成逻辑上的类库单元。如果希望把一个类放在指定的包结构下,我应该在Java源程序的第一个非注释行放置如下格式的代码:
package packagename;

class mainclass {
    static int mainint=0;    // 静态类变量
    String mainstr="hello world";  // 实例变量
    public String publicmainstr="hello world";  // 公共实例变量
    
    public void method(){   //同类的非静态函数
        int i =0;  // 局部变量
        System.out.println(mainstr);
    }
    
    //Main method is not static in class mainclass, please define the main method as:  public static void main(String[] args)
    public static void main(String[] args) {
        
        //第一发输出 静态main访问自己的静态变量
        System.out.println(mainint);
        
        //System.out.println(publicmainstr); //非静态变量publicmainstr无法从静态main中调用
        //System.out.println(mainstr); //非静态变量mainstr无法从静态main中调用
        //method();  //非静态方法method()无法从静态main中调用
        
        //第二发输出 静态函数可以直接访问 也可以实例化访问
        test tt = new test();
        int b = tt.add(10);
        b = tt.sub(b);   //实例化的可以调用
        b = test.sub(b); //其他类的静态函数可以直接调用
        System.out.println(b);
        
        
        //第三发输出 静态变量也是均可访问 并且是共用一个的
        System.out.println(test.testint);  //其他类的静态变量可以直接嗲用
        test.testint = 777;
        System.out.println(tt.testint);  //并且会影响到实例化的 解释:所有的该类共用一个变量
        
        
        //第四发输出 类内部变量的访问
        //System.out.println(test.teststr); //无法直接调用类的内部变量 不是静态的
        System.out.println(tt.teststr);  //实例化访问内部变量是可以的
        //System.out.println(tt.privateteststr);  //独有变量甚至无法从实例化的访问
        tt.privateaccess();  //独有的只能从类中自己访问 外部无法直接访问
    }
}

//如果是public的 class test is public, should be declared in a file named Pig.java
class test {
    static int testint=666;    // 静态类变量
    String teststr="aaaaaa";  // 实例变量
    private String privateteststr="bbbbb";  // 独占实例变量
    
    public int add(int in)  //公共函数
    {
       return in+1;
    }
    
    public static int sub(int in)  //静态公共函数
    {
       return in-5;
    }
    void privateaccess()  //默认访问的函数
    {
        System.out.println(privateteststr); 
    }
}

Java-第三章 关键字与作用范围_第2张图片

那么稍微不同的是,对main的static要求限制了中对自身变量和函数的访,理由均是由静态main访问非静态变量或函数。

注意跨类的访问,注意公共 静态(尤其是静态变量和函数的) 私有等的区别就可以

main函数的规则:

main方法也是特殊的,因为它的类型必须是public static void,甚至名字都必须是main,还有括号内的参数String[] args,很多初学者都不知道它的作用。正是这种简单而特殊的性质,往往容易让人对它产生忽视以及疑惑。下面就详细谈谈java main方法:

public是一种访问权限修饰符,public中文翻译共有,正如它的实际意思一样,在Java里面所有被public修饰的方法,类等都可以在任意其他地方调用。main方法之所以是public,是因为一个Java程序在运行时首先创建一个JVM实例,程序要运行需要调用main方法,JVM从外部调用main方法这就需要访问权限修饰符必须给出外部访问的权限,所以只能用public。

static的定义是为了JVM在调用main方法时不用实例化对象,只需要在初始时加载main方法所在类,然后直接通过类名.main来调用main方法。

void表示main方法没有返回值,没有返回值的原因是因为Java不需要main方法向操作系统返回退出信息。如果main方法正常退出,那么Java应用层序的退出代码为0,表示成功的运行了程序。

来源: https://blog.csdn.net/zdb292034/article/details/80713379

 

源文件声明规则

在本节的最后部分,我们将学习源文件的声明规则。当在一个源文件中定义多个类,并且还有import语句和package语句时,要特别注意这些规则。

  • 一个源文件中只能有一个public类
  • 一个源文件可以有多个非public类
  • 源文件的名称应该和public类的类名保持一致。例如:源文件中public类的类名是Employee,那么源文件应该命名为Employee.java。
  • 如果一个类定义在某个包中,那么package语句应该在源文件的首行。
  • 如果源文件包含import语句,那么应该放在package语句和类定义之间。如果没有package语句,那么import语句应该在源文件中最前面。
  • import语句和package语句对源文件中定义的所有类都有效。在同一源文件中,不能给不同的类不同的包声明。

类有若干种访问级别,并且类也分不同的类型:抽象类和final类等。这些将在访问控制章节介绍。

除了上面提到的几种类型,Java还有一些特殊的类,如:内部类、匿名类。

来源: http://www.runoob.com/java/java-object-classes.html

 

 

你可能感兴趣的:(编程语言,理论知识,JAVA,编程语言)