作用范围 数据的作用范围也是全局变量 和两类的局部变量,测试一下
类变量:独立于方法之外的变量,用 static 修饰。
实例变量:独立于方法之外的变量,不过没有 static 修饰。
局部变量:类的方法中的变量。
没有全局变量的定义,但是可以自己组合出来,其他关键字对作用的范围影响是
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);
}
}
那么稍微不同的是,对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语句时,要特别注意这些规则。
类有若干种访问级别,并且类也分不同的类型:抽象类和final类等。这些将在访问控制章节介绍。
除了上面提到的几种类型,Java还有一些特殊的类,如:内部类、匿名类。
来源: http://www.runoob.com/java/java-object-classes.html