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

鸿蒙开发之android开发人员指南《基础知识》

鸿蒙使用什么基础语言开发?ArkTS是鸿蒙生态的应用开发语言。它在保持TypeScript(简称TS)基本语法风格的基础上,对TS的动态类型特性施加更严格的约束,引入静态类型。...TextView的对象,然后调用setText(message)方法设置值,而是通过数据传递,响应式的设置控件的值。...application相当于UIAbility,但是区别在于一个应用程序可以设置多个UIAbility。当用户打开、切换和返回到应用时,UIAbility实例会在其生命周期的不同状态之间转换。...可以在该回调中进行应用初始化操作,例如变量定义资源加载等,用于后续的UI界面展示。...不允许在aboutToDisappear函数中改变状态变量,特别是@Link变量的修改可能会导致应用程序行为不稳定。onPageShow: onPageShow?

25720

《逆袭进大厂》第三弹之C++提高篇79问79答

拷贝构造函数用来初始化一个非引用类类型对象,如果用传值的方式进行传参数,那么构造实参需要调用拷贝构造函数,而拷贝构造函数需要传递实参,所以会一直递归。 149、你知道空类的大小是多少吗?...; 161、成员初始化列表会在什么时候用到?...,0,sizeof(*this))会发生什么 1) 有时候类里面定义了很多int,char,struct等c语言里的那些类型的变量,我习惯在构造函数中将它们初始化为0,但是一句句的写太麻烦,所以直接就...177、你知道回调函数吗?它的作用? 1) 当发生某种事件时,系统或其他函数将会自动调用你定义的一段函数; 2) 回调函数就相当于一个中断处理函数,由系统在符合你设定的条件时自动调用。...意思是右值引用类型的变量可能是左值也可能是右值 特点3:T&& t在发生自动类型推断的时候,它是左值还是右值取决于它的初始化。

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

    Java基础8:深入理解内部类

    因为当某个外围类的对象创建内部类的对象时,此内部类会捕获一个隐式引用,它引用了实例化该内部对象的外围类对象。通过这个指针,可以访问外围类对象的全部状态。...简单来说,类的加载都是发生在类要被用到的时候。内部类也是一样 1 普通内部类在第一次用到时加载,并且每次实例化时都会执行内部成员变量的初始化,以及代码块和构造方法。...2 静态内部类也是在第一次用到时被加载。但是当它加载完以后就会将静态成员变量初始化,运行静态代码块,并且只执行一次。当然,非静态成员和代码块每次实例化时也会执行。...故如果定义了一个匿名内部类,并且希望它使用一个其外部定义的参数,那么编译器会要求该参数引用是final的。...  如果你创建了一个内部类,然后继承其外围类并重新定义此内部类时,会发生什么呢?

    1.6K00

    夯实Java基础系列18:深入理解Java内部类及其实现原理

    1 内部类是延时加载的,也就是说只会在第一次使用时加载。不使用就不加载,所以可以很好的实现单例模式。2 不论是静态内部类还是非静态内部类都是在第一次使用时才会被加载。...简单来说,类的加载都是发生在类要被用到的时候。内部类也是一样 1 普通内部类在第一次用到时加载,并且每次实例化时都会执行内部成员变量的初始化,以及代码块和构造方法。...2 静态内部类也是在第一次用到时被加载。但是当它加载完以后就会将静态成员变量初始化,运行静态代码块,并且只执行一次。当然,非静态成员和代码块每次实例化时也会执行。...故如果定义了一个匿名内部类,并且希望它使用一个其外部定义的参数,那么编译器会要求该参数引用是final的。...  如果你创建了一个内部类,然后继承其外围类并重新定义此内部类时,会发生什么呢?

    1.2K10

    夯实Java基础系列18:深入理解Java内部类及其实现原理

    1 内部类是延时加载的,也就是说只会在第一次使用时加载。不使用就不加载,所以可以很好的实现单例模式。 2 不论是静态内部类还是非静态内部类都是在第一次使用时才会被加载。...简单来说,类的加载都是发生在类要被用到的时候。内部类也是一样 1 普通内部类在第一次用到时加载,并且每次实例化时都会执行内部成员变量的初始化,以及代码块和构造方法。...2 静态内部类也是在第一次用到时被加载。但是当它加载完以后就会将静态成员变量初始化,运行静态代码块,并且只执行一次。当然,非静态成员和代码块每次实例化时也会执行。...故如果定义了一个匿名内部类,并且希望它使用一个其外部定义的参数,那么编译器会要求该参数引用是final的。...如果你创建了一个内部类,然后继承其外围类并重新定义此内部类时,会发生什么呢?

    41910

    【Java基本功】一文读懂Java内部类的用法和原理

    因为当某个外围类的对象创建内部类的对象时,此内部类会捕获一个隐式引用,它引用了实例化该内部对象的外围类对象。通过这个指针,可以访问外围类对象的全部状态。...简单来说,类的加载都是发生在类要被用到的时候。内部类也是一样 1 普通内部类在第一次用到时加载,并且每次实例化时都会执行内部成员变量的初始化,以及代码块和构造方法。...2 静态内部类也是在第一次用到时被加载。但是当它加载完以后就会将静态成员变量初始化,运行静态代码块,并且只执行一次。当然,非静态成员和代码块每次实例化时也会执行。...故如果定义了一个匿名内部类,并且希望它使用一个其外部定义的参数,那么编译器会要求该参数引用是final的。...  如果你创建了一个内部类,然后继承其外围类并重新定义此内部类时,会发生什么呢?

    1.3K30

    【C++】类和对象(完结篇)

    看这种情况: 我们现在给这个类里面再增加一个const的成员变量。 那这时我们再去运行程序: 哦豁,发生错误了,这么回事? 为什么会这样呢?...尽量使用初始化列表初始化,因为不管你是否使用初始化列表,成员变量都会在初始化列表定义。当然我们说了C++11之后可以给缺省值,这样如果没有对它进行初始化编译器就会用缺省值去初始化。...构造函数参数a接收传过来的1,1先初始化_a1,然后_a1去初始化_a2,所以都是1,是吗? 结果是1和一个随机值。 为什么是这样?...非静态成员变量才可以给缺省值。 大家可以想一下嘛,缺省值其实是在什么时候用的,在初始化列表用的,用来初始化对象的成员变量的,而静态成员变量我们说了,它是属于整个类的,被所有对象所共享。...我们可以调式观察一下: 那我们如果写成这样呢: 这里跟上面那样写相比是不是又多了一个拷贝构造啊。 返回值返回是一个拷贝构造,然后紧接着又把返回值拷贝构造给了aa。 那这里会优化吗?

    18310

    《逆袭进大厂》第二弹之C++进阶篇59问59答(超硬核干货)

    (static变量中的记忆功能和全局生存期)存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。...,而它拥有一组参数时; 2) 成员初始化列表做了什么 ① 编译器会一一操作初始化列表,以适当的顺序在构造函数之内安插初始化操作,并且在任何显示用户代码之前; ② list中的项目顺序是由类中的成员声明顺序决定的...由于对象成员变量的初始化动作发生在进入构造函数之前,对于内置类型没什么影响,但如果有些成员是类,那么在进入构造函数之前,会先调用一次默认构造函数,进入构造函数后所做的事其实是一次赋值操作(对象已存在),...每次创建类的新对象时,初始化指针并将引用计数置为1;当对象作为另一对象的副本而创建时,拷贝构造函数拷贝指针并增加与之相应的引用计数;对一个对象进行赋值时,赋值操作符减少左操作数所指对象的引用计数(如果引用计数为减至...值传递过程中,被调函数的形式参数作为被调函数的局部变量处理,会在栈中开辟内存空间以存放由主调函数传递进来的实参值,从而形成了实参的一个副本(替身)。

    2.4K40

    Kotlin|这些隐藏的内存陷阱,你应该熟记于心

    错误示例 如下截图中所示,我们随便创建了一个方法,并增加了 inline 关键字: 观察截图会发现,此时IDE已经给出了提示,它建议你移除 inline , Why? 为什么呢?...但如果方法里代码有几十行?每次调用都会把代码内联过来,那调用处岂不,带来的包大小影响某种程度上要比内联成本更高‍! 如下图所示,我们对上述示例做一个论证: Jvm: 我谢谢你。...每次调用时,相当于需要创建匿名类的实例对象,从而导致二次调用的性能损耗。 那如果我们给其增加 inline 呢?...作用也相对直接,如果我们有某个对象或字段,我们可能只想使用时再初始化,此时就可以先声明,等到使用时再去初始化,并且这个初始化过程默认也是线程安全(不特定使用NONE)。...如下示例: 如上所示,我们延迟初始化了一个点击事件,方便在 onCreate() 中进行设置 点击事件 以及后续复用。 上述示例虽然看着似乎没什么问题。

    82330

    从 Java 到 Kotlin,再从 Kotlin 回归 Java

    这是 Kotlin 让我感到最大惊喜的地方。看看这个函数: ? 当你调用 inc(1) 的时候会输出什么呢?在 Kotlin 中方法参数是一个值,所以你不能改变 num 参数。...当您的Kotlin代码必须与Java代码一起使用时,事情就变得很糟糕了(库是用Java编写的,所以我猜它经常发生)。然后,第三种类型就跳出来了——T!它被称为平台类型,它的意思是T或T?...会误导你,因为它放松了对空的限制,并禁用了Kotlin的空值安全限制。 看看下面的Java方法: ? 现在,您想要从Kotlin调用format(string)。...换句话说,你得手工输入完整的变量名。 ? ? 伴生对象 ? 一个 Java 程序员来到 Kotlin 阵营。 “嗨,Kotlin。我是新来的,有静态成员可用吗?”他问。 “没有。...“嗯……是的,但是它不是静态成员!它只是一个对象。可以想像那是一个匿名内部类的单例实现。而实际上,这个类并不是匿名的,它的名字是 Companion,你可以省略这个名称。明白吗?这很简单。”

    1.8K40

    2019年JVM最新面试题,必须收藏它

    每次进行Minor GC时,JVM会计算Survivor区移至老年区的对象的平均大小,如果这个值大于老年区的剩余值大小则进行一次Full GC,如果小于检查HandlePromotionFailure设置...当类被加载后就进入连接阶段,这一阶段包括验证、准备(为静态变量分配内存并设置默认的初始值)和解析(将符号引用替换为直接引用)三个步骤。...1)验证,文件格式、元数据、字节码、符号引用验证; 2)准备,为类的静态变量分配内存,并将其初始化为默认值; 3)解析,把类中的符号引用转换为直接引用 初始化,为类的静态变量赋予正确的初始值 使用,new...垃圾回收不会发生在永久代,如果永久代满了或者是超过了临界值,会触发完全垃圾回收(Full GC)。如果你仔细查看垃圾收集器的输出信息,就会发现永久代也是被回收的。...21、Minor GC与Full GC分别在什么时候发生? 新生代内存不够用时候发生MGC也叫YGC,JVM内存不够的时候发生FGC 22、你有没有遇到过OutOfMemory问题?

    63340

    Vue3 源码解析(十):watch 的实现原理

    然后声明一个 job 函数,这个函数最终会作为调度器中的回调函数传入,由于是一个闭包形式依赖外部作用域中的许多变量,所以会放在后面讲,避免出现还未声明的变量造成理解困难。...根据是否有回调函数,设置 job 的 allowRecurse 属性,这个设置很重要,能够让 job 作为一个观察者的回调这样调度器就能知道它允许调用自身。...首先声明一个 runner 变量,它创建一个副作用并将之前处理好的 getter 函数作为副作用函数传入,并在副作用选项中设置了延迟调用,以及设置了对应的调度器。...最后 doWatch 函数会返回一个函数,这个函数的作用是停止侦听,所以大家在使用时可以显式的为 watch、watchEffect 调用返回值以停止侦听。...如果是 deep 需要深度侦听,或者是 forceTrigger 需要强制更新,或者新旧值发生了改变,这三种情况都需要触发 cb 回调,通知侦听器发生了变化。

    1.3K10

    vue的双向绑定原理_vue的双向绑定原理及实现

    ,我没看懂这写法是怎么来的,不应该是new Dep后获取他的实例,然后设置target属性吗?...后来早上查文档看到别的博主分享,才知道它是Dep的静态属性,只能通过Dep去修改值,实例化是改不了它的值的,这样也可以使得他是惟一 它的工作原理是这样的,我们在defineProperty的get事件被触发时会进行依赖收集...,去触发用到该主题(属性)的地方更新 至于什么时候收集到依赖,我个人理解是解析html文档的时候,遇到需要收集的变量,会在bindWatcherAndDep这里实例化一个watcher实例,在实例化的过程中...后来早上查文档看到别的博主分享,才知道它是Dep的静态属性,只能通过Dep去修改值,实例化是改不了它的值的,这样也可以使得他是惟一 它的工作原理是这样的,我们在defineProperty的get事件被触发时会进行依赖收集...,去触发用到该主题(属性)的地方更新 至于什么时候收集到依赖,我个人理解是解析html文档的时候,遇到需要收集的变量,会在bindWatcherAndDep这里实例化一个watcher实例,在实例化的过程中

    94360

    Java IAQ:很少被回答的问题

    不过如果C是被final修饰的,那每次都会返回c是成立的。 Q:我自定义了一个equals方法,但是Hashtable忽略了它,为什么? 想要完全理解equals函数实际上是很难的。...许多人认为二者的区别是getProperty声明了返回值为String类型,而get声明的返回值类型为Object。但实际上二者之间有更大的区别:getProperty会查看默认值。...3、现在会执行构造函数中余下的代码。这里可以设置实例变量,或者做任何其它事情。 实际上你对上述三种初始化方式有很大的自主选择权。...我推荐的是使用实例变量初始化器,这样一来,如果这个变量的值与所用的构造函数无关,则可以不必为每个构造函数都写一遍初始化代码了。...调用pool.point(x,y,z) 时会返回数组中第一个未被使用的Point对象,将其3个变量设置为指定的值,并把它标记为已使用。

    62220

    第十节(变量作用域)

    ()函数(第17~23行)声明并初始化了一个静态局部变量和一个自动变量。...每次调用该函数时,都会在屏幕上显示两个变量的值,并分别将其值递增1 (第22行) 。...查看输出发现,每次迭代后,静态变量x的值都递增1,因为在每次调用期间都保存了x的值。 而自动变量y在每次调用时都被初始化为0,因此它的值一直是0。...该程序还表明,静态变量和自动变量显示初始化(即,在声明的同时初始化)的处理方式也不同。 函数中的静态变量在第1次调用函数时只初始化一次,程序在后续调用时知道该变量已经被初始化,不会重复初始化它。...如果未显示初始化静态变量,编译器会自动将其初始化为0 ;但是编译器不会自动初始化自动变量,你必须显示初始化它。在未初始化之前,局部变量中的值是未定义的垃圾值。

    24740

    C++知识总结

    什么是“引用”?申明和使用“引用”要注意哪些问题? 答:引用就是某个目标变量的“别名”(alias),对应用的操作与对变量直接操作效果完全相同。申明一个引用的时候,切记要对其进行初始化。...声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因此引用本身不占存储单元,系统也不给引用分配存储单元。不能建立数组的引用。 6....(2)使用引用传递函数的参数,在内存中并没有产生实参的副本,它是直接对实参操作;而使用一般变量传递函数的参数,当发生函数调用时,需要给形参分配存储单元,形参变量是实参变量的副本;如果传递的是对象,还将调用拷贝构造函数...主要原因是局部变量会在函数返回后被销毁,因此被返回的引用就成为了"无所指"的引用,程序会进入未知状态。 (2)不能返回函数内部new分配的内存的引用(这个要注意啦,很多人没意识到,哈哈。。。)。...如果在派生类中没有对基类的虚函数重新定义,则派生类简单地继承其直接基类的虚函数。 定义一个指向基类对象的指针变量,并使它指向同一类族中需要调用该函数的对象。

    1K40

    vue高频面试题合集(一)附答案

    vue3.0 特性你有什么了解的吗?...侦听属性 watch: (1)**不支持缓存**,只要数据发生变化,就会执行侦听函数; (2)侦听属性内**支持异步操作**; (3)侦听属性的值**可以是一个对象,接收 handler 回调,deep...,immediate 三个属性**; (3)监听是一个过程,在监听的值变化时,可以触发一个回调,并**做一些其他事情**。...一般有两种模式: (1)**hash 模式**:后面的 hash 值的变化,浏览器既不会向服务器发出请求,浏览器也不会刷新,每次 hash 值的变化会触发 hashchange 事件。...如果4种比较都没匹配,如果设置了key,就会用key进行比较,在比较的过程中,变量会往中间靠,一旦StartIdx>EndIdx表明oldCh和newCh至少有一个已经遍历完了,就会结束比较,这四种比较方式就是首

    97730

    JVM | 从类加载到JVM内存结构

    准备阶段JVM 为类的静态变量分配内存,并且为它们设置默认值。...在我们的 Building 类中,constructionYear 就是一个静态变量,所以它会在这个阶段被初始化为 0(对于 int 类型,初始化默认值为 0)。...因为静态变量和静态代码块会放在静态初始化器中按顺序执行的。---使用在完成初始化后,类就可以被应用程序正常使用了。...---文中重要部分解析初始化和未初始化我在前面强调:什么时候会进行类的初始化阶段,什么会只进行加载和链接。知道这两个差异有什么用呢?...我们在编写代码的时候可以减少内存开销,我们现在知道类的初始化阶段需要分配内存,如果我们写一个懒加载,在使用时才初始化,那么我们的内存就会减少很多。相信你已经明白它的价值了。

    27540

    精选Java虚拟机面试题(附刷题小程序)

    垃圾回收不会发生在永久代,如果永久代满了或者是超过了临界值,会触发完全垃圾回收(Full GC)。如果你仔细查看垃圾收集器的输出信息,就会发现永久代也是被回收的。...准备 准备阶段是正式为类静态变量分配内存并设置类变量初始值的阶段,这些变量所使用的内存都在方法区中进行分配 public static int value = 123 //在准备阶段 value的值是...这时候进行内存分配的仅包括类变量(static),而不包括实例变量,实例变量会在对象实例化时随着对象一块分配在Java堆中 这里所设置的初始值通常情况下是数据类型默认的零值(如0、0L、null、false...,符号可以是任何形式的字面量,只要使用时能无歧义的定位到目标即可 主要包含: 类或接口的解析 字段解析 类方法解析 接口方法解析 初始化 初始化,为类的静态变量赋予正确的初始值,JVM负责对类进行初始化...在Java中对类变量进行初始值设定有两种方式: 声明类变量是指定初始值 使用静态代码块为类变量指定初始值 JVM初始化步骤: 假如这个类还没有被加载和连接,则程序先加载并连接该类 假如该类的直接父类还没有被初始化

    31710
    领券