声明对象时(包括方法的参数): 把"?"跟在类名后面,表示这个对象允许为null; 把"!!"跟在类名后面,表示这个对象不允许为null; 2. 调用对象时: 把"?"...// 这是声明一个变量,问号跟在类名后面 var room: Room?...//相当于 import strings.JoinKt.* import strings.* 3)、顶级属性 同样也是 static 静态的 如果使用 var 来定义会生成对应的静态setter...(list, ", ", "", ""); 1.8 可变参数 和 展开操作符 1)、可变参数,可传递任意数量参数 java中使用…来声明可变参数,如: public static List<T...class InnerStaticClass{ } //如果要声明非静态的内部类,需要加上 inner 关键字 inner class InnerClass{
default只能放在 switch语句所有的case 之后,并且是可选的。 inline inline(内联)函数的定义将在编译时在调用处展开。...inline函数一般由短小的语句组成,可以提高程序效率。 static static(静态的)静态变量作用范围在一个文件内,程序开始时分配空间,结束时释放空间,默认初始化为 0,使用时可改变其值。...在 C++ 类的成员变量被声明为static(称为静态成员变量),意味着它被该类的所有实例所共享,也就是说当某个类的实例修改了该静态成员变量,其修改值为该类的其它所有实例所见;而类的静态成员函数也只能访问静态成员...由于一个对象的状态由该对象的非静态数据成员决定,所以随着数据成员的改变,对像的状态也会随之发生变化。...如果一个类的成员函数被声明为 const类型,表示该函数不会改变对象的状态,也就是该函数不会修改类的非静态数据成员。
其定义以及使用方法如下: //普通的静态成员 class X { static int n; }; // 声明(用 'static') int X::n = 1; // 定义(...不用 'static') //常量静态成员 /*如果整型或枚举类型的静态数据成员 被声明为 const(且非 volatile), 那么它能以其中的每个表达式均为常量表达式 的初始化器直接在类定义内初始化...k; }; const int X::k = 3; //inline 静态数据成员 /*静态数据成员可以声明为 inline。...*/ struct X { inline static int n = 1; // C++17 起 }; 修饰类的成员函数:即静态成员函数,该函数与静态成员一样,不关联到任何对象。...静态成员函数不能调用类的非静态成员,包括非静态成员和非静态成员函数。 参考文献 《C++ reference》
//静态局部变量一般在声明处初始化,如果没有显式初始化,会被程序自动初始化为0(局部变量不会被初始化); static int i = 1; // note:1 //i就是在栈区分配了,会随着foo...4.靜態數據成員 对于非静态数据成员,每个类对象(实例)都有自己的拷贝。...; 2.非静态成员函数可以任意地访问静态成员函数和静态数据成员; 3.静态成员函数不能访问非静态成员函数和非静态数据成员; 4.调用静态成员函数,可以用成员访问操作符(.)和(->)为一个类的对象或指向类对象的指针调用静态成员函数...void GetSum() //这里加上static //静态成员函数不能访问非静态成员函数和非静态数据成员; { cout<<"sum = "<<s_sum...<em>inline</em> void Foo(<em>int</em> x, <em>int</em> y); // <em>inline</em> 仅与函数<em>声明</em>放在一起,無作用 void Foo(<em>int</em> x, <em>int</em> y){} void Foo(<em>int</em> x, <em>int</em>
{ public static int STATIC_INT = 1; public static void main(String[] args) throws Exception...//再读取,通过STATIC_INT打印新的值 System.out.println(t.STATIC_INT); } } 序列化之前的静态变量 STATIC_INT 是1,但是修改...STATIC_INT 输出变成了10。...==序列化保存的是对象的状态,静态变量属于类的状态,因此 序列化并不保存静态变量。...也就是可以放非静态的属性== public static void main(String[] args) throws Exception { Demo demo = new Demo
静态块 以static修饰的初始化块叫静态初始化块; 静态块也属于类,它的加载的时候被隐式的调用一次,之后便会再被调用。...被static修饰的成员内部类叫做静态内部类,否则叫非静态内部类。 局部内部类 在方法内定义的内部类叫做局部内部类,它仅仅在这个方法内部有效(不常用)。...非静态内部类 非静态内部类中不可以定义任何静态成员; 非静态内部类 可以访问外部类的实例变量; 外部类的静态初始化块、静态方法不能访问非静态内部类; 同名的变量可以使用this....、{*n}、{n,}、{n,m})之后时,匹配模式是"非贪心的"。"非贪心的"模式匹配搜索到的、尽可能短的字符串,而默认的"贪心的"模式匹配搜索到的、尽可能长的字符串。...inputStream.close(); socket.close(); } 注意点: 在上面的程序中,如果我们不在数据读取和写入之后对服务的状态进行标识,此时双端都会出现一个等待的状态
它可以调用 in.defaultReadObject 来调用默认机制,以还原对象的非静态和非瞬态字段。 ...在序列化时,有几点要注意的: 1:当一个对象被序列化时,只保存对象的非静态成员变量(包括声明为private的变量),不能保存任何的成员方法和静态的成员变量。 ...{ 2 private static final long serialVersionUID = -3450064362986273896L; 3 4 private int...width; 5 private int height; 6 7 public static void main(String[] args) { 8...可序列化类可以通过声明名为 "serialVersionUID" 的字段(该字段必须是静态 (static)、最终 (final) 的 long型字段)显式声明其自己的 serialVersionUID
static函数 在不同的cpp中可以定义函数原型一样的函数 类 不同的cpp中类的名字可以一样 类成员与函数 在.h中定义,所有成员必须在类中声明,在cpp中实现 非静态的常量整形数据成员不能就地初始化...(*C++11中,标准允许使用等号=或者花括号{}进行就地的非静态成员变量初始化) 在类内部定义的成员函数将自动作为inline处理 在.h外部定义的函数需要加上inline说明 否则在被include...(*C++11中,标准允许使用等号=或者花括号{}进行就地的非静态成员变量初始化) #pragma once class A { public: const int i=50; }; error...需要到头文件以外去定义它) 类的静态的常量整形数据成员 可以就地初始化 如 class A { private: const static int i = 5; }; 模板(不考虑export)...- 不可以 (*C++11中,标准允许使用等号=或者花括号{}进行就地的非静态成员变量初始化) 类成员函数 ------------------ ---------------- 在.h外部定义的函数需要加上
socketpair(int domain, int type, int protocol, int sv[2]); socketpair函数需要四个参数: domain-套接口的域 type...-套接口类型 protocol-使用的协议 sv[2]-指向存储文件描述符的指针 类型参数声明了我们希望创建哪种类型的套接口,socketpair函数的选择如下: SOCK_STREAM...SOCK_DGRAM 对于socketpair函数,protocol参数必须提供为0。...2.调用fork,成功后就创建了子进程 2.1 fork返回0,那就是子进程,关闭父进程的socket,保留子进程的socket 2.2 fork返回非0,那就是父进程,关闭子进程的socket...*s'\n", n, buf); } void socketfork() { int fd[2]; static const int parentsocket = 0; static
修饰成员函数修饰成员函数使得不需要生成对象就可以访问该函数,但是在 static 函数内不能访问非静态成员。...在函数内部使用static关键字声明的变量是静态变量,它在程序的生命周期内保持其值,不会在每次函数调用时重新初始化。静态变量存储在静态数据区,而不是栈上。.../ 输出 Static count: 3 return 0; } 在C/C++中,使用static关键字在类中声明的成员函数被称为静态函数,也称为类的静态成员函数。...class MyClass { public: static int staticData; // 静态数据成员的声明 }; int MyClass::staticData = 42; //...inline内联函数 在C++中,inline是一个关键字,用于对函数进行内联展开。使用inline关键字声明的函数被称为内联函数。
使用finally可以维护对象的内部状态,并可以清理非内存资源。特别是在关闭数据库连接这方面,如果程序员把数据库连接的close()方法放到finally中,就会大大降低程序出错的几率。...它可以用于以下四个地方: 1).定义变量,包括静态的和非静态的。 2).定义方法的参数。 3).定义方法。 4).定义类。 定义变量,包括静态的和非静态的。...B;{B=20;} //在初始化块中初始化 //非静态final变量不能在静态初始化块中初始化 //public final int C;static{//C=30; } //静态常量,在定义时初始化... public static final int STATIC_D=40; //静态常量,在静态初始化块中初始化 public static final int STATIC_E;static...static final int STATIC_J; } 复制代码 我们运行上面的代码之后出了可以发现final变量(常量和静态final变量(静态常量被初始化时,编译会报错。
---- 正文 先从上篇文章中的结论开始学习 初始化列表 初始化列表是祖师爷认证的成员变量初始化位置,初始化列表紧跟在默认构造函数之后,形式比较奇怪:主要通过 : 、, 和 ()实现初始化 class...初始化列表基本形式: 紧跟在默认构造函数之后,首先以 ; 开始 初始化格式为 待初始化对象(初始值) 之后待初始化成员都以 , 开头 不存在结尾符号,除了第一个成员用 ; 开头外,其他成员都用 , 开头...静态成员函数 静态成员为所有类对象所共享,不属于某个具体的对象,存放在静态区 静态成员变量必须在类外定义,定义时不添加static关键字,类中只是声明 类静态成员可用 类名::静态成员 或者 对象.静态成员...来访问 静态成员函数没有隐藏的 this 指针,不能访问任何 非静态成员 静态成员也是类的成员,受 public 、protected 、private 访问限定符的限制 课代表简单总结: 静态成员变量必须在类外初始化...0; } 输出结果如下: 得益于 static 修饰的成员变量统计 注意: 静态成员函数 不可以调用 非静态成员变量,没有 this 指针 非静态成员函数 可以调用 静态成员变量,具有全局属性
静态变量序列化 序列化只能保存对象的非静态成员交量,不能保存任何的成员方法和静态的成员变量,而且序列化保存的只是变量的值,对于变量的任何修饰符都不能保存。...如果把Person类中的name定义为static类型的话,试图重构,就不能得到原来的值,只能得到null。说明对静态成员变量值是不保存的。...这其实比较容易理解,序列化保存的是对象的状态,静态变量属于类的状态,因此 序列化并不保存静态变量。...当某些变量不想被序列化,同是又不适合使用static关键字声明,那么此时就需要用transient关键字来声明该变量。...在这种情况下,在序列化时根据需要在父类无参构造函数中对变量进行初始化,否则的话,父类变量值都是默认声明的值,如 int 型的默认是 0,string 型的默认是 null。
private: static const int NumTurns=5; int scores[NumTurns]; ... }; 注意,因为此处是类的成员声明范围内,所以上面只是变量的声明和初始化...int a; int s[a]; 此时s[a]肯定报错了,为了解决这种问题,可以使用枚举: enum {a=5}; int s[a]; inline函数替代宏函数 inline关键字用来建议编译器把某频繁调用的函数当做内联函数...非本地静态对象(non-local static object): 静态对象可以是在全局范围定义的变量,在名空间范围定义的变量,函数范围内定义为static的变量,类的范围内定义为static的变量,而除了函数中的静态对象是本地的...唯一需要做的是:将每个non-local static 对象搬到自己的专属函数内(该对象在此函数内被声明为static) 。这些函数返回一个 reference 指向它所含的对象。...换句话说, non-local static 对象被 local static 对象替换了。 解决方法: 将全局变量变为本地静态变量 使用一个函数,只用来定义一个本地静态变量并返回它的引用。
抽象类中如果有抽象方法,那么子类继承这个抽象类之后,就必须要重写抽象类中的 所有抽象方法。...(); } } 内部类有 非静态,静态,匿名类 语法: new 外部类().new 内部类() 成员内部类: 在成员变量的位置上定义的类为成员内部类。...静态内部类: 在成员位置上用static修饰的内部类为静态内部类。 静态内部类只能访问外部类的静态成员和本内部类的成员;且不能访问外部类的非静态成员。...访问外部类中的内部类,非静态 Outer.Inner int = new Outer().new Innter(); 对静态内部类中的非静态成员 Outer.Inner int = new Outer(...).new Innter(); 用static声明的内部类,则内部类变成外部类,用static声明的内部类不能访问非static的外部类属性,外部类的属性要用static才能访问。
abstract class内可以没有抽象方法,不可以被实例化,但是可以被声明。...静态内部类中对外部类进行引用,只有非静态外部类才能对外部类进行引用。...答:“ static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。...StaticDemo{ static{ System.out.println("parent静态代码块"); } { System.out.println("parent非静态代码块"); } StaticDemo...静态 main parent非静态代码块 parent构造方法 child非静态 child构造方法 28.说说IO?
abstract class内可以没有抽象方法,不可以被实例化,但是可以被声明。...静态内部类中对外部类进行引用,只有非静态外部类才能对外部类进行引用。...答:“ static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。...{ static{ System.out.println("child静态"); } { System.out.println("child非静态"); } Test(){ System.out.println...} } //result parent静态代码块 child静态 main parent非静态代码块 parent构造方法 child非静态 child构造方法 28.说说IO?
; 构造方法,一般是用于为成员属性赋初始化值; 2、变量 2.1 局部变量 声明在构造方法、静态方法、实例方法、代码块中的变量,都是局部变量; 不能使用static和访问修饰符修饰; 可以使用final...声明在所有方法体和代码块之外,并且使用static修饰的变量; 可以使用访问修饰符修饰; 一般配合final使用,即public static fianl,标识符使用大写; 类变量被分配在静态存储区...、抽象方法、静态方法; 接口中不能声明实例方法,声明抽象方法时,不能使用static关键字修饰; 声明接口语句中,默认含有abstract关键字,抽象方法中也默认含有abstract关键字; 接口可以被实现...3; //静态内部类 public static class Inner{ public static int a = 2; public static void...= a; } public T getA(){ return a; } //类上声明的泛型不能作用在静态方法上 public static void
注意在完成配置环境变量后测试JDK是否安装成功时键入命令:java -version Java 内部类 嵌在一个类中声明的类叫做内部类,有静态内部类和非静态内部类两种。...非静态内部类 - 内部类有默认,private和protected修饰符 静态内部类 - 静态内部类生成对象时,比非静态类方便些 class OuterClass { public static...y = 3; static private int m = 4; private void say() { System.out.println("hello"); } // 非静态内部类...y); say(); } } // 静态内部类 static class StaticInnerClass { int xx = 5; static public...非访问修饰符 为了实现一些其他的功能,Java 也提供了许多非访问修饰符。 static 修饰符,用来修饰类方法和类变量。
常量有点变量只能被赋值一次,一旦被赋值之后就不能再次更改了;这种变量称为常量;在Java中,使用关键字final标识常量;例如: public final int NUM = 20;常量一般习惯为全部大写...static代码块 用 static 表示变量的级别,一个类中的静态变量,不属于类的对象或者实例。...Java 不允许在静态块中使用非静态变量。一个类中可以有多个静态块;Java 可以嵌套使用静态类,但是静态类不能用于嵌套的顶层。静态嵌套类的使用与其他顶层类一样,嵌套只是为了便于项目打包。...另一种数组声明语法声明数组还有第二种格式:type var-name; 这里,方括号紧跟在类型标识符type的后面,而不是跟在数组变量名的后面。...例如,下面的两个定义是等价的:int al[] = new int[3]; int[] a2 = new int[3];这种数组声明格式主要是为了方便。
领取专属 10元无门槛券
手把手带您无忧上云