静态变量

java类及实例初始化顺序

匆匆过客 提交于 2020-02-18 00:02:43
1、静态变量、静态代码块初始化顺序级别一致,谁在前,就先初始化谁。从上而下初始化(只在类加载时,初始化一次) 2、非静态变量、非静态代码块初始化顺序级别一致,谁在前,就先初始化谁。从上而下初始化(只要对象实例化一次,就初始化一次) 3、构造方法在非静态变量、非静态代码块之后执行。 4、子类非静态变量、非静态代码块在父类构造方法之后执行。 5、子类构造方法在父类构造方法之后执行。 6、静态方法不会被子类重写。 来源: https://www.cnblogs.com/yuefeng123/p/12324333.html

static关键字

给你一囗甜甜゛ 提交于 2020-02-17 00:55:41
static:静态的 static可以修饰成员变量,称为静态变量,在方法区 标准使用方式:类名.静态变量名 另一种使用方式:对象名.静态变量名 static可以修饰成员方法 ,称为静态方法 标准使用方式:类名.方法名() 另一种使用方式:对象名.方法名() public class Student { String name ; //name与age称为成员变量,在堆 int age ; static String school ; //静态变量,而且在方法区 public void show ( ) { //成员方法 } public static void fun ( ) { //静态方法 } } public class TestStudent { public static void main ( String [ ] args ) { Student . school = "北京大学" ; //静态变量的使用方法,是 类名.静态变量名 //Student.name="张三"; //成员变量 Student stu = new Student ( ) ; stu . name = "张三" ; stu . school = "清华大学" ; //不报错,但是会警告 Student . fun ( ) ; //静态方法, 类名.方法名 //Student.show();/

内存分类

試著忘記壹切 提交于 2020-02-15 07:41:37
在进行C/C++编程时,需要程序员对内存的了解比较精准。经常需要操作的内存可分为以下几个类别: 栈区 (stack ):由编译器自动分配和释放,存放 函数的参数值、局部变量的值 等。 其操作方式类似于数据结构中的栈。 堆区(heap ) :一般由程序员分配和释放,若程序员不释放,程序节束时可能由操 系统回收。注意它与数据结构中的堆是两回事, 分配方式倒是类似于链表。 全局区(静态区)( static ) : 全局变量和静态变量 的存储是放在一块的, 初始化 的 全局变量和静态变量在一块区域, 未初始化的全局变量和 未初始化 的静态变量在相邻的另一 块区域。程序节束后由系统释放。 文字常量区: 常量字符串 就是放在这里的。程序节束后由系统释放。 程序代码区: 存放 函数体 的 二进制 代码 1 //main .cpp 2 int a=0//全局初始化区 3 char *p1;//全局未初始化区 4 main() 5 { 6 int b;//栈 7 char s[]="abc";//栈 8 char *p2;//栈 9 char *p3=”123456"; 10 //123456在常量区,p3在栈上 11 static int c =0 12 //全局(静态)初始化区 13 p1=(char*)mallac(10); 14 p2=(char*)ma工lac(20); 15 /

程序的内存分配

北城以北 提交于 2020-02-15 07:14:06
本人收集整理!感觉非常经典,,与众人阅之! 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack):由编译器自动分配释放 ,站的特点是空间小但被CPU访问的速度快,使用户存放程序中临时创建的变量.由于桟的后进后出的特点,所以桟特别方便用来保存和恢复调用现场.用于存储占用空间长度不变并且占用空间小的数据类型的内存段,而相同类型的数据占用的空间是等长的,其操作方式类似于数据结构中的栈。 2、堆区(heap):它大小并不固定,可动态扩张或缩减.用于存放数据长度可变或内存占用较大的数据, 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区static):全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后有系统释放 4、文字常量区:常量字符串就是放在这里的。 程序结束后由系统释放 5、程序代码区:代码区用来存放可执行文件的操作指令,(即二进制代码)也就是可执行程序内存中的镜像.代码段需要防止运行时被非法修改,所以只允许读取操作.如程序中的函数就存储在这段内存。 二、例子程序 这是一个前辈写的,非常详细 //main.cpp int a = 0; 全局初始化区 char

Java学习笔记(三)面向对象---Static关键词

