首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【《Effective C#》提炼总结】提高Unity中C#代码质量21条准则

6)因为实现实现访问方法get与set是独立两个方法,C# 2.0之后,你可以给它们定义不同访问权限,来更好控制成员可见性。...● as和is操作符都不会执行任何用户自定义转换,它们仅当运行时类型符合目标类型时才能转换成功,也不会在转换时创建新对象。...原则8 选择变量初始化不是赋值语句 成员初始化器是保证类型中成员均被初始化最简单方法——无论调用是哪一个构造函数。初始化器将在所有构造函数执行之前执行。...这样既可以避免代码重复,也可以利用构造函数初始化器来生成更高效目标代码。 ● C#编译器将把构造函数初始化器看做是一种特殊语法,并移除掉重复变量初始化器以及重复构造函数调用。...这样使得最终对象可以执行最少代码来保证初始化正确性。 ● 构造函数初始化器允许一个构造函数去调用另一个构造函数。C# 4.0添加了对默认参数支持,这个功能也可以用来减少构造函数中重复代码

1.7K30

(2021最新版)Java后端面试题|Java基础部分

/或扩展 子类共性方法或者属性直接使用父不需要自己再定义,只需扩展自己个性化 多态:基于对象所属不同,外部对同一个方法调用,实际执行逻辑不同。...但是如果发现有值,这时会调用equals()方法来检查两个对象是否真的相同。如果两者相同,HashSet就不会让其加入操作成功。如果不同的话,就会重新散列到其他位置。...如果final修饰成员变量,可以非静态初始化块、声明该变量或者构造器中执行初始值。 (2)修饰局部变量 系统不会为局部变量进行初始化,局部变量必须由程序员显示初始化。...Java源程序经过编译器编译后变成字节码,字节码由虚拟机解释执行,虚拟机将每一条要执行字节码送给解释器,解释器将其翻译成特定机器机器码,然后特定机器运行。...同时也避免了重复加载,因为 JVM中区分不同类,不仅仅是根据名,相同 class文件被不同 ClassLoader加载就是不同两个 17、GC如何判断对象可以被回收 引用计数法:每个对象有一个引用计数属性

76211
您找到你想要的搜索结果了吗?
是的
没有找到

30道最常问Java基础面试题

Java中,这种供虚拟机理解代码叫做 字节码(即扩展名为 .class文件),它不面向任何特定处理器,只面向虚拟机。每一种平台解释器是不同,但是实现虚拟机是相同。...**从语法形式,看成员变量是属于局部变量是方法中定义变量或是方法参数;成员变量可以被public,private,static等修饰符所修饰,局部变量不能被访问控制修饰符及static...静态方法访问本类成员时,只允许访问静态成员(即静态成员变量和静态方法),不允许访问实例成员变量和实例方法;实例方法则无此限制.**24. 对象相等与指向他们引用相等,两者有什么不同?...但是如果发现有相同hashcode值对象,这时会调用equals()方法来检查hashcode相等对象是否真的相同。如果两者相同,HashSet就不会让其加入操作成功。...换句话说,当程序执行时,将会被操作系统载入内存中。 线程是进程划分成更小运行单位。线程和进程最大不同在于基本各进程是独立各线程则不一定,因为同一进程中线程极有可能会相互影响。

27810

Java课程主要内容回顾

这些 .class 文件包含了Java源代码编译后二进制指令,这些指令并不是直接在硬件执行机器码,而是Java虚拟机(JVM)可以识别和执行中间代码。...循环结构(Loop Structure):重复执行一段代码,直到满足退出条件为止。主要有 for 循环、while 循环、do-while 循环等。根据条件重复执行代码块,直到条件不再满足。...方法重载允许同一个中定义多个具有相同名称但参数列表不同方法。...派生性:子类可以继承基础拓展,增加新成员变量和方法。 多态性:子类对象可以被当做父对象使用,这是多态性一种表现。 父子关系:子类是父扩展,拥有父属性和行为。...对象成员变量初始化 除了构造函数中,对象成员变量还能在哪些地方进行初始化?语句块和构造方法执行顺序是怎样? 对象成员变量可以构造方法中初始化,同时也可以实例化代码块中进行初始化。

8210

Java 中 ==, equals 与 hashCode 区别与联系

