非public变量需要加[SerializeField]才能序列化 例如: MonoBehaviour中: [SerializeField] private float m_xxx; 在相应的CustomEditor脚本中: SerializedProperty m_xxx= serializedObject.FindProperty ("m_xxx"); m_xxx.floatValue=1.0f;//*** 否则的话***句会报空引用错误.…
//据说这是一道阿里巴巴面试题,先以这道题为例分析下 public class Text { public static int k = 0; public static Text t1 = new Text("t1"); public static Text t2 = new Text("t2"); public static int i = print("i"); public static int n = 99; public int j…
非静态成员函数后面加const(加到非成员函数或静态成员后面会产生编译错误),表示成员函数隐含传入的this指针为const指针,决定了在该成员函数中,任意修改它所在的类的成员的操作都是不允许的(因为隐含了对this指针的const引用):唯一的例外是对于mutable修饰的成员.加了const的成员函数可以被非const对象和const对象调用,但不加const的成员函数只能被非const对象调用.例如: class A { private: int m_a; public: A() : m_…
依上图中当class字节码文件被jvm虚拟机加载到内存中依次经过 连接 验证:对字节码进行验证 准备:给静态变量分配内存并赋予变量类型各自的默认值(注:基本类型为0或false,对象为null,static final修饰的常量直接赋予相应的值) 解析:类中符号引用转换成直接引用 初始化:为类的静态变量/静态语句块初始化相应的值 而类的初始化契机是:类在被第一次主动使用的情况下,主动使用包括以下6中情况: 使用new关键字实例化对象时. 调用某个类的静态方法时. 读取或设置类的静态字段时(被fi…
前言 在Visual Studio 2012 中,针对Unit Test 的部分,有一个重要的变动: 原本针对「测试对象非public 的部分」,开发人员可通过Visual Studio 2010 自动产生的accessor ​​来进行测试.但在Visual Studio 2012 中,将此功能移除了. Accessor ​​其背后的原理,是将对象通过很「脏」的反射方式,把对象内所有的东西public 出来.并且Visual Studio 在更新对象后,进行与设计测试时,会帮你做同步产生acce…
内部类访问外部类的变量必须是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…
非静态成员变量,分别两种可能,要么类自定义,要么继承而来.根据<深度探索C++对象模型>的解读. class X { private: int x,y,z; }; 在这个类中,有三个私有成员变量(不管私有,保护,或公有),都按照某个次序排列(一般根据定义的先后顺序),唯一需要注意的是:某些变量需要对齐填充.在内存中的排列次序依次为:x,y,z:假如需要对这三个变量进行操作,实际会在成员函数中填充一个指针,参照<深入浅出MFC>. class X { public: void f()…
1.非静态成员变量 当成员变量为非静态成员变量且对当前类进行实例化时,将会产生死循环 例子: public class ConstructorCls { private ConstructorCls obj=new ConstructorCls(); } public class TestC { public static void main(String[] args) { ConstructorCls c =new ConstructorCls(); } } 结果: Exception in…
静态/非静态 方法/变量的写法 大家应该都明白静态方法/字段比普通方法/字段的写法要多一个static关键字,简单写下他们的写法吧,了解的可以直接略过 class Test{ // 静态变量 public static int id = 1; // 普通变量 public int usualId = 2; // 静态常量 public static final int finalNextId = 3; // 静态方法 public static void A(){ // 静态方法只能访问静态字段…
背景 大家都知道线程之间共享变量要用volatilekeyword.可是,假设不用volatile来标识,会不会导致线程死循环?比方以下的伪代码: static int flag = -1; void thread1(){ while(flag > 0){ //wait or do something } } void thread2(){ //do something flag = -1; } 线程1,线程2同一时候执行,线程2退出之后,线程1会不会有可能由于缓存等原因,一直死循环? 真实的世…