China☆狼群 提交于 2020-02-12 00:55:15
内容 静态:Static 用法 Static是一个修饰符,用于修饰成员(成员变量,成员函数),当成员被静态修饰后,除了可以被对象调用外,还可以直接被类名调用。 举例 class Person { String name; //成员变量,实例变量 static String country = "CN"; //静态的成员变量,类变量 } public class StaticDemo { public static void main(String[] args) { Person p = new Person(); System.out.println(p.country); //使用对象调用 System.out.println(Person.country);//直接使用类名调用 } } 运行结果: CN CN 特点 Static关键词所修饰的成员随着类的加载而加载(随着类的消失而消失),也就是说静态变量不需要依靠创建对象而存在在内存中,所以它的生命周期最长 优先于对象存在 (静态是先存在的,对象是后存在的) 被所有对象所共享 可以直接被类名所调用 实例变量和类变量的区别 存放位置 类变量随着类的加载而存在于方法区中。 实例变量随着对象的建立而存在于堆内存中。 生命周期 类变量生命周期最长,随着类的消失而消失。 实例变量的生命周期取决于对象的建立和消失。 静态使用注意事项

面向对象

夙愿已清 提交于 2020-02-11 16:32:39
一、引子 人狗大战 def person(name,sex,agger,hp): person_dic = {"name":name,"sex":sex,"agger":agger,"hp":hp} def attack(dog): #dog("xiaogei","shachai",260,1000000) # dog["hp"] -= person_dic["agger"] print("%s打了%s,%s掉了%s血" % (person_dic["name"],dog["name"],dog["name"],person_dic["agger"])) person_dic["attack"] = attack return person_dic def dog(name,kind,agger,hp): dog_dic = {"name":name,"kind":kind,"agger":agger,"hp":hp} def bite(person): #person_dic person["hp"] = person["hp"] - dog_dic["agger"] print("%s咬了%s,%s掉了%s血" % (dog_dic["name"], person["name"], person["name"],dog_dic["agger"])) dog_dic["bite"

day27(027-反射&JDK新特性)

本小妞迷上赌 提交于 2020-02-11 09:14:17
###27.01_反射(类的加载概述和加载时机)  A:类的加载概述   *加载 就是指将class文件读入内存,并为之创建一个Class对象。 任何类被使用时系统都会建立一个Class对象。   *连接 准备,负责为类的静态成员分配内存,并设置默认初始化值。   *初始化  B:加载时机     创建类的实例     访问类的静态变量,或者为静态变量赋值     调用类的静态方法     初始化某个类的子类      使用反射机制方式来强制创建某个类或接口对应的java.lang.Class对象    来源: https://www.cnblogs.com/MarlonKang/p/12293781.html

PHP学习笔记06-静态变量、回调函数、匿名函数、闭包

余生颓废 提交于 2020-02-10 20:53:03
1.静态变量修饰符static 使用static修饰变量可以使函数之间跨函数共享数据 如上图所示,static修饰变量b后,调用三次函数,变量b的值都在增加,而没有static修饰的变量a,每次调用的变量都是1。 2.可变函数 假如变量的值是一个函数名称,则可以直接在改变量之后加上括号即可调用改函数。 3.回调过程和回调函数 我们一般把一个函数传入给另一个函数去使用,这个过程称之为回调函数,而被传入的函数叫回调函数。 函数sys_num我们可以称之为回调函数。 4.匿名函数 匿名函数就是没有函数名的函数。 变量保存匿名函数,实际上得到的是一个对象。 5.闭包 闭包实际上就是提供了一个环境,使内部匿名函数可以访问局部变量。 没有使用闭包时: 使用闭包时: 使用use关键字可以让变量不会被释放,提供一个环境给匿名函数使用。 来源: CSDN 作者: weiweiQAQ 链接: https://blog.csdn.net/qq_42062052/article/details/104225072

并发编程之线程第二篇

北慕城南 提交于 2020-02-08 22:50:00
并发编程之线程第二篇 3.12 五种状态 3.13 六种状态 4.1 共享带来的问题 4.2 synchronized解决方案 4.4 变量的线程安全分析 4.6 Monitor概念 1. 轻量级锁 2. 锁膨胀 3.12 五种状态 这是从操作系统层面来描述的 【初始状态】仅是在语音层面创建了线程对象,还未与操作系统线程关联 【可运行状态】(就绪状态)指该线程已经被创建(与操作系统线程关联),可以由CPU调度执行 【运行状态】指获取了CPU时间片运行中的状态 (1)当CPU时间片用完,会从【运行状态】转换至【可运行状态】,会导致线程的上下文切换 【阻塞状态】 (1)如果调用了阻塞API,如BIO读写文件,这时该线程实际不会用到CPU,会导致线程上下文切换,进入【阻塞状态】 (2)等BIO操作完毕,会由操作系统唤醒阻塞的线程,转换至【可运行状态】 (3)与【可运行状态】的区别是,对【阻塞状态】的线程来说只要它们一直不唤醒,调度器就一直不会考虑调度它们 【终止状态】表示线程已经执行完毕,生命周期已经结束,不会再转换为其它状态 3.13 六种状态 这是从Java API层面来描述的 根据Thread.State枚举,分为六种状态 NEW 线程刚被创建,但是还没有调用start()方法 RUNNABLE 当调用了start()方法之后,注意,Java

面向对象

旧巷老猫 提交于 2020-02-08 15:49:37
面向对象的三大特性 一、多态 python是弱类型语言,不需要在变量的声明中明确变量的数据类型 python没有多态,但又处处是多态。 python有鸭子类型 看着是鸭子,就是鸭子 不同的类中存在相同的方法,这些方法的功能也类似,那么这些类就被称为鸭子(例如:字符串类、列表类、字典类等都具有index属性) 二、继承 继承分为单继承和多继承,多继承遵循的是从左往右的原则,左侧优先。 python3中的继承原则采用的是广度优先原则,继承类都是新式类;python2采用的是深度优先,继承的都是经典类 python3中的子类和派生类只能继承父类中的公有变量和方法,不能继承父类中的私有方法和私有动态变量、私有静态变量。 三、封装 “ 封装 ”就是将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体(即类) 封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,一特定的访问权限来使用类的成员。 封装的好处 封装后外部的使用者只需要传递出响应的参数,就可以通过对象调用内部的数据和方法,而不需要知道内部的实现方式 封装后如果需要新的方法,可以在类中添加。 广义的封装:给对象封装属性,给类中封装静态字段、属性以及构造方法。 狭义的封装:私有制、私有成员 私有成员:静态私有字段、私有方法、私有属性 只能在本类中被调用 ###四、什么是面向对象 什么时候用