: Object native方法 , 获取对象哈希值,用于确定该对象哈希表中索引位置,它实际是一个int型整数 ---- 二、关系操作符 == 1、操作值 基本数据类型变量 Java...---- 3、hashCode 简述   Java 中,由 Object 定义 hashCode 方法会针对不同对象返回不同整数。...hashCode 常规协定是: Java 应用程序执行期间,在对同一对象多次调用 hashCode 方法时,必须一致地返回相同整数,前提是将对象进行 equals 比较时所用信息没有被修改。...Java中集合(Collection)有三,一是List,一是Queue,再有一就是Set。 前两个集合内元素是有序,元素可以重复;最后一个集合内元素无序,但元素不可重复。   ...,equals 这个方法是给用户调用 hashcode 方法一般用户不会去调用 ; 原则 5 : 当一个对象类型作为集合对象元素时,那么这个对象应该拥有自己equals()和hashCode(

1.4K22

Java基础八股文(背诵版)

节省空间:字符串常量存储 JVM 字符串池中可以被用户共享。 提高效率:String 可以被不同线程共享,是线程安全涉及多线程操作中不需要同步操作。...出现在 Java 程序中 finally 代码块是否一定会执行? 当遇到下面情况不会执行。 当程序进入 try 语句块之前就出现异常时会直接结束。...当程序 try 块中强制退出时,如使用 System.exit(0),也不会执行 finally 块中代码。...作为元数据,注解不直接影响你代码执行,但也有一些类型注解实际可以用于这一目的。 其可以用于提供信息给编译器,在编译阶段时给软件提供信息进行相关处理,在运行时处理写相应代码,做对应操作。...HashSet 中存储元素是不能重复,主要通过 hashCode 与 equals 两个方法来判断存储对象是否相同: 如果两个对象 hashCode 值不同,说明两个对象不相同

44K2738

JAVASE经典面试问题(必须熟背),你Get到了吗?

JVM不是跨平台,不同操作系统开发JAVA程序,必须安装该操作系统版本JVM。 4. Java当中如何跳出多重循环?...区别二: 抽象方法可以有方法体,就是能实现方法具体功能,但是接口中方法不行。 抽象成员变量可以是各种类型接口中成员变量只能是 public static final 类型。...接口中不能含有静态代码块以及静态方法(用 static 修饰方法),抽象是可以有静态代码块和静态方法。 一个只能继承一个抽象一个却可以实现多个接口。 11....分析List/Set/Map这三种集合类型异同点。 不同点: List:序列,有顺序,可重复 Set:集合、无顺序,不可重复 Map:键值对,适合用作索引。 相同点:都是集合类型。 12....进程与线程区别有哪些? 进程是正在运行当中程序,是操作系统最小调度单位。 线程是进程不同执行线路,从进程中派生。是CPU最小调度单位。 13. JAVA创建线程有哪几种方法?

70830

Java 基础(一)——重新理解面向对象

对象职责就是决定如何对这条消息作出反应(执行相应代码)。 对于任何关系,重要一点是让牵连到所有成员都遵守相同规则。...这个概念叫作“组织”——现有基础组织一个新。有时,我们也将组 织称作“包含”关系。 对象组织具有极大灵活性。新成员对象”通常设为“私有”(rpivate),使其不能被其他访问。...多形对象互换使用 通常,继承最终会以创建一系列收场,所有都建立统一接口基础。...比如说一家公司要正常运行run(),需要招三个干活的人,Worker 都具有干活能力,只是不同的人具备不同技能而已。...我们知道,为 程序员 调用 doWork()时执行代码与 为一个 设计师 或 产品 调用 doWork()时执行代码不同

24710

java基础第十三篇之Collection

Java静态代码块、构造代码块、构造方法执行顺序 执行顺序 静态代码优先于非静态代码,是因为被static修饰成员都是成员,会随着JVM加载时候加载执行没有被static修饰成员也被称为实例成员...执行构造器(构造方法)时候,执行方法体之前存在隐式三步: 1,super语句,可能出现以下三种情况: 1)构造方法体第一行是this语句,则不会执行隐式三步, 2)构造方法体第一行是...由此可知,构造代码块优先于构造方法方法体,但是this关键字跟super关键字不能同时出现,而且只能在代码第一行。如果出现了this关键字,隐式三步就不会执行。...;多个构造方法中相同代码块放到一起,每次调用构造都指向,并且构造方法前指向 c.静态代码块:中方法外出现,并加上static 修饰;用于给进行初始化,加载时候就指向,并且只执行一次....左边操作元显示类型与右边操作元必须是同种类或有继承关系 即位于继承树同一个分支,否则会编译出错.

53210

关于Java基础34个问题

成员变量与局部变量区别有那些 从语法形式,看成员变量是属于局部变量是方法中定义变量或是方法参数;成员变量可以被 public,private,static 等修饰符所修饰,局部变量不能被访问控制修饰符及...成员变量如果没有被赋初值:则会自动以类型默认值赋值(一种情况例外被 final 修饰成员变量也必须显示地赋值);局部变量则不会自动赋值。 19. 创建一个对象用什么运算符?...静态方法访问本类成员时,只允许访问静态成员(即静态成员变量和静态方法),不允许访问实例成员变量和实例方法;实例方法则无此限制. 24. 对象相等与指向他们引用相等,两者有什么不同?...换句话说,当程序执行时,将会被操作系统载入内存中。线程是进程划分成更小运行单位。线程和进程最大不同在于基本各进程是独立各线程则不一定,因为同一进程中线程极有可能会相互影响。...Error(错误):是程序无法处理错误,表示运行应用程序中较严重问题。大多数错误与代码编写者执行操作无关,表示代码运行时 JVM(Java 虚拟机)出现问题。

