静态变量

C++面试常见题之美

孤者浪人 提交于 2020-01-29 11:10:42
1.什么是虚函数?什么是纯虚函数? 虚函数是允许被其子类重新定义的成员函数。 虚函数的声明:virtual returntype func(parameter);引入虚函数的目的是为了动态绑定; 纯虚函数声明:virtual returntype func(parameter)=0;引入纯虚函数是为了派生接口。(使派生类仅仅只是继承函数的接口) 2.基类为什么需要虚析构函数? 防止内存泄漏。想去借助父类指针去销毁子类对象的时候,不能去销毁子类对象。假如没有虚析构函数,释放一个由基类指针指向的派生类对象时,不会触发动态绑定,则只会调用基类的析构函数,不会调用派生类的。派生类中申请的空间则得不到释放导致内存泄漏。 3.当i是一个整数的时候i++和++i那个更快?它们的区别是什么? 几乎一样。i++返回的是i的值,++i返回的是i+1的值,即++i是一个确定的值,是一个可以修改的左值。 4.vector的reserve和capacity的区别? reserve()用于让容器预留空间,避免再次分配内存;capacity()返回在重新进行分配以前所能容纳的元素数量。 5.如何初始化const和static数据成员? 通常在类外申明static成员,但是static const的整型(bool,char,int,long)可以在类中声明且初始化,static

Java变量类型

