假如java类里的成员变量是自身的对象,则新建该类对象时内存中怎么分配空间,我感觉似乎死循环了. 不过我想的肯定是错的,因为很多类的成员变量是自身对象,并且绝对无错,举个例子: Class A{ private String b ="Hello"; private A a = new A(); } Class B{ public static void main(){ A p = new A(); } } 1.程序运行的时候会产生一个栈溢出错误的异常 Exception in thre…
今晚看单例模式饿汉时想到一个问题:假如java类里的成员变量是自身的对象,则新建该类对象时内存中怎么分配空间,我感觉似乎死循环了.于是上网搜索了下,哈哈,果然有人早就思考过这个问题了,站在巨人的肩膀上哈直接. 举个例子: class B { private String b = "Hello"; private B a = new B(); } public class Test { public static void main(String[] args) { B p = new…
今天偶然想起之前和朋友讨论过的一个问题:如何唯一确定一个 Java 类?我相信大多数朋友遇到这个问题的回答都是:类的全路径呗.但事实上,唯一确定一个 Java 类,单单靠类路径是不够的,还要多加上一个东西:类加载器.也就是说,类加载器 + 类路径才唯一确定一个 Java 类. 为了证明我所说的,我们来做一个简单的实验. //自定义一个类加载器 ClassLoader myLoader = new ClassLoader() { @Override public Class<?> loadCla…
第一次学习java,今天知道了java之父叫  詹姆斯.高司令 其它的记不住太多,首先我们先来安装jdk 百度搜索jdk12   (现在的jdk为12版本)安装稳定版 找到javaSE12X..  下载安装即可(一般默认路径为      c盘 program fiels  的java文件下 的jdk12x  ) 安装完JDK后,需要设置一个JAVA_HOME的环境变量,它指向JDK的安装目录. window下打开环境变量的步骤是  右键我的电脑-属性- 系统-高级系统设置 -环境变量 下面来设置…
引言 对于软件开发人员来说,单元测试是一项必不可少的工作.它既可以验证程序的有效性,又可以在程序出现 BUG 的时候,帮助开发人员快速的定位问题所在.但是,在写单元测试的过程中,开发人员经常要访问类的一些非公有的成员变量或方法,这给测试工作带来了很大的困扰.本文总结了访问类的非公有成员变量或方法的四种途径,以方便测试人员在需要访问类非公有成员变量或方法时进行选择. 尽管有很多经验丰富的程序员认为不应该提倡访问类的私有成员变量或方法,因为这样做违反了 Java 语言封装性的基本规则.然而,在实际测…
实例变量 实例变量声明在一个类中,但在方法.构造方法和语句块之外: 当一个对象被实例化之后,每个实例变量的值就跟着确定: 实例变量在对象创建的时候创建,在对象被销毁的时候销毁: 实例变量的值应该至少被一个方法.构造方法或者语句块引用,使得外部能够通过这些方式获取实例变量信息: 实例变量对于类中的方法.构造方法或者语句块是可见的.一般情况下应该把实例变量设为私有.通过使用访问修饰符可以使实例变量对子类可见 实例变量具有默认值.数值型变量的默认值是0,布尔型变量的默认值是false,引用类型变量的默…
public class Student { private long id; private long userId; private byte state; private long createMillis; } 这是一个普通的java类,包含几个简单的字段,那么这个类生成一个对象占用多大的内存呢? 通常,说占40个字节就可以了.这是怎么算出来的呢? 1:拆分对象   对象头   对象数据   对象填充 2:分别计算 2.1:对象头  占12字节 对象头包含两个部分 :标记字 ,占用一个机…
如果是自己写的java类,点击点击导航的project-setting-show members 如果是系统库的,点击structure 再点一下lib中的类,或者快捷键 command+F12…
代码: import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.io.LineNumberReader; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * 查找一个Java源文件中的成员函数名 * */ public class FindFunctionN…
Log4j 是 Apache 的一个开放源代码项目,通过使用 Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI 组件.甚至是套接口服务器.NT 的事件记录器.UNIX Syslog 守护进程等:我们也可以控制每一条日志的输出格式:通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程.最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码. 应项目需求,需要处理项目中某些java类所产生的跑批日志信息和平常操作产生的业务日志信息分开保存…