1.6K50

Java基础知识点(长文)

下文将罗列实际学习开发中遇到容易忘记知识点,虽然简单,但有必要记下来随时查看。 概念1: try-catch-finally块中,finally块以下几种情况将不会执行。...方法Java默认重写了,可以比较对象里值;两个对象指向同一个string成员变量里相同,所以eqauals比较也相同。...并行:单处理器中多道程序设计系统中,进程被交替执行,表现出一种并发外部特性;多处理器系统中,进程不仅可以交替执行,而且可以重叠执行多处理器程序才可实现并行处理。...初始化父静态成员变量和静态代码块 ; 2....初始化子类中静态成员变量和静态代码块 ; 3.初始化父普通成员变量和代码块,再执行构造方法; 4.初始化子类普通成员变量和代码块,再执行子类构造方法; 48、Servlet生命周期分为

66920

Java 经典问题

具体过程是这样: new Object(),JVM根据这个对象Hashcode值放入到对应Hash表对应Key,如果不同对象却产生了相同hash值,也就是发生了Hash key相同导致冲突情况...,所以其内存锁是针对相同对象互斥操作static成员属于专有,其内存空间为该类所有成员共有,这就导致synchronized()对static成员加锁,相当于对加锁,也就是该类所有成员间实现互斥...特点: 当程序运行到非静态synchronized同步方法时,自动获得与正在执行代码的当前实例(this实例)有关锁。...静态内部类不能调用外部类非静态成员变量(静态方法和非静态方法都一样),非静态内部类都可以调用。 泛型擦除 一篇好博客 泛型JDK5以后才有的,擦除是为了兼容之前没有的使用泛型库和代码。...T类型数组,原因也和之前一样,T仅仅是个占位符,并没有真实类型信息,实际,除了new表达式之外,instanceof操作和转型(会收到警告)泛型内部都是无法使用造成这个原因就是之前讲过编译器对类型信息进行了擦除

55431

Java基础常见面试题

throws用来标明一个成员函数可能抛出各种“异常”。 Finally为确保一段代码不管发生什么“异常”都被执行一段代码。...可以一个成员函数调用外面写一个try语句,在这个成员函数内部写另一个try语句保护其他代码。每当遇到一个try语句,“异常”框架就放到堆栈上面,直到所有的try语句都完成。...答∶ 工厂模式是一种经常被使用到模式,根据工厂模式实现可以根据提供数据生成一组中某一个实例,通常这一组有一个公共抽象父并且实现了相同方法,但是这些方法针对不同数据进行了不同操作...什么是多态,举例代码那些地方用到了? 答∶ 相同操作不同实现,例如在方法重载重写及接口实现。 list与普通数组区别?...StringBuffer与StringBuilder,他们是字符串变量,是可改变对象,每当我们用它们对字符串做操作时,实际一个对象上操作,不像String一样创建一些对象进行操作,所以速度就快了

52441

JAVA笔试题汇总(价值)

下面接着再说说两者应用上区别: 接口更多系统架构设计方法发挥作用,主要用于定义模块之间通信契约; 抽象代码实现方面发挥作用,可以实现代码重用。...Static Nested Class和Inner Class不同。 内部类就是一个内部定义。内部可以定义除参数位置任意位置。印象中有四种方式。 1....try后执行清理操作,用于释放资源 3....38、同步和异步有何异同,什么情况下分别使用他们?举例说明。 同步是指所有操作串行化执行,顺序不能改变,前一操作未完成,后个操作执行。 异步是指所有操作可以并行执行,顺序无关。...单个CPU,同一时间只能处理一个线程数据,但是操作系统任务调度非常快,人眼无法识别,感觉是多个线程同时执行

3.1K01

【面试虐菜】—— JAVA面试题(2)