ε祈祈猫儿з 提交于 2020-01-28 21:20:37
Java变量类型 Java语言支持的变量类型有: 类变量:独立于方法之外的变量,用static修饰。 实例变量:独立于方法之外的变量,不过没有static修饰。 局部变量:类的方法中的变量。 1 public class Variable{ 2 static int allClicks=0;//类变量 3 String str="hello world";//实例变量 4 public void method(){ 5 int I=0;//局部变量 6 } 7 } Java局部变量 局部变量声明在 方法、构造方法或者语句块中 ; 局部变量在方法、构造方法、或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁; 访问修饰符不能用于局部变量; 局部变量只在声明它的方法、构造方法或者语句块中可见; 局部变量是在 栈上分配 的; 局部变量没有默认值 ,所以局部变量在被声明后,必须经过初始化,才可以使用。 实例1 1 public class Test{ 2 public void pupAge(){ 3 int age=0;//局部变量必须初始化,否则在编译时会出错 4 age=age+7; 5 System.out.println("小狗的年龄是:"+age); 6 } 7 public static void main(String[] args){ 8 Test test

java基本知识点3

若如初见. 提交于 2020-01-28 08:47:47
Java 变量类型 Java 局部变量 局部变量声明在方法、构造方法或者语句块中; 局部变量在方法、构造方法、或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁; 访问修饰符不能用于局部变量; 局部变量只在声明它的方法、构造方法或者语句块中可见; 局部变量是在栈上分配的。 局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用。 package com . runoob . test ; public class Test { public void pupAge ( ) { int age = 0 ; age = age + 7 ; System . out . println ( "小狗的年龄是: " + age ) ; } public static void main ( String [ ] args ) { Test test = new Test ( ) ; test . pupAge ( ) ; } } 运行结果: 小狗的年龄是: 7 实例变量 变量声明在一个类中,但在方法、构造方法和语句块之外; 当一个对象被实例化之后,每个实例变量的值就跟着确定; 实例变量在对象创建的时候创建,在对象被销毁的时候销毁; 实例变量的值应该至少被一个方法、构造方法或者语句块引用,使得外部能够通过这些方式获取实例变量信息; 实例变量可以声明在使用前或者使用后;

堆和栈的区别(转过无数次的文章)

老子叫甜甜 提交于 2020-01-28 01:14:17
因为经典,所以转发。 一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 栈区(stack) — 由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 堆区(heap) — 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回 收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。 全局区(静态区)(static) —,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后由系统释放。 文字常量区 —常量字符串就是放在这里的。 程序结束后由系统释放。 程序代码区—存放函数体的二进制代码。 二、例子程序 这是一个前辈写的,非常详细 //main.cpp int a = 0; // 全局初始化区 char *p1; // 全局未初始化区 main() { int b; // 栈 char s[] = "abc"; // 栈 char *p2; // 栈 char *p3 = "123456"; // 123456/0在常量区,p3在栈上。 static int c =0; // 全局(静态)初始化区 p1 = (char *)malloc(10); p2 = (char *)malloc(20); //

结对编程

一曲冷凌霜 提交于 2020-01-28 00:33:25
学号1:211606367 姓名:林恩 学号2:211606445 姓名:肖志豪 一、预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 30 30 • Estimate • 估计这个任务需要多少时间 30 30 Development 开发 600 560 • Analysis • 需求分析 (包括学习新技术) 70 50 • Design Spec • 生成设计文档 50 70 • Design Review • 设计复审 20 30 • Coding Standard • 代码规范 (为目前的开发制定合适的规范) 30 20 • Design • 具体设计 185 185 • Coding • 具体编码 185 185 • Code Review • 代码复审 30 30 • Test • 测试(自我测试,修改代码,提交修改) 30 30 Reporting 报告 60 50 • Test Repor • 测试报告 30 30 • Size Measurement • 计算工作量 10 10 • Postmortem & Process Improvement Plan • 事后总结, 并提出过程改进计划 10 20 合计 690 640 二、需求分析 我通过百度的方式了解到

类与对象、封装、构造方法

元气小坏坏 提交于 2020-01-27 04:49:15
一、什么是面向对象   Java语言是一种面向对象的程序设计语言,而面向对象思想是一种程序设计思想,我们在面向对象思想的指引下, 使用Java语言去设计、开发计算机程序。 这里的对象泛指现实中一切事物,每种事物都具备自己的属性和行为。面 向对象思想就是在计算机程序设计过程中,参照现实中事物,将事物的属性特征、行为特征抽象出来,描述成计算 机事件的设计思想。 它区别于面向过程思想,强调的是通过调用对象的行为来实现功能,而不是自己一步一步的去 操作实现。 二、面向过程和面向对象的区别(以洗衣服为例) 面向过程:强调步骤 eg:把衣服脱下来-->找一个盆-->放点洗衣粉-->加点水-->浸泡10分钟-->揉一揉-->清洗衣服-->拧干-->晾 起来 面向对象:强调对象 eg:把衣服脱下来-->打开洗衣机-->把衣服放进去-->按下按钮-->拿出来-->晾起来 面向对象的特点:    a:是一种更符合我们思想习惯的思想   b:可以将复杂的事情简单化(洗衣服的整个过程)   c:将我们从执行者变成了指挥者(指挥洗衣机去洗衣服)   d:包含三大基本特征:封装、继承和多态   e:管理和维护对象之间的关系。 三、类和对象的区别?   类:是一组相关属性和行为的集合。可以看成是一类事物的模板,使用事物的属性特征和行为特征来描述该类事物     属性:就是该事物的状态信息。     行为

类加载

我的梦境 提交于 2020-01-26 23:43:08
Java面试总结----- Java类加载 类加载是Java中非常重要的一块内容。 该博客下所有样例代码会在 github 逐步更新,请耐心等待,您可以收藏本文章以获得更新通知 虚拟机把描述类的数据从 Class 文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的 Java 类型,这就是虚拟机的类加载机制。 在Java语言里面,类型的加载、连接和初始化过程都是在程序运行期间完成的。 1. 简述 1.1 加载:把 .class文件从磁盘加载进内存里。 1.2 连接:确定类与类的关系,其过程分为验证、准备、解析。 1.3 初始化:对静态变量进行赋值,执行 () 方法。 2.生命周期 2.1 加载:查找并加载类的二进制数据 通过全限定类名来获取定义此类的二进制字节流。 1 将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构,即把二进制数据流放在方法区内。 在内存中生成一个代表这个类的 java.lang.Class 对象,作为方法区这个类的各种数据的访问入口。 2.2 连接: 验证 :确保被加载的类的正确性,保证符合jvm的规定。 准备 :为类的 静态变量 并初始化为 默认值 。 解析 :把类中的 符号引用 2 转换为 直接引用 。 3 2.3 初始化: 为类的静态变量赋予正确的初始值。 到初始化阶段,才真正开始执行类中定义的 Java 程序代码

面向对象基础部分

穿精又带淫゛_ 提交于 2020-01-26 11:55:39
一:面向对象与面向过程 都是解决问题的方式,都是代码的组织形式。 宏观上使用面向对象把握(把握复杂性),微观上使用面向过程实现(落地离不开面向过程) 二:对象是什么 数据无需管理时: 1.整个程序变量很少,无需做过多的管理(a+b=c) 2.用一个数组管理一个班的年龄 3.一个班的学生,除了年龄,还有名字,又来一个数组,还是不科学,因此需要一个叫做学生的对象,把年龄名字放进去,这样就可以很好的描述每一个学生。 对象是用来做数据管理的 三:对象和类 类是对象的模板,图纸,是对象的抽象。 对象具有属性和方法。 四:对和类的底层分析(简单) 虚拟机内存可以简单分成 栈 堆 方法区(也是堆) 栈: 方法执行的内存模型,每个线程一个栈,线程私有 无法共享 堆 堆用来存储创建好的对象和,整个jvm只有一个堆 方法区 整个jvm也只有一个 存储不变或者唯一的东西(类的信息 静态变量 字符串常量) 五:构造器 类创建时需要做的一些准备工作,构造器大多时候都需要重载。 六:垃圾回收机制(初步) c++ 自己收桌子 当使用内存的人不自己收拾掉东西,不久就没桌子吃饭了 java 垃圾回收机制 有个服务员 当桌子没人吃的时候 把桌子清理干净 垃圾回收机制步骤 : 发现垃圾 清理垃圾 常见算法 : 1.引用计数法 2.引用可达法 垃圾回收过程 : jvm调优 一般针对full gc 进行调优 七

内部类

梦想与她 提交于 2020-01-26 06:18:34
内部类:类存在于其他类内部。 一般,内部类与包含它的外部类有比较密切的关系,而与其他类关系不大,定义在类内部,可以实现 对外部完全隐藏,有更好的封装性,代码实现更为简洁 内部类可以方便的访问外部类的私有变量,可以声明为private从而实现对外完全隐藏 根据定义的位置和方式不同,可分为4类: 静态内部类,成员内部类(两者均可被外部使用) 方法内部类,匿名内部类(都不能在外部使用) 1.静态内部类 静态内部类与静态变量和静态方法定义的位置一样,也带有static关键字。 静态内部类除了位置放在其他类内部外,与一个独立的类差别不大。它只可以访问外部类的静态变量和方法、 public 静态内部类可以被外部使用,通过“外部类.静态内部类”的方法使用 如:Outer.StaticInner si =new Outer.StaticInner() si.innerMethod(); java会为内部类生成一个访问私有变量的非私有方法 2.成员内部类 除了访问静态变量和方法,成员内部类还可以访问外部类的实例变量和方法,还可以通过“外部类.this.xxx”的方式引用外部类的实例变量和方法,一般在重名情况下使用。 成员内部类对象总与一个外部类对象相连,在外部使用时不能直接通过new Outer.Inner()方式创建对象,而是要先创建一个Outer类对象 Outer outer=new Outer

静态修饰符

天大地大妈咪最大 提交于 2020-01-25 03:54:10
1:什么是静态变量:静态变量只能存一份,它属于类,不会随对象的创立而建立副本。如果不想在创建对象的时候就需要知道一些相关信息,那么就声明为static类型的。被修饰为static的成员变量不属于对象,他是属于类的。静态成员变量会被该类中的所有对象共享。 static语法: static 成员变量类型 成员变量名称 static String color="黄色"; //通过代码来演示修饰符的成员变量属于类,只存一份 public class xiushifu { //声明一个static类型的String类型的变量color static String color="绿色"; 创建xiushifu的构造器 public xiushifu(String color) { this.color+=color; } public static void main(String[] args) { //创建xiushifu的对象实例 xiushifu t1=new xiushifu("黄色"); xiushifu t2=new xiushifu("红色"); System.out.println(t1.color); System.out.println(t2.color); System.out.println(color); } } 静态变量访问: 当任何一个对象访问静态变量时