外部类,内部类,匿名类,外部类就是两个类并列的class
沽源网站建设公司成都创新互联,沽源网站设计制作,有大型网站制作公司丰富经验。已为沽源千余家提供企业网站建设服务。企业网站搭建\外贸网站制作要多少钱,请找那个售后服务好的沽源做网站的公司定做!
A
{}
class
B
{},内部类:class
A
{
class
B
{}},B可以直接使用包涵它的类的成员变量,内部类不能被除包涵类以外的类调用;还有就是匿名类,也是内部类
classA{new
{}}省略定义类名直接定义方法和使用,这个适用于代码比较简单且这个类不需要被其他类调用
首先,你要知道,变量i是局部变量,j是静态的全局变量。
其次,你要明白,在Java中,基本类型的参数,如int、float、char等,都是按值传递的,而对象,如String等是按引用传递,跟C++里面的按地址传递类似。
最后解释:在amethod()方法中,你传递了参数i,并在方法内部分别为i和j的值乘以2,然而,在方法体内部,i的确是编程了20,j也变成了40.
但是,出了该方法体,当回到main方法时,i的值是没有改变的,因为刚刚是按值传递的,在main中i的值依旧是10,而j因为是静态变量,自然对它的作用是有效的。
所以,最后的结果就如你所见了。
最后,推荐一个Java基础群:84994654
因为你使用system.out.println这个方法输出个对象的时候,因为只能输出字符串,所以系统就会默认调用类中的toStringf方法,因为这个方法是源自object类的,所以几乎所有的类都有这个方法。而你的代码重写了这个方法,所以输出的时候就调用了这个方法,然后按你的规则进行了输出。
比如
public class Test{
public Test(){}
public void toString(){
System.out.println("----test------");
}
//假设:Test test=new Test();
// System.out.println(test);
//输出的结果就是"----test------"
}
public class Demo {
public static void main(String[] args) throws IOException {
String cmd = "notepad.exe";//要打开的外部程序路径
Runtime runtime = Runtime.getRuntime();
Process p = runtime.exec(cmd);
}
}
以上为核心代码,自己可以把路径从外部传入,再打成一个可执行文件。
private int x=3;
int a;
static class Inner
{
int x = 4;
public void function() {
int x = 6;
System.out.println(x);
System.out.println(this.x);
// System.out.println(Outer.this.x);//内部类可以直接访问外部类中的成员,包括私有。(访问私有)
// method();//内部类可以直接访问外部类中的成员,包括私有。(该访问成员)
}
}
public static void main(String[] args){
new Inner().function();
}
只能这样做,把内部类改成 静态的 直接new一个类 调方法
%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%
这个import就是