Static修饰属性或方法,可以直接使用名调用,不用先实例化对象再调用。  7 == 操作作用 解析:实际编程中,==是非常常用操作符。...很多初级程序员会使用这样代码if(s==”save”0{},结果会发现,即使当字符串s值为save时,if条件依然不能被执行。是==比较引用类型时,比较是两个对象虚地址,不是内容。...参考答案:&&会发生短路问题,当第一个表达式值为false时,将直接返回结果为false不会判断第二个表达式值。&不会发生短路问题,即使第一个表达式值是false,会判断第二个表达式值。...参考答案:继承主要为了能够重复使用父成员。Java语言中继承是单继承,也就是说一个最多只能继承一个父。 ...hashCode方法返回值可能相同,也可能不同

71950

关于Java基础你不得不会34个问题

成员变量与局部变量区别有那些 从语法形式,看成员变量是属于局部变量是方法中定义变量或是方法参数;成员变量可以被 public,private,static 等修饰符所修饰,局部变量不能被访问控制修饰符及...静态方法访问本类成员时,只允许访问静态成员(即静态成员变量和静态方法),不允许访问实例成员变量和实例方法;实例方法则无此限制. 24. 对象相等与指向他们引用相等,两者有什么不同?...但是如果发现有相同 hashcode 值对象,这时会调用 equals()方法来检查 hashcode 相等对象是否真的相同。如果两者相同,HashSet 就不会让其加入操作成功。...换句话说,当程序执行时,将会被操作系统载入内存中。 线程是进程划分成更小运行单位。线程和进程最大不同在于基本各进程是独立各线程则不一定,因为同一进程中线程极有可能会相互影响。...Error(错误):是程序无法处理错误,表示运行应用程序中较严重问题。大多数错误与代码编写者执行操作无关,表示代码运行时 JVM(Java 虚拟机)出现问题。

92620

【附答案】关于Java基础你不得不会34个问题

成员变量与局部变量区别有那些 从语法形式,看成员变量是属于局部变量是方法中定义变量或是方法参数;成员变量可以被 public,private,static 等修饰符所修饰,局部变量不能被访问控制修饰符及...静态方法访问本类成员时,只允许访问静态成员(即静态成员变量和静态方法),不允许访问实例成员变量和实例方法;实例方法则无此限制. 24. 对象相等与指向他们引用相等,两者有什么不同?...但是如果发现有相同 hashcode 值对象,这时会调用 equals()方法来检查 hashcode 相等对象是否真的相同。如果两者相同,HashSet 就不会让其加入操作成功。...换句话说,当程序执行时,将会被操作系统载入内存中。 线程是进程划分成更小运行单位。线程和进程最大不同在于基本各进程是独立各线程则不一定,因为同一进程中线程极有可能会相互影响。...Error(错误):是程序无法处理错误,表示运行应用程序中较严重问题。大多数错误与代码编写者执行操作无关,表示代码运行时 JVM(Java 虚拟机)出现问题。

46830

【笔记】《C++Primer》—— 第18章:用于大型程序工具

,不用特指,和模板内部调用成员类似 我们也可以命名空间外部定义命名空间内成员,但是注意只能是在外层,不能在不相干同级作用域中定义 全局作用域实际是一个无名命名空间,我们用::XXX来特指 C11...析构函数调用顺序与构造顺序相反特性仍在 合成拷贝移动等操作规则也与之前一致 我们可以用基指针指向派生对象,但是调用对应函数时候编译器不会觉得不同方向转换有好坏之分,因此当有多个接受不同参数但名字相同函数时...,如果我们直接调用函数传递派生对象进去,会产生二义性错误,需要用特质来解决 和单继承时一样,静态类型决定了我们能调用那些成员 多继承时候,名称查找会在所有直接基中同时进行,单个继承链才有顺序,...(例如动物园和熊可以都继承自动物类),此时派生相当于出现了多个重复成员,很多时候这会对我们操作产生影响。...这种操作显然产生了一个矛盾:继承常常是后期决定如果不是间接继承时候就声明virtual,如果漏声明了哪一次,则仍然可能产生重复成员,这给后期扩充增加了麻烦。

94620

【C++】多态 ⑫ ( 多继承 “ 弊端 “ | 多继承被禁用场景 | 菱形继承结构二义性 | 使用虚继承解决菱形继承结构二义性 )

中 有相同名称成员变量 , 此时也会产生二义性问题 , 需要使用域作用符访问父相同名称成员 ; 破坏封装性 : 多继承 可能会破坏封装性 , 由于一个需要实现多个基接口 , 因此它必须公开更多实现细节...Binary Interface ) 兼容性问题 , 不同 编译器和操作系统可能会有不同ABI规范 , 这可能会导致不同平台上使用不同编译器编译代码时出现问题 ; 使用 虚继承 解决二义性问题...; 菱形继承结构 中 , 虚继承可以使 重复继承 , 只继承 依次 ; 多继承二义性 参考 【C++】继承 ⑫ ( 继承二义性 | virtual 虚继承 ) 博客 ; 二、代码示例...继承 B 和 C , 但是 B 和 C 有共同 A , 这里 B 和 C 使用 虚继承 , 继承 A ; 假如 访问 D 对象 中 继承自 A 成员 , 不会产生二义性 ; 代码示例...k; }; int main() { // 定义 D 对象 d D d; // 访问 继承自 A x 成员不会出现二义性 d.x = 40; // 控制台暂停 , 按任意键继续向后执行

26020
领券