内部类访问外部类的变量必须是final吗? 如下: package com.java.concurrent; class A { int i = 3; public void shout() { class B { public void shout1() { System.out.println(i); } } B b = new B(); b.shout1(); } public static void main(String[] args) { A a = new A(); a.shout
1.加载时间 首先明白内存问题 Java内存分为:堆内存.栈内存.方法区(静态区和非静态区).本地方法区 无论是静态方法还是非静态方法,在内存中都只有一份分别位于方法区的静态区和非静态区:非静态方法在调用时会默认使用this传入当前对象,静态方法无此参数: 在第一次创建一个类实例,或者调用类的静态属性.静态方法的时候会发生类加载! 关于类的加载,详见:http://www.cnblogs.com/tengpan-cn/p/5869099.html package com.pt; public c
转载自:https://www.2cto.com/kf/201502/375549.html 非静态方法(不带static)可以访问静态方法(带static),但是反过来就不行,为什么呢? public class test{ public void static main(String args[]){ method(); //会出错,提示你讲method方法改成静态的 method2(); //调用方法正确 new Test2().method(); //正确 } public void m
1. 静态方法: 成员变量分为实例变量和静态变量.其中实例变量属于某一个具体的实例,必须在类实例化后才真正存在,不同的对象拥有不同的实例变量.而静态变量被该类所有的对象公有(相当于全局变量),不需要实例化就已经存在. 方法也可分为实例方法和静态方法.其中,实例方法必须在类实例化之后通过对象来调用,而静态方法可以在类实例化之前就使用.与成员变量不同的是:无论哪种方法,在内存中只有一份——无论该类有多少个实例,都共用同一个方法. 实例方法的调用: ClassA a = new ClassA();
目录 用静态工厂方法替代构造器? 静态工厂有名称 静态工厂不必重新创建一个对象 静态工厂可以返回任何子类型对象 静态工厂返回的类可以动态变化 静态工厂返回的类可以不存在 静态工厂方法的缺点 静态工厂方法依赖于构造函数的创建 静态工厂方法很难被发现 用静态工厂方法替代构造器? 传统来讲,为了使客户端能够获取它自身的一个实例,最传统的方法就是提供一个公有的构造器.像下面这样 public class Apple { public Apple(){} public static void main(S
public class Dog{ public static void main(String[]args){ A a= new A(); a.add(); //java实例对象可以访问类的静态方法和静态字段,C#却不能; int id = a.id; System.out.println(id); } } class A{ public static int id=10; public static void add(){ System.out.println(id); } }